DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00200_AAD_S_000012_BC_PKG

Source


1 PACKAGE BODY XLA_00200_AAD_S_000012_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_00200_AAD_S_000012_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Federal Payables AAD                                   |
14 |      Code    : FV_PAYABLES_AAD                                        |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 06:03:11 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_00200_AAD_S_000012_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_00200_AAD_S_000012_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_00200_AAD_S_000012_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_00200_AAD_S_000012_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 )
241 RETURN VARCHAR2
242 IS
243 l_component_type        VARCHAR2(80)   ;
244 l_component_code        VARCHAR2(30)   ;
245 l_component_type_code   VARCHAR2(1)    ;
246 l_component_appl_id     INTEGER        ;
247 l_amb_context_code      VARCHAR2(30)   ;
248 l_ledger_language       VARCHAR2(30)   ;
249 l_source                VARCHAR2(1996) ;
250 l_description           VARCHAR2(2000) ;
251 l_log_module            VARCHAR2(240)  ;
252 BEGIN
253 IF g_log_enabled THEN
254       l_log_module := C_DEFAULT_MODULE||'.Description_1';
255 END IF;
256 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
257       trace
258          (p_msg      => 'BEGIN of Description_1'
259          ,p_level    => C_LEVEL_PROCEDURE
260          ,p_module   => l_log_module);
261 END IF;
262 
263 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
264 l_component_type        := 'AMB_DESCRIPTION';
265 l_component_code        := 'JE_INVOICE_DESCRIPTION';
266 l_component_type_code   := 'S';
267 l_component_appl_id     :=  200;
268 l_amb_context_code      := 'DEFAULT';
269 l_source                := NULL;
270 l_description           := NULL;
271 
272 
273 l_description := null;
274  l_description := SUBSTR(l_description,1,1996);
275   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
276         trace
277            (p_msg      => 'END of Description_1'
278            ,p_level    => C_LEVEL_PROCEDURE
279            ,p_module   => l_log_module);
280 
281   END IF;
282   RETURN l_description;
283 
284 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
285       trace
286          (p_msg      => 'END of Description_1'
287          ,p_level    => C_LEVEL_PROCEDURE
288          ,p_module   => l_log_module);
289 END IF;
290 RETURN NULL;
291 EXCEPTION
292   WHEN VALUE_ERROR THEN
293      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
294             trace
295                (p_msg      => 'ERROR: '||sqlerrm
296                ,p_level    => C_LEVEL_EXCEPTION
297                ,p_module   => l_log_module);
298      END IF;
299      RAISE;
300  WHEN xla_exceptions_pkg.application_exception THEN
301       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
302       trace
303          (p_msg      => 'ERROR: '||sqlerrm
304          ,p_level    => C_LEVEL_EXCEPTION
305          ,p_module   => l_log_module);
306       END IF;
307       RAISE;
308  WHEN OTHERS THEN
309        xla_exceptions_pkg.raise_message
310            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.Description_1');
311 END Description_1;
312 
313 ---------------------------------------
314 --
315 -- PRIVATE FUNCTION
316 --         Description_2
317 --
318 ---------------------------------------
319 FUNCTION Description_2 (
320   p_application_id      IN NUMBER
321 , p_ae_header_id        IN NUMBER DEFAULT NULL 
325 RETURN VARCHAR2
322 --Invoice Distribution Description
323  , p_source_1            IN VARCHAR2
324 )
326 IS
327 l_component_type        VARCHAR2(80)   ;
328 l_component_code        VARCHAR2(30)   ;
329 l_component_type_code   VARCHAR2(1)    ;
330 l_component_appl_id     INTEGER        ;
331 l_amb_context_code      VARCHAR2(30)   ;
332 l_ledger_language       VARCHAR2(30)   ;
333 l_source                VARCHAR2(1996) ;
334 l_description           VARCHAR2(2000) ;
335 l_log_module            VARCHAR2(240)  ;
336 BEGIN
337 IF g_log_enabled THEN
338       l_log_module := C_DEFAULT_MODULE||'.Description_2';
339 END IF;
340 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
341       trace
342          (p_msg      => 'BEGIN of Description_2'
343          ,p_level    => C_LEVEL_PROCEDURE
344          ,p_module   => l_log_module);
345 END IF;
346 
347 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
348 l_component_type        := 'AMB_DESCRIPTION';
349 l_component_code        := 'JE_INV_DIST_DESCRIPTION';
350 l_component_type_code   := 'S';
351 l_component_appl_id     :=  200;
352 l_amb_context_code      := 'DEFAULT';
353 l_source                := NULL;
354 l_description           := NULL;
355 
356 
357   
358   l_source := SUBSTR(p_source_1,1,1996);
359   IF l_source IS NOT NULL THEN
360     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
361     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
362   END IF; 
363  l_description := SUBSTR(l_description,1,1996);
364   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
365         trace
366            (p_msg      => 'END of Description_2'
367            ,p_level    => C_LEVEL_PROCEDURE
368            ,p_module   => l_log_module);
369 
370   END IF;
371   RETURN l_description;
372 
373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
374       trace
375          (p_msg      => 'END of Description_2'
376          ,p_level    => C_LEVEL_PROCEDURE
377          ,p_module   => l_log_module);
378 END IF;
379 RETURN NULL;
380 EXCEPTION
381   WHEN VALUE_ERROR THEN
382      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
383             trace
384                (p_msg      => 'ERROR: '||sqlerrm
385                ,p_level    => C_LEVEL_EXCEPTION
386                ,p_module   => l_log_module);
387      END IF;
388      RAISE;
389  WHEN xla_exceptions_pkg.application_exception THEN
390       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
391       trace
392          (p_msg      => 'ERROR: '||sqlerrm
393          ,p_level    => C_LEVEL_EXCEPTION
394          ,p_module   => l_log_module);
395       END IF;
396       RAISE;
397  WHEN OTHERS THEN
398        xla_exceptions_pkg.raise_message
399            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.Description_2');
400 END Description_2;
401 
402 ---------------------------------------
403 --
404 -- PRIVATE FUNCTION
405 --         AcctDerRule_3
406 --
407 ---------------------------------------
408 FUNCTION AcctDerRule_3 (
409   p_application_id              IN NUMBER
410 , p_ae_header_id                IN NUMBER
411 , p_side                        IN VARCHAR2 
412 --Invoice Distribution Account
413  , p_source_2            IN NUMBER
414 , x_transaction_coa_id         OUT NOCOPY NUMBER
415 , x_accounting_coa_id          OUT NOCOPY NUMBER
416 , x_value_type_code            OUT NOCOPY VARCHAR2
417 )
418 RETURN NUMBER
419 IS
420 l_component_type       VARCHAR2(80)  ;
421 l_component_code       VARCHAR2(30)  ;
422 l_component_type_code  VARCHAR2(1)   ;
423 l_component_appl_id    INTEGER       ;
424 l_amb_context_code     VARCHAR2(30)  ;
425 l_log_module           VARCHAR2(240) ;
426 l_output_value         NUMBER        ;
427 BEGIN
428 IF g_log_enabled THEN
429       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
430 END IF;
431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
432       trace
433          (p_msg      => 'BEGIN of AcctDerRule_3'
434          ,p_level    => C_LEVEL_PROCEDURE
435          ,p_module   => l_log_module);
436 END IF;
437 --
438 l_component_type         := 'AMB_ADR';
439 l_component_code         := 'AP_INVOICE_DIST';
440 l_component_type_code    := 'S';
441 l_component_appl_id      :=  200;
442 l_amb_context_code       := 'DEFAULT';
443 x_transaction_coa_id     :=  null;
444 x_accounting_coa_id      :=  null;
445 --
446 
447  --
448   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
449       trace
450          (p_msg      => 'END of AcctDerRule_3'
451          ,p_level    => C_LEVEL_PROCEDURE
452          ,p_module   => l_log_module);
453   END IF;
454   x_value_type_code := 'S';
455   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_2));
456   RETURN l_output_value;
457 
458 --
459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
460       trace
461          (p_msg      => 'END of AcctDerRule_3(invalid)'
462          ,p_level    => C_LEVEL_PROCEDURE
463          ,p_module   => l_log_module);
464 END IF;
465 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
466 x_value_type_code := null;
467 l_output_value    := null;
468 xla_accounting_err_pkg.build_message
472                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
469                  (p_appli_s_name            => 'XLA'
470                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
471                  ,p_token_1                 => 'COMPONENT_NAME'
473                                                             l_component_type
474                                                           , l_component_code
475                                                           , l_component_type_code
476                                                           , l_component_appl_id
477                                                           , l_amb_context_code
478                                                           )
479                  ,p_token_2                 => 'OWNER'
480                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
481                                                         'XLA_OWNER_TYPE'
482                                                         ,l_component_type_code
483                                                         )
484                  ,p_token_3                 => 'PAD_NAME'
485                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
486                  ,p_token_4                 => 'PAD_OWNER'
487                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
488                                                         'XLA_OWNER_TYPE'
489                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
490                                                         )
491                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
492                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
493                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
494                  ,p_ae_header_id            => NULL
495 );
496 RETURN l_output_value;
497 EXCEPTION
498   WHEN xla_exceptions_pkg.application_exception THEN
499       RAISE;
500   WHEN OTHERS THEN
501        xla_exceptions_pkg.raise_message
502            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_3');
503 END AcctDerRule_3;
504 --
505 
506 ---------------------------------------
507 --
508 -- PRIVATE FUNCTION
509 --         AcctDerRule_4
510 --
511 ---------------------------------------
512 FUNCTION AcctDerRule_4 (
513   p_application_id             IN NUMBER
514 , p_ae_header_id               IN NUMBER
515 , p_side                       IN VARCHAR2
516 , p_override_seg_flag          IN VARCHAR2  
517 , x_transaction_coa_id         OUT NOCOPY NUMBER
518 , x_accounting_coa_id          OUT NOCOPY NUMBER
519 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
520 , x_flex_value_set_id          OUT NOCOPY NUMBER
521 , x_value_type_code            OUT NOCOPY VARCHAR2
522 , x_value_combination_id       OUT NOCOPY NUMBER
523 , x_value_segment_code         OUT NOCOPY VARCHAR2
524 )
525 RETURN VARCHAR2
526 IS
527 l_component_type       VARCHAR2(80)  ;
528 l_component_code       VARCHAR2(30)  ;
529 l_component_type_code  VARCHAR2(1)   ;
530 l_component_appl_id    INTEGER       ;
531 l_amb_context_code     VARCHAR2(30)  ;
532 l_log_module           VARCHAR2(240) ;
533 l_output_value         VARCHAR2(30)  ;
534 BEGIN
535 IF g_log_enabled THEN
536       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
537 END IF;
538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
539 
540       trace
541          (p_msg      => 'BEGIN of AcctDerRule_4'
542          ,p_level    => C_LEVEL_PROCEDURE
543          ,p_module   => l_log_module);
544 
545 END IF;
546 
547 l_component_type         := 'AMB_ADR';
548 l_component_code         := 'FV_310701_UNEXP_APPR_ACCT';
549 l_component_type_code    := 'S';
550 l_component_appl_id      :=  200;
551 l_amb_context_code       := 'DEFAULT';
552 x_transaction_coa_id     :=  null;
553 x_accounting_coa_id      :=  null;
554 x_flexfield_segment_code :=  null;
555 x_flex_value_set_id      := 1009988 ;
556 
557 
558 --
559   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
560 
561       trace
562          (p_msg      => 'END of AcctDerRule_4'
563          ,p_level    => C_LEVEL_PROCEDURE
564          ,p_module   => l_log_module);
565 
566   END IF;
567   x_value_combination_id  :=  null ;
568   x_value_segment_code    :=  null ;
569   x_value_type_code       := 'C';
570   l_output_value          := '310701';
571   RETURN l_output_value;
572 
573 
574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
575 
576       trace
577          (p_msg      => 'END of AcctDerRule_4(invalid)'
578          ,p_level    => C_LEVEL_PROCEDURE
579          ,p_module   => l_log_module);
580 
581 END IF;
582 
583 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
584 x_value_combination_id  := null;
585 x_value_segment_code    := null;
586 x_value_type_code       := null;
587 l_output_value          := null;
588 xla_accounting_err_pkg.build_message
589                  (p_appli_s_name            => 'XLA'
590                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
591                  ,p_token_1                 => 'COMPONENT_NAME'
595                                                           , l_component_type_code
592                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
593                                                             l_component_type
594                                                           , l_component_code
596                                                           , l_component_appl_id
597                                                           , l_amb_context_code
598                                                           )
599                  ,p_token_2                 => 'OWNER'
600                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
601                                                         'XLA_OWNER_TYPE'
602                                                         ,l_component_type_code
603                                                         )
604                  ,p_token_3                 => 'PAD_NAME'
605                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
606                  ,p_token_4                 => 'PAD_OWNER'
607                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
608                                                         'XLA_OWNER_TYPE'
609                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
610                                                         )
611                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
612                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
613                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
614                  ,p_ae_header_id            => NULL
615 );
616 RETURN l_output_value;
617 EXCEPTION
618   WHEN xla_exceptions_pkg.application_exception THEN
619       RAISE;
620   WHEN OTHERS THEN
621        xla_exceptions_pkg.raise_message
622            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_4');
623 END AcctDerRule_4;
624 --
625 
626 ---------------------------------------
627 --
628 -- PRIVATE FUNCTION
629 --         AcctDerRule_5
630 --
631 ---------------------------------------
632 FUNCTION AcctDerRule_5 (
633   p_application_id             IN NUMBER
634 , p_ae_header_id               IN NUMBER
635 , p_side                       IN VARCHAR2
636 , p_override_seg_flag          IN VARCHAR2 
637 --Federal Anticipation
638  , p_source_3            IN VARCHAR2
639 , x_transaction_coa_id         OUT NOCOPY NUMBER
640 , x_accounting_coa_id          OUT NOCOPY NUMBER
641 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
642 , x_flex_value_set_id          OUT NOCOPY NUMBER
643 , x_value_type_code            OUT NOCOPY VARCHAR2
644 , x_value_combination_id       OUT NOCOPY NUMBER
645 , x_value_segment_code         OUT NOCOPY VARCHAR2
646 )
647 RETURN VARCHAR2
648 IS
649 l_component_type       VARCHAR2(80)  ;
650 l_component_code       VARCHAR2(30)  ;
651 l_component_type_code  VARCHAR2(1)   ;
652 l_component_appl_id    INTEGER       ;
653 l_amb_context_code     VARCHAR2(30)  ;
654 l_log_module           VARCHAR2(240) ;
655 l_output_value         VARCHAR2(30)  ;
656 BEGIN
657 IF g_log_enabled THEN
658       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
659 END IF;
660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
661 
662       trace
663          (p_msg      => 'BEGIN of AcctDerRule_5'
664          ,p_level    => C_LEVEL_PROCEDURE
665          ,p_module   => l_log_module);
666 
667 END IF;
668 
669 l_component_type         := 'AMB_ADR';
670 l_component_code         := 'FV_445002_DWD_PYA_ANCPT_ACCT';
671 l_component_type_code    := 'S';
672 l_component_appl_id      :=  200;
673 l_amb_context_code       := 'DEFAULT';
674 x_transaction_coa_id     :=  null;
675 x_accounting_coa_id      :=  null;
676 x_flexfield_segment_code :=  null;
677 x_flex_value_set_id      := 1009988 ;
678 
679 
680  IF NVL(p_source_3,'
681 ') =  'Anticipated' OR 
682 NVL(p_source_3,'
683 ') =  'Partial'
684  THEN 
685 --
686   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
687 
688       trace
689          (p_msg      => 'END of AcctDerRule_5'
690          ,p_level    => C_LEVEL_PROCEDURE
691          ,p_module   => l_log_module);
692 
693   END IF;
694   x_value_combination_id  :=  null ;
695   x_value_segment_code    :=  null ;
696   x_value_type_code       := 'C';
697   l_output_value          := '431002';
698   RETURN l_output_value;
699 
700  ELSE 
701     IF p_override_seg_flag = 'Y' THEN 
702        RETURN '#$NO_OVERRIDE#$';
703     END IF;
704  END IF;
705 
706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
707 
708       trace
709          (p_msg      => 'END of AcctDerRule_5(invalid)'
710          ,p_level    => C_LEVEL_PROCEDURE
711          ,p_module   => l_log_module);
712 
713 END IF;
714 
715 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
716 x_value_combination_id  := null;
717 x_value_segment_code    := null;
718 x_value_type_code       := null;
719 l_output_value          := null;
720 xla_accounting_err_pkg.build_message
721                  (p_appli_s_name            => 'XLA'
725                                                             l_component_type
722                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
723                  ,p_token_1                 => 'COMPONENT_NAME'
724                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
726                                                           , l_component_code
727                                                           , l_component_type_code
728                                                           , l_component_appl_id
729                                                           , l_amb_context_code
730                                                           )
731                  ,p_token_2                 => 'OWNER'
732                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
733                                                         'XLA_OWNER_TYPE'
734                                                         ,l_component_type_code
735                                                         )
736                  ,p_token_3                 => 'PAD_NAME'
737                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
738                  ,p_token_4                 => 'PAD_OWNER'
739                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
740                                                         'XLA_OWNER_TYPE'
741                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
742                                                         )
743                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
744                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
745                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
746                  ,p_ae_header_id            => NULL
747 );
748 RETURN l_output_value;
749 EXCEPTION
750   WHEN xla_exceptions_pkg.application_exception THEN
751       RAISE;
752   WHEN OTHERS THEN
753        xla_exceptions_pkg.raise_message
754            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_5');
755 END AcctDerRule_5;
756 --
757 
758 ---------------------------------------
759 --
760 -- PRIVATE FUNCTION
761 --         AcctDerRule_6
762 --
763 ---------------------------------------
764 FUNCTION AcctDerRule_6 (
765   p_application_id             IN NUMBER
766 , p_ae_header_id               IN NUMBER
767 , p_side                       IN VARCHAR2
768 , p_override_seg_flag          IN VARCHAR2 
769 --Federal Anticipation
770  , p_source_3            IN VARCHAR2
771 , x_transaction_coa_id         OUT NOCOPY NUMBER
772 , x_accounting_coa_id          OUT NOCOPY NUMBER
773 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
774 , x_flex_value_set_id          OUT NOCOPY NUMBER
775 , x_value_type_code            OUT NOCOPY VARCHAR2
776 , x_value_combination_id       OUT NOCOPY NUMBER
777 , x_value_segment_code         OUT NOCOPY VARCHAR2
778 )
779 RETURN VARCHAR2
780 IS
781 l_component_type       VARCHAR2(80)  ;
782 l_component_code       VARCHAR2(30)  ;
783 l_component_type_code  VARCHAR2(1)   ;
784 l_component_appl_id    INTEGER       ;
785 l_amb_context_code     VARCHAR2(30)  ;
786 l_log_module           VARCHAR2(240) ;
787 l_output_value         VARCHAR2(30)  ;
788 BEGIN
789 IF g_log_enabled THEN
790       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
791 END IF;
792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
793 
794       trace
795          (p_msg      => 'BEGIN of AcctDerRule_6'
796          ,p_level    => C_LEVEL_PROCEDURE
797          ,p_module   => l_log_module);
798 
799 END IF;
800 
801 l_component_type         := 'AMB_ADR';
802 l_component_code         := 'FV_445002_DWD_PYA_UNANCPT_ACCT';
803 l_component_type_code    := 'S';
804 l_component_appl_id      :=  200;
805 l_amb_context_code       := 'DEFAULT';
806 x_transaction_coa_id     :=  null;
807 x_accounting_coa_id      :=  null;
808 x_flexfield_segment_code :=  null;
809 x_flex_value_set_id      := 1009988 ;
810 
811 
812  IF NVL(p_source_3,'
813 ') =  'UnAnticipated' OR 
814 NVL(p_source_3,'
815 ') =  'Partial'
816  THEN 
817 --
818   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
819 
820       trace
821          (p_msg      => 'END of AcctDerRule_6'
822          ,p_level    => C_LEVEL_PROCEDURE
823          ,p_module   => l_log_module);
824 
825   END IF;
826   x_value_combination_id  :=  null ;
827   x_value_segment_code    :=  null ;
828   x_value_type_code       := 'C';
829   l_output_value          := '445002';
830   RETURN l_output_value;
831 
832  ELSE 
833     IF p_override_seg_flag = 'Y' THEN 
834        RETURN '#$NO_OVERRIDE#$';
835     END IF;
836  END IF;
837 
838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
839 
840       trace
841          (p_msg      => 'END of AcctDerRule_6(invalid)'
842          ,p_level    => C_LEVEL_PROCEDURE
843          ,p_module   => l_log_module);
844 
845 END IF;
846 
847 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
848 x_value_combination_id  := null;
849 x_value_segment_code    := null;
850 x_value_type_code       := null;
851 l_output_value          := null;
855                  ,p_token_1                 => 'COMPONENT_NAME'
852 xla_accounting_err_pkg.build_message
853                  (p_appli_s_name            => 'XLA'
854                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
856                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
857                                                             l_component_type
858                                                           , l_component_code
859                                                           , l_component_type_code
860                                                           , l_component_appl_id
861                                                           , l_amb_context_code
862                                                           )
863                  ,p_token_2                 => 'OWNER'
864                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
865                                                         'XLA_OWNER_TYPE'
866                                                         ,l_component_type_code
867                                                         )
868                  ,p_token_3                 => 'PAD_NAME'
869                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
870                  ,p_token_4                 => 'PAD_OWNER'
871                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
872                                                         'XLA_OWNER_TYPE'
873                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
874                                                         )
875                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
876                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
877                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
878                  ,p_ae_header_id            => NULL
879 );
880 RETURN l_output_value;
881 EXCEPTION
882   WHEN xla_exceptions_pkg.application_exception THEN
883       RAISE;
884   WHEN OTHERS THEN
885        xla_exceptions_pkg.raise_message
886            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_6');
887 END AcctDerRule_6;
888 --
889 
890 ---------------------------------------
891 --
892 -- PRIVATE FUNCTION
893 --         AcctDerRule_7
894 --
895 ---------------------------------------
896 FUNCTION AcctDerRule_7 (
897   p_application_id             IN NUMBER
898 , p_ae_header_id               IN NUMBER
899 , p_side                       IN VARCHAR2
900 , p_override_seg_flag          IN VARCHAR2  
901 , x_transaction_coa_id         OUT NOCOPY NUMBER
902 , x_accounting_coa_id          OUT NOCOPY NUMBER
903 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
904 , x_flex_value_set_id          OUT NOCOPY NUMBER
905 , x_value_type_code            OUT NOCOPY VARCHAR2
906 , x_value_combination_id       OUT NOCOPY NUMBER
907 , x_value_segment_code         OUT NOCOPY VARCHAR2
908 )
909 RETURN VARCHAR2
910 IS
911 l_component_type       VARCHAR2(80)  ;
912 l_component_code       VARCHAR2(30)  ;
913 l_component_type_code  VARCHAR2(1)   ;
914 l_component_appl_id    INTEGER       ;
915 l_amb_context_code     VARCHAR2(30)  ;
916 l_log_module           VARCHAR2(240) ;
917 l_output_value         VARCHAR2(30)  ;
918 BEGIN
919 IF g_log_enabled THEN
920       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
921 END IF;
922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
923 
924       trace
925          (p_msg      => 'BEGIN of AcctDerRule_7'
926          ,p_level    => C_LEVEL_PROCEDURE
927          ,p_module   => l_log_module);
928 
929 END IF;
930 
931 l_component_type         := 'AMB_ADR';
932 l_component_code         := 'FV_465002_PAYABLES';
933 l_component_type_code    := 'S';
934 l_component_appl_id      :=  200;
935 l_amb_context_code       := 'DEFAULT';
936 x_transaction_coa_id     :=  null;
937 x_accounting_coa_id      :=  null;
938 x_flexfield_segment_code :=  null;
939 x_flex_value_set_id      := 1009988 ;
940 
941 
942 --
943   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
944 
945       trace
946          (p_msg      => 'END of AcctDerRule_7'
947          ,p_level    => C_LEVEL_PROCEDURE
948          ,p_module   => l_log_module);
949 
950   END IF;
951   x_value_combination_id  :=  null ;
952   x_value_segment_code    :=  null ;
953   x_value_type_code       := 'C';
954   l_output_value          := '465002';
955   RETURN l_output_value;
956 
957 
958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
959 
960       trace
961          (p_msg      => 'END of AcctDerRule_7(invalid)'
962          ,p_level    => C_LEVEL_PROCEDURE
963          ,p_module   => l_log_module);
964 
965 END IF;
966 
967 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
968 x_value_combination_id  := null;
969 x_value_segment_code    := null;
970 x_value_type_code       := null;
971 l_output_value          := null;
972 xla_accounting_err_pkg.build_message
973                  (p_appli_s_name            => 'XLA'
974                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
975                  ,p_token_1                 => 'COMPONENT_NAME'
979                                                           , l_component_type_code
976                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
977                                                             l_component_type
978                                                           , l_component_code
980                                                           , l_component_appl_id
981                                                           , l_amb_context_code
982                                                           )
983                  ,p_token_2                 => 'OWNER'
984                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
985                                                         'XLA_OWNER_TYPE'
986                                                         ,l_component_type_code
987                                                         )
988                  ,p_token_3                 => 'PAD_NAME'
989                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
990                  ,p_token_4                 => 'PAD_OWNER'
991                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
992                                                         'XLA_OWNER_TYPE'
993                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
994                                                         )
995                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
996                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
997                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
998                  ,p_ae_header_id            => NULL
999 );
1000 RETURN l_output_value;
1001 EXCEPTION
1002   WHEN xla_exceptions_pkg.application_exception THEN
1003       RAISE;
1004   WHEN OTHERS THEN
1005        xla_exceptions_pkg.raise_message
1006            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_7');
1007 END AcctDerRule_7;
1008 --
1009 
1010 ---------------------------------------
1011 --
1012 -- PRIVATE FUNCTION
1013 --         AcctDerRule_8
1014 --
1015 ---------------------------------------
1016 FUNCTION AcctDerRule_8 (
1017   p_application_id             IN NUMBER
1018 , p_ae_header_id               IN NUMBER
1019 , p_side                       IN VARCHAR2
1020 , p_override_seg_flag          IN VARCHAR2 
1021 --Federal Fund Category
1022  , p_source_4            IN VARCHAR2
1023 --Federal Fund Expired Status
1024  , p_source_5            IN VARCHAR2
1025 --Federal Fund Category Description
1026  , p_source_6            IN VARCHAR2
1027 , x_transaction_coa_id         OUT NOCOPY NUMBER
1028 , x_accounting_coa_id          OUT NOCOPY NUMBER
1029 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1030 , x_flex_value_set_id          OUT NOCOPY NUMBER
1031 , x_value_type_code            OUT NOCOPY VARCHAR2
1032 , x_value_combination_id       OUT NOCOPY NUMBER
1033 , x_value_segment_code         OUT NOCOPY VARCHAR2
1034 )
1035 RETURN VARCHAR2
1036 IS
1037 l_component_type       VARCHAR2(80)  ;
1038 l_component_code       VARCHAR2(30)  ;
1039 l_component_type_code  VARCHAR2(1)   ;
1040 l_component_appl_id    INTEGER       ;
1041 l_amb_context_code     VARCHAR2(30)  ;
1042 l_log_module           VARCHAR2(240) ;
1043 l_output_value         VARCHAR2(30)  ;
1044 BEGIN
1045 IF g_log_enabled THEN
1046       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1047 END IF;
1048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1049 
1050       trace
1051          (p_msg      => 'BEGIN of AcctDerRule_8'
1052          ,p_level    => C_LEVEL_PROCEDURE
1053          ,p_module   => l_log_module);
1054 
1055 END IF;
1056 
1057 l_component_type         := 'AMB_ADR';
1058 l_component_code         := 'FV_46X002_ALLOTMENT_RES_ACCT';
1059 l_component_type_code    := 'S';
1060 l_component_appl_id      :=  200;
1061 l_amb_context_code       := 'DEFAULT';
1062 x_transaction_coa_id     :=  null;
1063 x_accounting_coa_id      :=  null;
1064 x_flexfield_segment_code :=  null;
1065 x_flex_value_set_id      := 1009988 ;
1066 
1067 
1068  IF (NVL(p_source_4,'
1069 ') =  'A' OR 
1070 NVL(p_source_4,'
1071 ') =  'B' OR 
1072 NVL(p_source_4,'
1073 ') =  'S' OR 
1074 NVL(p_source_4,'
1075 ') =  'T') AND 
1076 NVL(p_source_5,'
1077 ') =  'Unexpired'
1078  THEN 
1079 --
1080   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1081 
1082       trace
1083          (p_msg      => 'END of AcctDerRule_8'
1084          ,p_level    => C_LEVEL_PROCEDURE
1085          ,p_module   => l_log_module);
1086 
1087   END IF;
1088   x_value_combination_id  :=  null ;
1089   x_value_segment_code    :=  null ;
1090   x_value_type_code       := 'C';
1091   l_output_value          := '461002';
1092   RETURN l_output_value;
1093 
1094  ELSIF (NVL(p_source_4,'
1095 ') =  'C' OR 
1096 NVL(p_source_4,'
1097 ') =  'R') AND 
1098 NVL(p_source_5,'
1099 ') =  'Unexpired'
1100  THEN 
1101 --
1102   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1103 
1104       trace
1105          (p_msg      => 'END of AcctDerRule_8'
1106          ,p_level    => C_LEVEL_PROCEDURE
1107          ,p_module   => l_log_module);
1108 
1109   END IF;
1110   x_value_combination_id  :=  null ;
1114   RETURN l_output_value;
1111   x_value_segment_code    :=  null ;
1112   x_value_type_code       := 'C';
1113   l_output_value          := '462002';
1115 
1116  ELSIF NVL(p_source_6,'
1117 ') =  'Direct' OR 
1118 NVL(p_source_5,'
1119 ') =  'Expired'
1120  THEN 
1121 --
1122   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1123 
1124       trace
1125          (p_msg      => 'END of AcctDerRule_8'
1126          ,p_level    => C_LEVEL_PROCEDURE
1127          ,p_module   => l_log_module);
1128 
1129   END IF;
1130   x_value_combination_id  :=  null ;
1131   x_value_segment_code    :=  null ;
1132   x_value_type_code       := 'C';
1133   l_output_value          := '465002';
1134   RETURN l_output_value;
1135 
1136  ELSE 
1137     IF p_override_seg_flag = 'Y' THEN 
1138        RETURN '#$NO_OVERRIDE#$';
1139     END IF;
1140  END IF;
1141 
1142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1143 
1144       trace
1145          (p_msg      => 'END of AcctDerRule_8(invalid)'
1146          ,p_level    => C_LEVEL_PROCEDURE
1147          ,p_module   => l_log_module);
1148 
1149 END IF;
1150 
1151 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1152 x_value_combination_id  := null;
1153 x_value_segment_code    := null;
1154 x_value_type_code       := null;
1155 l_output_value          := null;
1156 xla_accounting_err_pkg.build_message
1157                  (p_appli_s_name            => 'XLA'
1158                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1159                  ,p_token_1                 => 'COMPONENT_NAME'
1160                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1161                                                             l_component_type
1162                                                           , l_component_code
1163                                                           , l_component_type_code
1164                                                           , l_component_appl_id
1165                                                           , l_amb_context_code
1166                                                           )
1167                  ,p_token_2                 => 'OWNER'
1168                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1169                                                         'XLA_OWNER_TYPE'
1170                                                         ,l_component_type_code
1171                                                         )
1172                  ,p_token_3                 => 'PAD_NAME'
1173                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1174                  ,p_token_4                 => 'PAD_OWNER'
1175                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1176                                                         'XLA_OWNER_TYPE'
1177                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1178                                                         )
1179                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1180                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1181                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1182                  ,p_ae_header_id            => NULL
1183 );
1184 RETURN l_output_value;
1185 EXCEPTION
1186   WHEN xla_exceptions_pkg.application_exception THEN
1187       RAISE;
1188   WHEN OTHERS THEN
1189        xla_exceptions_pkg.raise_message
1190            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_8');
1191 END AcctDerRule_8;
1192 --
1193 
1194 ---------------------------------------
1195 --
1196 -- PRIVATE FUNCTION
1197 --         AcctDerRule_9
1198 --
1199 ---------------------------------------
1200 FUNCTION AcctDerRule_9 (
1201   p_application_id             IN NUMBER
1202 , p_ae_header_id               IN NUMBER
1203 , p_side                       IN VARCHAR2
1204 , p_override_seg_flag          IN VARCHAR2  
1205 , x_transaction_coa_id         OUT NOCOPY NUMBER
1206 , x_accounting_coa_id          OUT NOCOPY NUMBER
1207 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1208 , x_flex_value_set_id          OUT NOCOPY NUMBER
1209 , x_value_type_code            OUT NOCOPY VARCHAR2
1210 , x_value_combination_id       OUT NOCOPY NUMBER
1211 , x_value_segment_code         OUT NOCOPY VARCHAR2
1212 )
1213 RETURN VARCHAR2
1214 IS
1215 l_component_type       VARCHAR2(80)  ;
1216 l_component_code       VARCHAR2(30)  ;
1217 l_component_type_code  VARCHAR2(1)   ;
1218 l_component_appl_id    INTEGER       ;
1219 l_amb_context_code     VARCHAR2(30)  ;
1220 l_log_module           VARCHAR2(240) ;
1221 l_output_value         VARCHAR2(30)  ;
1222 BEGIN
1223 IF g_log_enabled THEN
1224       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1225 END IF;
1226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1227 
1228       trace
1229          (p_msg      => 'BEGIN of AcctDerRule_9'
1230          ,p_level    => C_LEVEL_PROCEDURE
1231          ,p_module   => l_log_module);
1232 
1233 END IF;
1234 
1235 l_component_type         := 'AMB_ADR';
1236 l_component_code         := 'FV_480101_PAYABLES';
1237 l_component_type_code    := 'S';
1238 l_component_appl_id      :=  200;
1239 l_amb_context_code       := 'DEFAULT';
1243 x_flex_value_set_id      := 1009988 ;
1240 x_transaction_coa_id     :=  null;
1241 x_accounting_coa_id      :=  null;
1242 x_flexfield_segment_code :=  null;
1244 
1245 
1246 --
1247   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1248 
1249       trace
1250          (p_msg      => 'END of AcctDerRule_9'
1251          ,p_level    => C_LEVEL_PROCEDURE
1252          ,p_module   => l_log_module);
1253 
1254   END IF;
1255   x_value_combination_id  :=  null ;
1256   x_value_segment_code    :=  null ;
1257   x_value_type_code       := 'C';
1258   l_output_value          := '480101';
1259   RETURN l_output_value;
1260 
1261 
1262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1263 
1264       trace
1265          (p_msg      => 'END of AcctDerRule_9(invalid)'
1266          ,p_level    => C_LEVEL_PROCEDURE
1267          ,p_module   => l_log_module);
1268 
1269 END IF;
1270 
1271 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1272 x_value_combination_id  := null;
1273 x_value_segment_code    := null;
1274 x_value_type_code       := null;
1275 l_output_value          := null;
1276 xla_accounting_err_pkg.build_message
1277                  (p_appli_s_name            => 'XLA'
1278                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1279                  ,p_token_1                 => 'COMPONENT_NAME'
1280                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1281                                                             l_component_type
1282                                                           , l_component_code
1283                                                           , l_component_type_code
1284                                                           , l_component_appl_id
1285                                                           , l_amb_context_code
1286                                                           )
1287                  ,p_token_2                 => 'OWNER'
1288                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1289                                                         'XLA_OWNER_TYPE'
1290                                                         ,l_component_type_code
1291                                                         )
1292                  ,p_token_3                 => 'PAD_NAME'
1293                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1294                  ,p_token_4                 => 'PAD_OWNER'
1295                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1296                                                         'XLA_OWNER_TYPE'
1297                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1298                                                         )
1299                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1300                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1301                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1302                  ,p_ae_header_id            => NULL
1303 );
1304 RETURN l_output_value;
1305 EXCEPTION
1306   WHEN xla_exceptions_pkg.application_exception THEN
1307       RAISE;
1308   WHEN OTHERS THEN
1309        xla_exceptions_pkg.raise_message
1310            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_9');
1311 END AcctDerRule_9;
1312 --
1313 
1314 ---------------------------------------
1315 --
1316 -- PRIVATE FUNCTION
1317 --         AcctDerRule_10
1318 --
1319 ---------------------------------------
1320 FUNCTION AcctDerRule_10 (
1321   p_application_id             IN NUMBER
1322 , p_ae_header_id               IN NUMBER
1323 , p_side                       IN VARCHAR2
1324 , p_override_seg_flag          IN VARCHAR2 
1325 --Payment Status Flag of the Invoice
1326  , p_source_7            IN VARCHAR2
1327 , x_transaction_coa_id         OUT NOCOPY NUMBER
1328 , x_accounting_coa_id          OUT NOCOPY NUMBER
1329 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1330 , x_flex_value_set_id          OUT NOCOPY NUMBER
1331 , x_value_type_code            OUT NOCOPY VARCHAR2
1332 , x_value_combination_id       OUT NOCOPY NUMBER
1333 , x_value_segment_code         OUT NOCOPY VARCHAR2
1334 )
1335 RETURN VARCHAR2
1336 IS
1337 l_component_type       VARCHAR2(80)  ;
1338 l_component_code       VARCHAR2(30)  ;
1339 l_component_type_code  VARCHAR2(1)   ;
1340 l_component_appl_id    INTEGER       ;
1341 l_amb_context_code     VARCHAR2(30)  ;
1342 l_log_module           VARCHAR2(240) ;
1343 l_output_value         VARCHAR2(30)  ;
1344 BEGIN
1345 IF g_log_enabled THEN
1346       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1347 END IF;
1348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1349 
1350       trace
1351          (p_msg      => 'BEGIN of AcctDerRule_10'
1352          ,p_level    => C_LEVEL_PROCEDURE
1353          ,p_module   => l_log_module);
1354 
1355 END IF;
1356 
1357 l_component_type         := 'AMB_ADR';
1358 l_component_code         := 'FV_480X01_PAID_OBL_REV_DR';
1359 l_component_type_code    := 'S';
1360 l_component_appl_id      :=  200;
1361 l_amb_context_code       := 'DEFAULT';
1362 x_transaction_coa_id     :=  null;
1363 x_accounting_coa_id      :=  null;
1364 x_flexfield_segment_code :=  null;
1365 x_flex_value_set_id      := 1009988 ;
1366 
1367 
1371 --
1368  IF NVL(p_source_7,'
1369 ') =  'N'
1370  THEN 
1372   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1373 
1374       trace
1375          (p_msg      => 'END of AcctDerRule_10'
1376          ,p_level    => C_LEVEL_PROCEDURE
1377          ,p_module   => l_log_module);
1378 
1379   END IF;
1380   x_value_combination_id  :=  null ;
1381   x_value_segment_code    :=  null ;
1382   x_value_type_code       := 'C';
1383   l_output_value          := '480101';
1384   RETURN l_output_value;
1385 
1386  ELSIF NVL(p_source_7,'
1387 ') =  'Y' OR 
1388 NVL(p_source_7,'
1389 ') =  'P'
1390  THEN 
1391 --
1392   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1393 
1394       trace
1395          (p_msg      => 'END of AcctDerRule_10'
1396          ,p_level    => C_LEVEL_PROCEDURE
1397          ,p_module   => l_log_module);
1398 
1399   END IF;
1400   x_value_combination_id  :=  null ;
1401   x_value_segment_code    :=  null ;
1402   x_value_type_code       := 'C';
1403   l_output_value          := '480201';
1404   RETURN l_output_value;
1405 
1406  ELSE 
1407     IF p_override_seg_flag = 'Y' THEN 
1408        RETURN '#$NO_OVERRIDE#$';
1409     END IF;
1410  END IF;
1411 
1412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1413 
1414       trace
1415          (p_msg      => 'END of AcctDerRule_10(invalid)'
1416          ,p_level    => C_LEVEL_PROCEDURE
1417          ,p_module   => l_log_module);
1418 
1419 END IF;
1420 
1421 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1422 x_value_combination_id  := null;
1423 x_value_segment_code    := null;
1424 x_value_type_code       := null;
1425 l_output_value          := null;
1426 xla_accounting_err_pkg.build_message
1427                  (p_appli_s_name            => 'XLA'
1428                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1429                  ,p_token_1                 => 'COMPONENT_NAME'
1430                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1431                                                             l_component_type
1432                                                           , l_component_code
1433                                                           , l_component_type_code
1434                                                           , l_component_appl_id
1435                                                           , l_amb_context_code
1436                                                           )
1437                  ,p_token_2                 => 'OWNER'
1438                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1439                                                         'XLA_OWNER_TYPE'
1440                                                         ,l_component_type_code
1441                                                         )
1442                  ,p_token_3                 => 'PAD_NAME'
1443                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1444                  ,p_token_4                 => 'PAD_OWNER'
1445                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1446                                                         'XLA_OWNER_TYPE'
1447                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1448                                                         )
1449                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1450                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1451                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1452                  ,p_ae_header_id            => NULL
1453 );
1454 RETURN l_output_value;
1455 EXCEPTION
1456   WHEN xla_exceptions_pkg.application_exception THEN
1457       RAISE;
1458   WHEN OTHERS THEN
1459        xla_exceptions_pkg.raise_message
1460            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_10');
1461 END AcctDerRule_10;
1462 --
1463 
1464 ---------------------------------------
1465 --
1466 -- PRIVATE FUNCTION
1467 --         AcctDerRule_11
1468 --
1469 ---------------------------------------
1470 FUNCTION AcctDerRule_11 (
1471   p_application_id             IN NUMBER
1472 , p_ae_header_id               IN NUMBER
1473 , p_side                       IN VARCHAR2
1474 , p_override_seg_flag          IN VARCHAR2  
1475 , x_transaction_coa_id         OUT NOCOPY NUMBER
1476 , x_accounting_coa_id          OUT NOCOPY NUMBER
1477 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1478 , x_flex_value_set_id          OUT NOCOPY NUMBER
1479 , x_value_type_code            OUT NOCOPY VARCHAR2
1480 , x_value_combination_id       OUT NOCOPY NUMBER
1481 , x_value_segment_code         OUT NOCOPY VARCHAR2
1482 )
1483 RETURN VARCHAR2
1484 IS
1485 l_component_type       VARCHAR2(80)  ;
1486 l_component_code       VARCHAR2(30)  ;
1487 l_component_type_code  VARCHAR2(1)   ;
1488 l_component_appl_id    INTEGER       ;
1489 l_amb_context_code     VARCHAR2(30)  ;
1490 l_log_module           VARCHAR2(240) ;
1491 l_output_value         VARCHAR2(30)  ;
1492 BEGIN
1493 IF g_log_enabled THEN
1494       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1495 END IF;
1496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1497 
1498       trace
1499          (p_msg      => 'BEGIN of AcctDerRule_11'
1503 END IF;
1500          ,p_level    => C_LEVEL_PROCEDURE
1501          ,p_module   => l_log_module);
1502 
1504 
1505 l_component_type         := 'AMB_ADR';
1506 l_component_code         := 'FV_48X101_PAYABLES';
1507 l_component_type_code    := 'S';
1508 l_component_appl_id      :=  200;
1509 l_amb_context_code       := 'DEFAULT';
1510 x_transaction_coa_id     :=  null;
1511 x_accounting_coa_id      :=  null;
1512 x_flexfield_segment_code :=  null;
1513 x_flex_value_set_id      := 1009988 ;
1514 
1515 
1516 --
1517   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1518 
1519       trace
1520          (p_msg      => 'END of AcctDerRule_11'
1521          ,p_level    => C_LEVEL_PROCEDURE
1522          ,p_module   => l_log_module);
1523 
1524   END IF;
1525   x_value_combination_id  :=  null ;
1526   x_value_segment_code    :=  null ;
1527   x_value_type_code       := 'C';
1528   l_output_value          := '480101';
1529   RETURN l_output_value;
1530 
1531 
1532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1533 
1534       trace
1535          (p_msg      => 'END of AcctDerRule_11(invalid)'
1536          ,p_level    => C_LEVEL_PROCEDURE
1537          ,p_module   => l_log_module);
1538 
1539 END IF;
1540 
1541 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1542 x_value_combination_id  := null;
1543 x_value_segment_code    := null;
1544 x_value_type_code       := null;
1545 l_output_value          := null;
1546 xla_accounting_err_pkg.build_message
1547                  (p_appli_s_name            => 'XLA'
1548                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1549                  ,p_token_1                 => 'COMPONENT_NAME'
1550                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1551                                                             l_component_type
1552                                                           , l_component_code
1553                                                           , l_component_type_code
1554                                                           , l_component_appl_id
1555                                                           , l_amb_context_code
1556                                                           )
1557                  ,p_token_2                 => 'OWNER'
1558                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1559                                                         'XLA_OWNER_TYPE'
1560                                                         ,l_component_type_code
1561                                                         )
1562                  ,p_token_3                 => 'PAD_NAME'
1563                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1564                  ,p_token_4                 => 'PAD_OWNER'
1565                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1566                                                         'XLA_OWNER_TYPE'
1567                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1568                                                         )
1569                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1570                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1571                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1572                  ,p_ae_header_id            => NULL
1573 );
1574 RETURN l_output_value;
1575 EXCEPTION
1576   WHEN xla_exceptions_pkg.application_exception THEN
1577       RAISE;
1578   WHEN OTHERS THEN
1579        xla_exceptions_pkg.raise_message
1580            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_11');
1581 END AcctDerRule_11;
1582 --
1583 
1584 ---------------------------------------
1585 --
1586 -- PRIVATE FUNCTION
1587 --         AcctDerRule_12
1588 --
1589 ---------------------------------------
1590 FUNCTION AcctDerRule_12 (
1591   p_application_id             IN NUMBER
1592 , p_ae_header_id               IN NUMBER
1593 , p_side                       IN VARCHAR2
1594 , p_override_seg_flag          IN VARCHAR2 
1595 --Payment Status Flag of the Invoice
1596  , p_source_7            IN VARCHAR2
1597 --Invoice Distribution Type
1598  , p_source_8            IN VARCHAR2
1599  , p_source_8_meaning    IN VARCHAR2
1600 --Federal Prior Year Flag
1601  , p_source_9            IN VARCHAR2
1602 --Invoice Distribution Encumbrance Amount
1603  , p_source_10            IN NUMBER
1604 --Accrue on Receipt Option
1605  , p_source_11            IN VARCHAR2
1606  , p_source_11_meaning    IN VARCHAR2
1607 , x_transaction_coa_id         OUT NOCOPY NUMBER
1608 , x_accounting_coa_id          OUT NOCOPY NUMBER
1609 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1610 , x_flex_value_set_id          OUT NOCOPY NUMBER
1611 , x_value_type_code            OUT NOCOPY VARCHAR2
1612 , x_value_combination_id       OUT NOCOPY NUMBER
1613 , x_value_segment_code         OUT NOCOPY VARCHAR2
1614 )
1615 RETURN VARCHAR2
1616 IS
1617 l_component_type       VARCHAR2(80)  ;
1618 l_component_code       VARCHAR2(30)  ;
1619 l_component_type_code  VARCHAR2(1)   ;
1620 l_component_appl_id    INTEGER       ;
1621 l_amb_context_code     VARCHAR2(30)  ;
1622 l_log_module           VARCHAR2(240) ;
1623 l_output_value         VARCHAR2(30)  ;
1624 BEGIN
1625 IF g_log_enabled THEN
1629 
1626       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1627 END IF;
1628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1630       trace
1631          (p_msg      => 'BEGIN of AcctDerRule_12'
1632          ,p_level    => C_LEVEL_PROCEDURE
1633          ,p_module   => l_log_module);
1634 
1635 END IF;
1636 
1637 l_component_type         := 'AMB_ADR';
1638 l_component_code         := 'FV_490X01_OBL_ACCOUNT';
1639 l_component_type_code    := 'S';
1640 l_component_appl_id      :=  200;
1641 l_amb_context_code       := 'DEFAULT';
1642 x_transaction_coa_id     :=  null;
1643 x_accounting_coa_id      :=  null;
1644 x_flexfield_segment_code :=  null;
1645 x_flex_value_set_id      := 1009988 ;
1646 
1647 
1648  IF NVL(p_source_8,'
1649 ') =  'IPV' AND 
1650 NVL(p_source_9,'
1651 ') =  'Y' AND 
1652 p_source_10 <  0 AND 
1653 NVL(p_source_11,'
1654 ') =  'Y'
1655  THEN 
1656 --
1657   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1658 
1659       trace
1660          (p_msg      => 'END of AcctDerRule_12'
1661          ,p_level    => C_LEVEL_PROCEDURE
1662          ,p_module   => l_log_module);
1663 
1664   END IF;
1665   x_value_combination_id  :=  null ;
1666   x_value_segment_code    :=  null ;
1667   x_value_type_code       := 'C';
1668   l_output_value          := '497101';
1669   RETURN l_output_value;
1670 
1671  ELSIF NVL(p_source_8,'
1672 ') =  'ITEM' AND 
1673 (NVL(p_source_7,'
1674 ') =  'Y' OR 
1675 NVL(p_source_7,'
1676 ') =  'P')
1677  THEN 
1678 --
1679   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1680 
1681       trace
1682          (p_msg      => 'END of AcctDerRule_12'
1683          ,p_level    => C_LEVEL_PROCEDURE
1684          ,p_module   => l_log_module);
1685 
1686   END IF;
1687   x_value_combination_id  :=  null ;
1688   x_value_segment_code    :=  null ;
1689   x_value_type_code       := 'C';
1690   l_output_value          := '490201';
1691   RETURN l_output_value;
1692 
1693 END IF;
1694 
1695 --
1696   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1697 
1698       trace
1699          (p_msg      => 'END of AcctDerRule_12'
1700          ,p_level    => C_LEVEL_PROCEDURE
1701          ,p_module   => l_log_module);
1702 
1703   END IF;
1704   x_value_combination_id  :=  null ;
1705   x_value_segment_code    :=  null ;
1706   x_value_type_code       := 'C';
1707   l_output_value          := '490101';
1708   RETURN l_output_value;
1709 
1710 
1711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1712 
1713       trace
1714          (p_msg      => 'END of AcctDerRule_12(invalid)'
1715          ,p_level    => C_LEVEL_PROCEDURE
1716          ,p_module   => l_log_module);
1717 
1718 END IF;
1719 
1720 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1721 x_value_combination_id  := null;
1722 x_value_segment_code    := null;
1723 x_value_type_code       := null;
1724 l_output_value          := null;
1725 xla_accounting_err_pkg.build_message
1726                  (p_appli_s_name            => 'XLA'
1727                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1728                  ,p_token_1                 => 'COMPONENT_NAME'
1729                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1730                                                             l_component_type
1731                                                           , l_component_code
1732                                                           , l_component_type_code
1733                                                           , l_component_appl_id
1734                                                           , l_amb_context_code
1735                                                           )
1736                  ,p_token_2                 => 'OWNER'
1737                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1738                                                         'XLA_OWNER_TYPE'
1739                                                         ,l_component_type_code
1740                                                         )
1741                  ,p_token_3                 => 'PAD_NAME'
1742                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1743                  ,p_token_4                 => 'PAD_OWNER'
1744                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1745                                                         'XLA_OWNER_TYPE'
1746                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1747                                                         )
1748                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1749                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1750                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1751                  ,p_ae_header_id            => NULL
1752 );
1753 RETURN l_output_value;
1754 EXCEPTION
1755   WHEN xla_exceptions_pkg.application_exception THEN
1756       RAISE;
1757   WHEN OTHERS THEN
1758        xla_exceptions_pkg.raise_message
1759            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_12');
1760 END AcctDerRule_12;
1761 --
1762 
1763 ---------------------------------------
1764 --
1765 -- PRIVATE FUNCTION
1769 FUNCTION AcctDerRule_13 (
1766 --         AcctDerRule_13
1767 --
1768 ---------------------------------------
1770   p_application_id             IN NUMBER
1771 , p_ae_header_id               IN NUMBER
1772 , p_side                       IN VARCHAR2
1773 , p_override_seg_flag          IN VARCHAR2  
1774 , x_transaction_coa_id         OUT NOCOPY NUMBER
1775 , x_accounting_coa_id          OUT NOCOPY NUMBER
1776 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1777 , x_flex_value_set_id          OUT NOCOPY NUMBER
1778 , x_value_type_code            OUT NOCOPY VARCHAR2
1779 , x_value_combination_id       OUT NOCOPY NUMBER
1780 , x_value_segment_code         OUT NOCOPY VARCHAR2
1781 )
1782 RETURN VARCHAR2
1783 IS
1784 l_component_type       VARCHAR2(80)  ;
1785 l_component_code       VARCHAR2(30)  ;
1786 l_component_type_code  VARCHAR2(1)   ;
1787 l_component_appl_id    INTEGER       ;
1788 l_amb_context_code     VARCHAR2(30)  ;
1789 l_log_module           VARCHAR2(240) ;
1790 l_output_value         VARCHAR2(30)  ;
1791 BEGIN
1792 IF g_log_enabled THEN
1793       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1794 END IF;
1795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1796 
1797       trace
1798          (p_msg      => 'BEGIN of AcctDerRule_13'
1799          ,p_level    => C_LEVEL_PROCEDURE
1800          ,p_module   => l_log_module);
1801 
1802 END IF;
1803 
1804 l_component_type         := 'AMB_ADR';
1805 l_component_code         := 'FV_497101_DWD_PYA_DR';
1806 l_component_type_code    := 'S';
1807 l_component_appl_id      :=  200;
1808 l_amb_context_code       := 'DEFAULT';
1809 x_transaction_coa_id     :=  null;
1810 x_accounting_coa_id      :=  null;
1811 x_flexfield_segment_code :=  null;
1812 x_flex_value_set_id      := 1009988 ;
1813 
1814 
1815 --
1816   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1817 
1818       trace
1819          (p_msg      => 'END of AcctDerRule_13'
1820          ,p_level    => C_LEVEL_PROCEDURE
1821          ,p_module   => l_log_module);
1822 
1823   END IF;
1824   x_value_combination_id  :=  null ;
1825   x_value_segment_code    :=  null ;
1826   x_value_type_code       := 'C';
1827   l_output_value          := '487101';
1828   RETURN l_output_value;
1829 
1830 
1831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1832 
1833       trace
1834          (p_msg      => 'END of AcctDerRule_13(invalid)'
1835          ,p_level    => C_LEVEL_PROCEDURE
1836          ,p_module   => l_log_module);
1837 
1838 END IF;
1839 
1840 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1841 x_value_combination_id  := null;
1842 x_value_segment_code    := null;
1843 x_value_type_code       := null;
1844 l_output_value          := null;
1845 xla_accounting_err_pkg.build_message
1846                  (p_appli_s_name            => 'XLA'
1847                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1848                  ,p_token_1                 => 'COMPONENT_NAME'
1849                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1850                                                             l_component_type
1851                                                           , l_component_code
1852                                                           , l_component_type_code
1853                                                           , l_component_appl_id
1854                                                           , l_amb_context_code
1855                                                           )
1856                  ,p_token_2                 => 'OWNER'
1857                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1858                                                         'XLA_OWNER_TYPE'
1859                                                         ,l_component_type_code
1860                                                         )
1861                  ,p_token_3                 => 'PAD_NAME'
1862                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1863                  ,p_token_4                 => 'PAD_OWNER'
1864                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1865                                                         'XLA_OWNER_TYPE'
1866                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1867                                                         )
1868                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1869                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1870                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1871                  ,p_ae_header_id            => NULL
1872 );
1873 RETURN l_output_value;
1874 EXCEPTION
1875   WHEN xla_exceptions_pkg.application_exception THEN
1876       RAISE;
1877   WHEN OTHERS THEN
1878        xla_exceptions_pkg.raise_message
1879            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_13');
1880 END AcctDerRule_13;
1881 --
1882 
1883 ---------------------------------------
1884 --
1885 -- PRIVATE FUNCTION
1886 --         AcctDerRule_14
1887 --
1888 ---------------------------------------
1889 FUNCTION AcctDerRule_14 (
1890   p_application_id             IN NUMBER
1891 , p_ae_header_id               IN NUMBER
1892 , p_side                       IN VARCHAR2
1893 , p_override_seg_flag          IN VARCHAR2 
1894 --Accrue on Receipt Option
1898  , p_source_12            IN NUMBER
1895  , p_source_11            IN VARCHAR2
1896  , p_source_11_meaning    IN VARCHAR2
1897 --Purchase Order Distribution Identifier
1899 , x_transaction_coa_id         OUT NOCOPY NUMBER
1900 , x_accounting_coa_id          OUT NOCOPY NUMBER
1901 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1902 , x_flex_value_set_id          OUT NOCOPY NUMBER
1903 , x_value_type_code            OUT NOCOPY VARCHAR2
1904 , x_value_combination_id       OUT NOCOPY NUMBER
1905 , x_value_segment_code         OUT NOCOPY VARCHAR2
1906 )
1907 RETURN VARCHAR2
1908 IS
1909 l_component_type       VARCHAR2(80)  ;
1910 l_component_code       VARCHAR2(30)  ;
1911 l_component_type_code  VARCHAR2(1)   ;
1912 l_component_appl_id    INTEGER       ;
1913 l_amb_context_code     VARCHAR2(30)  ;
1914 l_log_module           VARCHAR2(240) ;
1915 l_output_value         VARCHAR2(30)  ;
1916 BEGIN
1917 IF g_log_enabled THEN
1918       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
1919 END IF;
1920 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1921 
1922       trace
1923          (p_msg      => 'BEGIN of AcctDerRule_14'
1924          ,p_level    => C_LEVEL_PROCEDURE
1925          ,p_module   => l_log_module);
1926 
1927 END IF;
1928 
1929 l_component_type         := 'AMB_ADR';
1930 l_component_code         := 'FV_4X9101_UPWARD_PYA_CR';
1931 l_component_type_code    := 'S';
1932 l_component_appl_id      :=  200;
1933 l_amb_context_code       := 'DEFAULT';
1934 x_transaction_coa_id     :=  null;
1935 x_accounting_coa_id      :=  null;
1936 x_flexfield_segment_code :=  null;
1937 x_flex_value_set_id      := 1009988 ;
1938 
1939 
1940  IF NVL(p_source_11,'
1941 ') <>  'Y' AND 
1942 p_source_12 IS NOT NULL 
1943  THEN 
1944 --
1945   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1946 
1947       trace
1948          (p_msg      => 'END of AcctDerRule_14'
1949          ,p_level    => C_LEVEL_PROCEDURE
1950          ,p_module   => l_log_module);
1951 
1952   END IF;
1953   x_value_combination_id  :=  null ;
1954   x_value_segment_code    :=  null ;
1955   x_value_type_code       := 'C';
1956   l_output_value          := '488101';
1957   RETURN l_output_value;
1958 
1959  ELSIF (NVL(p_source_11,'
1960 ') =  'Y' AND 
1961 p_source_12 IS NOT NULL ) OR 
1962 p_source_12 IS NULL 
1963  THEN 
1964 --
1965   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1966 
1967       trace
1968          (p_msg      => 'END of AcctDerRule_14'
1969          ,p_level    => C_LEVEL_PROCEDURE
1970          ,p_module   => l_log_module);
1971 
1972   END IF;
1973   x_value_combination_id  :=  null ;
1974   x_value_segment_code    :=  null ;
1975   x_value_type_code       := 'C';
1976   l_output_value          := '498101';
1977   RETURN l_output_value;
1978 
1979  ELSE 
1980     IF p_override_seg_flag = 'Y' THEN 
1981        RETURN '#$NO_OVERRIDE#$';
1982     END IF;
1983  END IF;
1984 
1985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1986 
1987       trace
1988          (p_msg      => 'END of AcctDerRule_14(invalid)'
1989          ,p_level    => C_LEVEL_PROCEDURE
1990          ,p_module   => l_log_module);
1991 
1992 END IF;
1993 
1994 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1995 x_value_combination_id  := null;
1996 x_value_segment_code    := null;
1997 x_value_type_code       := null;
1998 l_output_value          := null;
1999 xla_accounting_err_pkg.build_message
2000                  (p_appli_s_name            => 'XLA'
2001                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2002                  ,p_token_1                 => 'COMPONENT_NAME'
2003                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2004                                                             l_component_type
2005                                                           , l_component_code
2006                                                           , l_component_type_code
2007                                                           , l_component_appl_id
2008                                                           , l_amb_context_code
2009                                                           )
2010                  ,p_token_2                 => 'OWNER'
2011                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2012                                                         'XLA_OWNER_TYPE'
2013                                                         ,l_component_type_code
2014                                                         )
2015                  ,p_token_3                 => 'PAD_NAME'
2016                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2017                  ,p_token_4                 => 'PAD_OWNER'
2018                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2019                                                         'XLA_OWNER_TYPE'
2020                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2021                                                         )
2022                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2026 );
2023                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2024                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2025                  ,p_ae_header_id            => NULL
2027 RETURN l_output_value;
2028 EXCEPTION
2029   WHEN xla_exceptions_pkg.application_exception THEN
2030       RAISE;
2031   WHEN OTHERS THEN
2032        xla_exceptions_pkg.raise_message
2033            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_14');
2034 END AcctDerRule_14;
2035 --
2036 
2037 ---------------------------------------
2038 --
2039 -- PRIVATE FUNCTION
2040 --         AcctDerRule_15
2041 --
2042 ---------------------------------------
2043 FUNCTION AcctDerRule_15 (
2044   p_application_id             IN NUMBER
2045 , p_ae_header_id               IN NUMBER
2046 , p_side                       IN VARCHAR2
2047 , p_override_seg_flag          IN VARCHAR2  
2048 , x_transaction_coa_id         OUT NOCOPY NUMBER
2049 , x_accounting_coa_id          OUT NOCOPY NUMBER
2050 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
2051 , x_flex_value_set_id          OUT NOCOPY NUMBER
2052 , x_value_type_code            OUT NOCOPY VARCHAR2
2053 , x_value_combination_id       OUT NOCOPY NUMBER
2054 , x_value_segment_code         OUT NOCOPY VARCHAR2
2055 )
2056 RETURN VARCHAR2
2057 IS
2058 l_component_type       VARCHAR2(80)  ;
2059 l_component_code       VARCHAR2(30)  ;
2060 l_component_type_code  VARCHAR2(1)   ;
2061 l_component_appl_id    INTEGER       ;
2062 l_amb_context_code     VARCHAR2(30)  ;
2063 l_log_module           VARCHAR2(240) ;
2064 l_output_value         VARCHAR2(30)  ;
2065 BEGIN
2066 IF g_log_enabled THEN
2067       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2068 END IF;
2069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2070 
2071       trace
2072          (p_msg      => 'BEGIN of AcctDerRule_15'
2073          ,p_level    => C_LEVEL_PROCEDURE
2074          ,p_module   => l_log_module);
2075 
2076 END IF;
2077 
2078 l_component_type         := 'AMB_ADR';
2079 l_component_code         := 'FV_570001_UNEXP_APPR_ACCT';
2080 l_component_type_code    := 'S';
2081 l_component_appl_id      :=  200;
2082 l_amb_context_code       := 'DEFAULT';
2083 x_transaction_coa_id     :=  null;
2084 x_accounting_coa_id      :=  null;
2085 x_flexfield_segment_code :=  null;
2086 x_flex_value_set_id      := 1009988 ;
2087 
2088 
2089 --
2090   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2091 
2092       trace
2093          (p_msg      => 'END of AcctDerRule_15'
2094          ,p_level    => C_LEVEL_PROCEDURE
2095          ,p_module   => l_log_module);
2096 
2097   END IF;
2098   x_value_combination_id  :=  null ;
2099   x_value_segment_code    :=  null ;
2100   x_value_type_code       := 'C';
2101   l_output_value          := '570001';
2102   RETURN l_output_value;
2103 
2104 
2105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2106 
2107       trace
2108          (p_msg      => 'END of AcctDerRule_15(invalid)'
2109          ,p_level    => C_LEVEL_PROCEDURE
2110          ,p_module   => l_log_module);
2111 
2112 END IF;
2113 
2114 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2115 x_value_combination_id  := null;
2116 x_value_segment_code    := null;
2117 x_value_type_code       := null;
2118 l_output_value          := null;
2119 xla_accounting_err_pkg.build_message
2120                  (p_appli_s_name            => 'XLA'
2121                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2122                  ,p_token_1                 => 'COMPONENT_NAME'
2123                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2124                                                             l_component_type
2125                                                           , l_component_code
2126                                                           , l_component_type_code
2127                                                           , l_component_appl_id
2128                                                           , l_amb_context_code
2129                                                           )
2130                  ,p_token_2                 => 'OWNER'
2131                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2132                                                         'XLA_OWNER_TYPE'
2133                                                         ,l_component_type_code
2134                                                         )
2135                  ,p_token_3                 => 'PAD_NAME'
2136                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2137                  ,p_token_4                 => 'PAD_OWNER'
2138                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2139                                                         'XLA_OWNER_TYPE'
2140                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2141                                                         )
2142                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2143                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2144                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2145                  ,p_ae_header_id            => NULL
2146 );
2147 RETURN l_output_value;
2151   WHEN OTHERS THEN
2148 EXCEPTION
2149   WHEN xla_exceptions_pkg.application_exception THEN
2150       RAISE;
2152        xla_exceptions_pkg.raise_message
2153            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_15');
2154 END AcctDerRule_15;
2155 --
2156 
2157 ---------------------------------------
2158 --
2159 -- PRIVATE FUNCTION
2160 --         AcctDerRule_16
2161 --
2162 ---------------------------------------
2163 FUNCTION AcctDerRule_16 (
2164   p_application_id             IN NUMBER
2165 , p_ae_header_id               IN NUMBER
2166 , p_side                       IN VARCHAR2
2167 , p_override_seg_flag          IN VARCHAR2 
2168 --Federal Prior Year Flag
2169  , p_source_9            IN VARCHAR2
2170 --Accrue on Receipt Option
2171  , p_source_11            IN VARCHAR2
2172  , p_source_11_meaning    IN VARCHAR2
2173 --Purchase Order Distribution Identifier
2174  , p_source_12            IN NUMBER
2175 , x_transaction_coa_id         OUT NOCOPY NUMBER
2176 , x_accounting_coa_id          OUT NOCOPY NUMBER
2177 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
2178 , x_flex_value_set_id          OUT NOCOPY NUMBER
2179 , x_value_type_code            OUT NOCOPY VARCHAR2
2180 , x_value_combination_id       OUT NOCOPY NUMBER
2181 , x_value_segment_code         OUT NOCOPY VARCHAR2
2182 )
2183 RETURN VARCHAR2
2184 IS
2185 l_component_type       VARCHAR2(80)  ;
2186 l_component_code       VARCHAR2(30)  ;
2187 l_component_type_code  VARCHAR2(1)   ;
2188 l_component_appl_id    INTEGER       ;
2189 l_amb_context_code     VARCHAR2(30)  ;
2190 l_log_module           VARCHAR2(240) ;
2191 l_output_value         VARCHAR2(30)  ;
2192 BEGIN
2193 IF g_log_enabled THEN
2194       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2195 END IF;
2196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2197 
2198       trace
2199          (p_msg      => 'BEGIN of AcctDerRule_16'
2200          ,p_level    => C_LEVEL_PROCEDURE
2201          ,p_module   => l_log_module);
2202 
2203 END IF;
2204 
2205 l_component_type         := 'AMB_ADR';
2206 l_component_code         := 'FV_QUAN_VAR_ACC_CR';
2207 l_component_type_code    := 'S';
2208 l_component_appl_id      :=  200;
2209 l_amb_context_code       := 'DEFAULT';
2210 x_transaction_coa_id     :=  null;
2211 x_accounting_coa_id      :=  null;
2212 x_flexfield_segment_code :=  null;
2213 x_flex_value_set_id      := 1009988 ;
2214 
2215 
2216  IF NVL(p_source_9,'
2217 ') =  'Y' AND 
2218 (NVL(p_source_11,'
2219 ') <>  'Y' AND 
2220 p_source_12 IS NOT NULL )
2221  THEN 
2222 --
2223   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2224 
2225       trace
2226          (p_msg      => 'END of AcctDerRule_16'
2227          ,p_level    => C_LEVEL_PROCEDURE
2228          ,p_module   => l_log_module);
2229 
2230   END IF;
2231   x_value_combination_id  :=  null ;
2232   x_value_segment_code    :=  null ;
2233   x_value_type_code       := 'C';
2234   l_output_value          := '488101';
2235   RETURN l_output_value;
2236 
2237  ELSIF (p_source_12 IS NULL OR 
2238 (NVL(p_source_11,'
2239 ') =  'Y' AND 
2240 p_source_12 IS NOT NULL )
2241 ) AND NVL(p_source_9,'
2242 ') =  'Y'
2243  THEN 
2244 --
2245   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2246 
2247       trace
2248          (p_msg      => 'END of AcctDerRule_16'
2249          ,p_level    => C_LEVEL_PROCEDURE
2250          ,p_module   => l_log_module);
2251 
2252   END IF;
2253   x_value_combination_id  :=  null ;
2254   x_value_segment_code    :=  null ;
2255   x_value_type_code       := 'C';
2256   l_output_value          := '498101';
2257   RETURN l_output_value;
2258 
2259  ELSIF NVL(p_source_9,'
2260 ') =  'N'
2261  THEN 
2262 --
2263   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2264 
2265       trace
2266          (p_msg      => 'END of AcctDerRule_16'
2267          ,p_level    => C_LEVEL_PROCEDURE
2268          ,p_module   => l_log_module);
2269 
2270   END IF;
2271   x_value_combination_id  :=  null ;
2272   x_value_segment_code    :=  null ;
2273   x_value_type_code       := 'C';
2274   l_output_value          := '490101';
2275   RETURN l_output_value;
2276 
2277  ELSE 
2278     IF p_override_seg_flag = 'Y' THEN 
2279        RETURN '#$NO_OVERRIDE#$';
2280     END IF;
2281  END IF;
2282 
2283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2284 
2285       trace
2286          (p_msg      => 'END of AcctDerRule_16(invalid)'
2287          ,p_level    => C_LEVEL_PROCEDURE
2288          ,p_module   => l_log_module);
2289 
2290 END IF;
2291 
2292 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2293 x_value_combination_id  := null;
2294 x_value_segment_code    := null;
2295 x_value_type_code       := null;
2296 l_output_value          := null;
2297 xla_accounting_err_pkg.build_message
2298                  (p_appli_s_name            => 'XLA'
2299                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2300                  ,p_token_1                 => 'COMPONENT_NAME'
2301                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2302                                                             l_component_type
2306                                                           , l_amb_context_code
2303                                                           , l_component_code
2304                                                           , l_component_type_code
2305                                                           , l_component_appl_id
2307                                                           )
2308                  ,p_token_2                 => 'OWNER'
2309                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2310                                                         'XLA_OWNER_TYPE'
2311                                                         ,l_component_type_code
2312                                                         )
2313                  ,p_token_3                 => 'PAD_NAME'
2314                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2315                  ,p_token_4                 => 'PAD_OWNER'
2316                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2317                                                         'XLA_OWNER_TYPE'
2318                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2319                                                         )
2320                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2321                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2322                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2323                  ,p_ae_header_id            => NULL
2324 );
2325 RETURN l_output_value;
2326 EXCEPTION
2327   WHEN xla_exceptions_pkg.application_exception THEN
2328       RAISE;
2329   WHEN OTHERS THEN
2330        xla_exceptions_pkg.raise_message
2331            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctDerRule_16');
2332 END AcctDerRule_16;
2333 --
2334 
2335 ---------------------------------------
2336 --
2337 -- PRIVATE FUNCTION
2338 --         AcctLineType_17
2339 --
2340 ---------------------------------------
2341 PROCEDURE AcctLineType_17 (
2342   p_application_id        IN NUMBER
2343  ,p_event_id              IN NUMBER
2344  ,p_calculate_acctd_flag  IN VARCHAR2
2345  ,p_calculate_g_l_flag    IN VARCHAR2
2346  ,p_actual_flag           IN OUT VARCHAR2
2347  ,p_balance_type_code     OUT VARCHAR2
2348  ,p_gain_or_loss_ref      OUT VARCHAR2
2349  
2350 --Invoice Distribution Description
2351  , p_source_1            IN VARCHAR2
2352 --Invoice Distribution Account
2353  , p_source_2            IN NUMBER
2354 --Federal Anticipation
2355  , p_source_3            IN VARCHAR2
2356 --Invoice Distribution Type
2357  , p_source_8            IN VARCHAR2
2358  , p_source_8_meaning    IN VARCHAR2
2359 --Federal Prior Year Flag
2360  , p_source_9            IN VARCHAR2
2361 --Invoice Type
2362  , p_source_13            IN VARCHAR2
2363  , p_source_13_meaning    IN VARCHAR2
2364 --Federal Adjustment Type
2365  , p_source_14            IN VARCHAR2
2366 --Accounting Reversal Indicator
2367  , p_source_15            IN VARCHAR2
2368 --Distribution Link Type
2369  , p_source_17            IN VARCHAR2
2370 --Allocation to Main Distribution Identifier
2371  , p_source_19            IN NUMBER
2372 --Invoice Identifier
2373  , p_source_20            IN NUMBER
2374 --Business Flow Accounts Payable Application Identifier
2375  , p_source_21            IN NUMBER
2376 --Business Flow Invoice Distribution Type
2377  , p_source_22            IN VARCHAR2
2378 --Business Flow Invoice Entity Code
2379  , p_source_23            IN VARCHAR2
2380 --Business Flow Invoice Distribution Identifier
2381  , p_source_24            IN NUMBER
2382 --Business Flow Invoice Identifier
2383  , p_source_25            IN NUMBER
2384 --Invoice Distribution Identifier
2385  , p_source_26            IN NUMBER
2386 --Payables Encumbrance Upgrade Credit Account
2387  , p_source_27            IN NUMBER
2388 --Payables Encumbrance Upgrade Credit Amount
2389  , p_source_28            IN NUMBER
2390 --Invoice Currency Code
2391  , p_source_29            IN VARCHAR2
2392 --Payables Encumbrance Upgrade Credit Base Amount
2393  , p_source_30            IN NUMBER
2394 --Payables Encumbrance Upgrade Debit Account
2395  , p_source_31            IN NUMBER
2396 --Payables Encumbrance Upgrade Debit Amount
2397  , p_source_32            IN NUMBER
2398 --Payables Encumbrance Upgrade Debit Base Amount
2399  , p_source_33            IN NUMBER
2400 --Payables Encumbrance Upgrade Option
2401  , p_source_34            IN VARCHAR2
2402 --Federal Anticipated Amt
2403  , p_source_35            IN NUMBER
2404 --Invoice Exchange Date
2405  , p_source_36            IN DATE
2406 --Invoice Exchange Rate
2407  , p_source_37            IN NUMBER
2408 --Invoice Exchange Rate Type
2409  , p_source_38            IN VARCHAR2
2410 --Deferred Accounting End Date
2411  , p_source_39            IN DATE
2412 --Deferred Accounting Option
2413  , p_source_40            IN VARCHAR2
2414 --Deferred Accounting Start Date
2415  , p_source_41            IN DATE
2416 --Override Accounted Amount Indicator
2417  , p_source_42            IN VARCHAR2
2418  , p_source_42_meaning    IN VARCHAR2
2419 --Invoice Supplier Identifier
2420  , p_source_43            IN NUMBER
2421 --Invoice Supplier Site Identifier
2422  , p_source_44            IN NUMBER
2423 --Third Party Type
2427 --Invoice Distribution Statistical Amount
2424  , p_source_45            IN VARCHAR2
2425 --Parent Reversal Identifier
2426  , p_source_46            IN NUMBER
2428  , p_source_47            IN NUMBER
2429 --Invoice Distribution Tax Line Identifier
2430  , p_source_48            IN NUMBER
2431 --Invoice Distribution Tax Distribution Identifier from Tax
2432  , p_source_49            IN NUMBER
2433 --Invoice Distribution Summary Tax Line Identifier
2434  , p_source_50            IN NUMBER
2435 --Payables Upgrade Credit Encumbrance Type Identifier
2436  , p_source_51            IN NUMBER
2437 --Payables Upgrade Debit Encumbrance Type Identifier
2438  , p_source_52            IN NUMBER
2439 )
2440 IS
2441 
2442 l_component_type              VARCHAR2(80);
2443 l_component_code              VARCHAR2(30);
2444 l_component_type_code         VARCHAR2(1);
2445 l_component_appl_id           INTEGER;
2446 l_amb_context_code            VARCHAR2(30);
2447 l_entity_code                 VARCHAR2(30);
2448 l_event_class_code            VARCHAR2(30);
2449 l_ae_header_id                NUMBER;
2450 l_event_type_code             VARCHAR2(30);
2451 l_line_definition_code        VARCHAR2(30);
2452 l_line_definition_owner_code  VARCHAR2(1);
2453 --
2454 -- adr variables
2455 l_segment                     VARCHAR2(30);
2456 l_ccid                        NUMBER;
2457 l_adr_transaction_coa_id      NUMBER;
2458 l_adr_accounting_coa_id       NUMBER;
2459 l_adr_flexfield_segment_code  VARCHAR2(30);
2460 l_adr_flex_value_set_id       NUMBER;
2461 l_adr_value_type_code         VARCHAR2(30);
2462 l_adr_value_combination_id    NUMBER;
2463 l_adr_value_segment_code      VARCHAR2(30);
2464 
2465 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2466 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2467 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2468 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2469 
2470 -- 4262811 Variables ------------------------------------------------------------------------------------------
2471 l_entered_amt_idx             NUMBER;
2472 l_accted_amt_idx              NUMBER;
2473 l_acc_rev_flag                VARCHAR2(1);
2474 l_accrual_line_num            NUMBER;
2475 l_tmp_amt                     NUMBER;
2476 l_acc_rev_natural_side_code   VARCHAR2(1);
2477 
2478 l_num_entries                 NUMBER;
2479 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2480 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2481 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2482 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2483 l_recog_line_1                NUMBER;
2484 l_recog_line_2                NUMBER;
2485 
2486 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2487 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2488 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2489 
2490 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2491 
2492 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2493 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2494 
2495 ---------------------------------------------------------------------------------------------------------------
2496 
2497 
2498 --
2499 -- bulk performance
2500 --
2501 l_balance_type_code           VARCHAR2(1);
2502 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2503 l_log_module                  VARCHAR2(240);
2504 
2505 --
2506 -- Upgrade strategy
2507 --
2508 l_actual_upg_option           VARCHAR2(1);
2509 l_enc_upg_option           VARCHAR2(1);
2510 
2511 --
2512 BEGIN
2513 --
2514 IF g_log_enabled THEN
2515       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
2516 END IF;
2517 --
2518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2519 
2520       trace
2521          (p_msg      => 'BEGIN of AcctLineType_17'
2522          ,p_level    => C_LEVEL_PROCEDURE
2523          ,p_module   => l_log_module);
2524 
2525 END IF;
2526 --
2527 l_component_type             := 'AMB_JLT';
2528 l_component_code             := 'FV_AP_CM_ DWD_ANPT_PYA_CR';
2529 l_component_type_code        := 'S';
2530 l_component_appl_id          :=  200;
2531 l_amb_context_code           := 'DEFAULT';
2532 l_entity_code                := 'AP_INVOICES';
2533 l_event_class_code           := 'CREDIT MEMOS';
2534 l_event_type_code            := 'CREDIT MEMOS_ALL';
2535 l_line_definition_owner_code := 'S';
2536 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
2537 --
2538 l_balance_type_code          := 'A';
2539 l_segment                     := NULL;
2540 l_ccid                        := NULL;
2541 l_adr_transaction_coa_id      := NULL;
2542 l_adr_accounting_coa_id       := NULL;
2543 l_adr_flexfield_segment_code  := NULL;
2544 l_adr_flex_value_set_id       := NULL;
2545 l_adr_value_type_code         := NULL;
2546 l_adr_value_combination_id    := NULL;
2547 l_adr_value_segment_code      := NULL;
2548 
2549 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2550 l_bflow_class_code           := '';    -- 4219869 Business Flow
2551 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2555 l_bflow_applied_to_amt       := NULL; -- 5132302
2552 l_budgetary_control_flag     := 'Y';
2553 
2554 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2556 l_entered_amt_idx            := NULL;          -- 4262811
2557 l_accted_amt_idx             := NULL;          -- 4262811
2558 l_acc_rev_flag               := NULL;          -- 4262811
2559 l_accrual_line_num           := NULL;          -- 4262811
2560 l_tmp_amt                    := NULL;          -- 4262811
2561 --
2562  
2563 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2564     l_balance_type_code <> 'B' THEN
2565 IF NVL(p_source_9,'
2566 ') =  'Y' AND 
2567 NVL(p_source_13,'
2568 ') =  'CREDIT' AND 
2569 (NVL(p_source_8,'
2570 ') =  'ITEM' OR 
2571 NVL(p_source_8,'
2572 ') =  'ACCRUAL' OR 
2573 NVL(p_source_8,'
2574 ') =  'FREIGHT' OR 
2575 NVL(p_source_8,'
2576 ') =  'MISCELLANEOUS' OR 
2577 NVL(p_source_8,'
2578 ') =  'IPV') AND 
2579 NVL(p_source_14,'
2580 ') =  'Downward' AND 
2581 (NVL(p_source_3,'
2582 ') =  'Anticipated' OR 
2583 NVL(p_source_3,'
2584 ') =  'Partial')
2585  THEN 
2586 
2587    --
2588    XLA_AE_LINES_PKG.SetNewLine;
2589 
2590    p_balance_type_code          := l_balance_type_code;
2591    -- set the flag so later we will know whether the gain loss line needs to be created
2592    
2593    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2594      p_actual_flag :='A';
2595    END IF;
2596 
2597    --
2598    -- bulk performance
2599    --
2600    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2601                                       p_header_num   => 0); -- 4262811
2602    --
2603    -- set accounting line options
2604    --
2605    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2606            p_natural_side_code          => 'D'
2607          , p_gain_or_loss_flag          => 'N'
2608          , p_gl_transfer_mode_code      => 'S'
2609          , p_acct_entry_type_code       => 'A'
2610          , p_switch_side_flag           => 'N'
2611          , p_merge_duplicate_code       => 'N'
2612          );
2613    --
2614    l_acc_rev_natural_side_code := 'C';  -- 4262811
2615    -- 
2616    --
2617    -- set accounting line type info
2618    --
2619    xla_ae_lines_pkg.SetAcctLineType
2620       (p_component_type             => l_component_type
2621       ,p_event_type_code            => l_event_type_code
2622       ,p_line_definition_owner_code => l_line_definition_owner_code
2623       ,p_line_definition_code       => l_line_definition_code
2624       ,p_accounting_line_code       => l_component_code
2625       ,p_accounting_line_type_code  => l_component_type_code
2626       ,p_accounting_line_appl_id    => l_component_appl_id
2627       ,p_amb_context_code           => l_amb_context_code
2628       ,p_entity_code                => l_entity_code
2629       ,p_event_class_code           => l_event_class_code);
2630    --
2631    -- set accounting class
2632    --
2633    xla_ae_lines_pkg.SetAcctClass(
2634            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
2635          , p_ae_header_id           => l_ae_header_id
2636          );
2637 
2638    --
2639    -- set rounding class
2640    --
2641    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2642                       'ACCOUNTSPAYABLE';
2643 
2644    --
2645    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2646    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2647    --
2648    -- bulk performance
2649    --
2650    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2651 
2652    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2653       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2654 
2655    -- 4955764
2656    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2657       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2658 
2659    -- 4458381 Public Sector Enh
2660    
2661    --
2662    -- set accounting attributes for the line type
2663    --
2664    l_entered_amt_idx := 23;
2665    l_accted_amt_idx  := 28;
2666    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2667    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2668    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
2669    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
2670    l_rec_acct_attrs.array_num_value(2)  := 
2671 xla_ae_sources_pkg.GetSystemSourceNum(
2672    p_source_code           => 'XLA_EVENT_APPL_ID'
2673  , p_source_type_code      => 'Y'
2674  , p_source_application_id =>  602
2675 );
2676    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
2677    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
2678    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
2679    l_rec_acct_attrs.array_char_value(4)  := 
2680 xla_ae_sources_pkg.GetSystemSourceChar(
2681    p_source_code           => 'XLA_ENTITY_CODE'
2682  , p_source_type_code      => 'Y'
2683  , p_source_application_id =>  602
2684 );
2685    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
2686    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
2687    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
2688    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
2692    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
2689    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
2690    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
2691    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2693    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
2694    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
2695    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
2696    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
2697    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2698    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
2699    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
2700    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
2701    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
2702    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
2703    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
2704    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
2705    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
2706    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
2707    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
2708    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
2709    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
2710    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
2711    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
2712    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
2713    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
2714    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
2715    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
2716    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
2717    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
2718    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
2719    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
2720    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
2721    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
2722    l_rec_acct_attrs.array_num_value(23)  := p_source_35;
2723    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
2724    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
2725    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
2726    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
2727    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
2728    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
2729    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
2730    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
2731    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
2732    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
2733    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
2734    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
2735    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
2736    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
2737    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
2738    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
2739    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
2740    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
2741    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
2742    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
2743    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
2744    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
2745    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
2746    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
2747    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
2748    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
2749    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
2750    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
2751    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
2752    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
2753    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
2754    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
2755    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
2756    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
2757    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
2758    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
2759    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
2760    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
2761    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
2762    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
2763 
2764    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2765    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2766 
2767    ---------------------------------------------------------------------------------------------------------------
2768    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2769    ---------------------------------------------------------------------------------------------------------------
2770    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2771 
2772    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2776          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2773    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2774 
2775    IF xla_accounting_cache_pkg.GetValueChar
2777          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2778    AND l_bflow_method_code = 'PRIOR_ENTRY'
2779 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2780    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2781          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2782        )
2783    THEN
2784          xla_ae_lines_pkg.BflowUpgEntry
2785            (p_business_method_code    => l_bflow_method_code
2786            ,p_business_class_code     => l_bflow_class_code
2787            ,p_balance_type            => l_balance_type_code);
2788    ELSE
2789       NULL;
2790 -- No business flow processing for business flow method of NONE.
2791    END IF;
2792 
2793    --
2794    -- call analytical criteria
2795    --
2796    
2797    --
2798    -- call description
2799    --
2800    
2801 xla_ae_lines_pkg.SetLineDescription(
2802    p_ae_header_id => l_ae_header_id
2803   ,p_description  => Description_2 (
2804      p_application_id         => p_application_id
2805    , p_ae_header_id           => l_ae_header_id 
2806 , p_source_1 => p_source_1
2807    )
2808 );
2809 
2810 
2811    --
2812    -- call ADRs
2813    -- Bug 4922099
2814    --
2815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2816         (NVL(l_actual_upg_option, 'N') = 'O') OR
2817         (NVL(l_enc_upg_option, 'N') = 'O')
2818       )
2819    THEN
2820    NULL;
2821    --
2822    --
2823    
2824   l_ccid := AcctDerRule_3(
2825            p_application_id           => p_application_id
2826          , p_ae_header_id             => l_ae_header_id 
2827 , p_source_2 => p_source_2
2828          , x_transaction_coa_id       => l_adr_transaction_coa_id
2829          , x_accounting_coa_id        => l_adr_accounting_coa_id
2830          , x_value_type_code          => l_adr_value_type_code
2831          , p_side                     => 'NA'
2832    );
2833 
2834    xla_ae_lines_pkg.set_ccid(
2835     p_code_combination_id          => l_ccid
2836   , p_value_type_code              => l_adr_value_type_code
2837   , p_transaction_coa_id           => l_adr_transaction_coa_id
2838   , p_accounting_coa_id            => l_adr_accounting_coa_id
2839   , p_adr_code                     => 'AP_INVOICE_DIST'
2840   , p_adr_type_code                => 'S'
2841   , p_component_type               => l_component_type
2842   , p_component_code               => l_component_code
2843   , p_component_type_code          => l_component_type_code
2844   , p_component_appl_id            => l_component_appl_id
2845   , p_amb_context_code             => l_amb_context_code
2846   , p_side                         => 'NA'
2847   );
2848 
2849 
2850    l_segment := AcctDerRule_5(
2851            p_application_id           => p_application_id
2852          , p_ae_header_id             => l_ae_header_id 
2853 , p_source_3 => p_source_3
2854          , x_transaction_coa_id       => l_adr_transaction_coa_id
2855          , x_accounting_coa_id        => l_adr_accounting_coa_id
2856          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
2857          , x_flex_value_set_id        => l_adr_flex_value_set_id
2858          , x_value_type_code          => l_adr_value_type_code
2859          , x_value_combination_id     => l_adr_value_combination_id
2860          , x_value_segment_code       => l_adr_value_segment_code
2861          , p_side                     => 'NA'
2862          , p_override_seg_flag        => 'Y'
2863    );
2864 
2865    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
2866 
2867       xla_ae_lines_pkg.set_segment(
2868           p_to_segment_code         => 'GL_ACCOUNT'
2869         , p_segment_value           => l_segment
2870         , p_from_segment_code       => l_adr_value_segment_code
2871         , p_from_combination_id     => l_adr_value_combination_id
2872         , p_value_type_code         => l_adr_value_type_code
2873         , p_transaction_coa_id      => l_adr_transaction_coa_id
2874         , p_accounting_coa_id       => l_adr_accounting_coa_id
2875         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
2876         , p_flex_value_set_id       => l_adr_flex_value_set_id
2877         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
2878         , p_adr_type_code           => 'S'
2879         , p_component_type          => l_component_type
2880         , p_component_code          => l_component_code
2881         , p_component_type_code     => l_component_type_code
2882         , p_component_appl_id       => l_component_appl_id
2883         , p_amb_context_code        => l_amb_context_code
2884         , p_entity_code             => 'AP_INVOICES'
2885         , p_event_class_code        => 'CREDIT MEMOS'
2886         , p_side                    => 'NA'
2887         );
2888 
2889   END IF;
2890 
2891    --
2892    --
2893    END IF;
2894    --
2895    -- Bug 4922099
2896    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2897           (NVL(l_enc_upg_option, 'N') = 'O')
2898         ) AND
2899         (l_bflow_method_code = 'PRIOR_ENTRY')
2900       )
2901    THEN
2902       IF
2903       --
2904       1 = 2
2905       --
2906       THEN
2910                                     ,p_token_1                 => 'LINE_NUMBER'
2907       xla_accounting_err_pkg.build_message
2908                                     (p_appli_s_name            => 'XLA'
2909                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2911                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2912                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2913                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2914                                                                              l_component_type
2915                                                                             ,l_component_code
2916                                                                             ,l_component_type_code
2917                                                                             ,l_component_appl_id
2918                                                                             ,l_amb_context_code
2919                                                                             ,l_entity_code
2920                                                                             ,l_event_class_code
2921                                                                            )
2922                                     ,p_token_3                 => 'OWNER'
2923                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2924                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2925                                                                           ,p_lookup_code    => l_component_type_code
2926                                                                          )
2927                                     ,p_token_4                 => 'PRODUCT_NAME'
2928                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2929                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2930                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2931                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2932                                     ,p_ae_header_id            =>  NULL
2933                                        );
2934 
2935         IF (C_LEVEL_ERROR>= g_log_level) THEN
2936                  trace
2937                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2938                       ,p_level    => C_LEVEL_ERROR
2939                       ,p_module   => l_log_module);
2940         END IF;
2941       END IF;
2942    END IF;
2943    --
2944    --
2945    ------------------------------------------------------------------------------------------------
2946    -- 4219869 Business Flow
2947    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2948    -- Prior Entry.  Currently, the following code is always generated.
2949    ------------------------------------------------------------------------------------------------
2950    XLA_AE_LINES_PKG.ValidateCurrentLine;
2951 
2952    ------------------------------------------------------------------------------------
2953    -- 4219869 Business Flow
2954    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2955    ------------------------------------------------------------------------------------
2956    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2957 
2958    ----------------------------------------------------------------------------------
2959    -- 4219869 Business Flow
2960    -- Update journal entry status -- Need to generate this within IF <condition>
2961    ----------------------------------------------------------------------------------
2962    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2963          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2964          ,p_balance_type_code => l_balance_type_code
2965          );
2966 
2967    -------------------------------------------------------------------------------------------
2968    -- 4262811 - Generate the Accrual Reversal lines
2969    -------------------------------------------------------------------------------------------
2970    BEGIN
2971       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2972                               (g_array_event(p_event_id).array_value_num('header_index'));
2973       IF l_acc_rev_flag IS NULL THEN
2974          l_acc_rev_flag := 'N';
2975       END IF;
2976    EXCEPTION
2977       WHEN OTHERS THEN
2978          l_acc_rev_flag := 'N';
2979    END;
2980    --
2981    IF (l_acc_rev_flag = 'Y') THEN
2982 
2983        -- 4645092  ------------------------------------------------------------------------------
2984        -- To allow MPA report to determine if it should generate report process
2985        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2986        ------------------------------------------------------------------------------------------
2987 
2988        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2989        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2990    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2991    -- call ADRs
2992    -- Bug 4922099
2993    --
2994    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2995         (NVL(l_actual_upg_option, 'N') = 'O') OR
2996         (NVL(l_enc_upg_option, 'N') = 'O')
2997       )
2998    THEN
2999    NULL;
3000    --
3004            p_application_id           => p_application_id
3001    --
3002    
3003   l_ccid := AcctDerRule_3(
3005          , p_ae_header_id             => l_ae_header_id 
3006 , p_source_2 => p_source_2
3007          , x_transaction_coa_id       => l_adr_transaction_coa_id
3008          , x_accounting_coa_id        => l_adr_accounting_coa_id
3009          , x_value_type_code          => l_adr_value_type_code
3010          , p_side                     => 'NA'
3011    );
3012 
3013    xla_ae_lines_pkg.set_ccid(
3014     p_code_combination_id          => l_ccid
3015   , p_value_type_code              => l_adr_value_type_code
3016   , p_transaction_coa_id           => l_adr_transaction_coa_id
3017   , p_accounting_coa_id            => l_adr_accounting_coa_id
3018   , p_adr_code                     => 'AP_INVOICE_DIST'
3019   , p_adr_type_code                => 'S'
3020   , p_component_type               => l_component_type
3021   , p_component_code               => l_component_code
3022   , p_component_type_code          => l_component_type_code
3023   , p_component_appl_id            => l_component_appl_id
3024   , p_amb_context_code             => l_amb_context_code
3025   , p_side                         => 'NA'
3026   );
3027 
3028 
3029    l_segment := AcctDerRule_5(
3030            p_application_id           => p_application_id
3031          , p_ae_header_id             => l_ae_header_id 
3032 , p_source_3 => p_source_3
3033          , x_transaction_coa_id       => l_adr_transaction_coa_id
3034          , x_accounting_coa_id        => l_adr_accounting_coa_id
3035          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
3036          , x_flex_value_set_id        => l_adr_flex_value_set_id
3037          , x_value_type_code          => l_adr_value_type_code
3038          , x_value_combination_id     => l_adr_value_combination_id
3039          , x_value_segment_code       => l_adr_value_segment_code
3040          , p_side                     => 'NA'
3041          , p_override_seg_flag        => 'Y'
3042    );
3043 
3044    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
3045 
3046       xla_ae_lines_pkg.set_segment(
3047           p_to_segment_code         => 'GL_ACCOUNT'
3048         , p_segment_value           => l_segment
3049         , p_from_segment_code       => l_adr_value_segment_code
3050         , p_from_combination_id     => l_adr_value_combination_id
3051         , p_value_type_code         => l_adr_value_type_code
3052         , p_transaction_coa_id      => l_adr_transaction_coa_id
3053         , p_accounting_coa_id       => l_adr_accounting_coa_id
3054         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
3055         , p_flex_value_set_id       => l_adr_flex_value_set_id
3056         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
3057         , p_adr_type_code           => 'S'
3058         , p_component_type          => l_component_type
3059         , p_component_code          => l_component_code
3060         , p_component_type_code     => l_component_type_code
3061         , p_component_appl_id       => l_component_appl_id
3062         , p_amb_context_code        => l_amb_context_code
3063         , p_entity_code             => 'AP_INVOICES'
3064         , p_event_class_code        => 'CREDIT MEMOS'
3065         , p_side                    => 'NA'
3066         );
3067 
3068   END IF;
3069 
3070    --
3071    --
3072    END IF;
3073 
3074        --
3075        -- Update the line information that should be overwritten
3076        --
3077        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3078                                          p_header_num   => 1);
3079        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3080 
3081        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3082 
3083        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3084           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3085        END IF;
3086 
3087       --
3088       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3089       --
3090       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3091           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3092       ELSE
3093           ---------------------------------------------------------------------------------------------------
3094           -- 4262811a Switch Sign
3095           ---------------------------------------------------------------------------------------------------
3096           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3097           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3098                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3099           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3100                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3101           -- 5132302
3102           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3103                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3104 
3105       END IF;
3106 
3107       -- 4955764
3111 
3108       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3109       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3110 
3112       XLA_AE_LINES_PKG.ValidateCurrentLine;
3113       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3114 
3115       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3116                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3117                ,p_balance_type_code => l_balance_type_code);
3118 
3119    END IF;
3120 
3121    -----------------------------------------------------------------------------------------
3122    -- 4262811 Multiperiod Accounting
3123    -----------------------------------------------------------------------------------------
3124      -- No MPA option is assigned.
3125 
3126 
3127 END IF;
3128 END IF;
3129 --
3130 
3131 --
3132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3133    trace
3134       (p_msg      => 'END of AcctLineType_17'
3135       ,p_level    => C_LEVEL_PROCEDURE
3136       ,p_module   => l_log_module);
3137 END IF;
3138 --
3139 EXCEPTION
3140   WHEN xla_exceptions_pkg.application_exception THEN
3141       RAISE;
3142   WHEN OTHERS THEN
3143        xla_exceptions_pkg.raise_message
3144            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_17');
3145 END AcctLineType_17;
3146 --
3147 
3148 ---------------------------------------
3149 --
3150 -- PRIVATE FUNCTION
3151 --         AcctLineType_18
3152 --
3153 ---------------------------------------
3154 PROCEDURE AcctLineType_18 (
3155   p_application_id        IN NUMBER
3156  ,p_event_id              IN NUMBER
3157  ,p_calculate_acctd_flag  IN VARCHAR2
3158  ,p_calculate_g_l_flag    IN VARCHAR2
3159  ,p_actual_flag           IN OUT VARCHAR2
3160  ,p_balance_type_code     OUT VARCHAR2
3161  ,p_gain_or_loss_ref      OUT VARCHAR2
3162  
3163 --Invoice Distribution Description
3164  , p_source_1            IN VARCHAR2
3165 --Invoice Distribution Account
3166  , p_source_2            IN NUMBER
3167 --Invoice Distribution Type
3168  , p_source_8            IN VARCHAR2
3169  , p_source_8_meaning    IN VARCHAR2
3170 --Federal Prior Year Flag
3171  , p_source_9            IN VARCHAR2
3172 --Invoice Type
3173  , p_source_13            IN VARCHAR2
3174  , p_source_13_meaning    IN VARCHAR2
3175 --Federal Adjustment Type
3176  , p_source_14            IN VARCHAR2
3177 --Accounting Reversal Indicator
3178  , p_source_15            IN VARCHAR2
3179 --Distribution Link Type
3180  , p_source_17            IN VARCHAR2
3181 --Allocation to Main Distribution Identifier
3182  , p_source_19            IN NUMBER
3183 --Invoice Identifier
3184  , p_source_20            IN NUMBER
3185 --Business Flow Accounts Payable Application Identifier
3186  , p_source_21            IN NUMBER
3187 --Business Flow Invoice Distribution Type
3188  , p_source_22            IN VARCHAR2
3189 --Business Flow Invoice Entity Code
3190  , p_source_23            IN VARCHAR2
3191 --Business Flow Invoice Distribution Identifier
3192  , p_source_24            IN NUMBER
3193 --Business Flow Invoice Identifier
3194  , p_source_25            IN NUMBER
3195 --Invoice Distribution Identifier
3196  , p_source_26            IN NUMBER
3197 --Payables Encumbrance Upgrade Credit Account
3198  , p_source_27            IN NUMBER
3199 --Payables Encumbrance Upgrade Credit Amount
3200  , p_source_28            IN NUMBER
3201 --Invoice Currency Code
3202  , p_source_29            IN VARCHAR2
3203 --Payables Encumbrance Upgrade Credit Base Amount
3204  , p_source_30            IN NUMBER
3205 --Payables Encumbrance Upgrade Debit Account
3206  , p_source_31            IN NUMBER
3207 --Payables Encumbrance Upgrade Debit Amount
3208  , p_source_32            IN NUMBER
3209 --Payables Encumbrance Upgrade Debit Base Amount
3210  , p_source_33            IN NUMBER
3211 --Payables Encumbrance Upgrade Option
3212  , p_source_34            IN VARCHAR2
3213 --Federal Anticipated Amt
3214  , p_source_35            IN NUMBER
3215 --Invoice Exchange Date
3216  , p_source_36            IN DATE
3217 --Invoice Exchange Rate
3218  , p_source_37            IN NUMBER
3219 --Invoice Exchange Rate Type
3220  , p_source_38            IN VARCHAR2
3221 --Deferred Accounting End Date
3222  , p_source_39            IN DATE
3223 --Deferred Accounting Option
3224  , p_source_40            IN VARCHAR2
3225 --Deferred Accounting Start Date
3226  , p_source_41            IN DATE
3227 --Override Accounted Amount Indicator
3228  , p_source_42            IN VARCHAR2
3229  , p_source_42_meaning    IN VARCHAR2
3230 --Invoice Supplier Identifier
3231  , p_source_43            IN NUMBER
3232 --Invoice Supplier Site Identifier
3233  , p_source_44            IN NUMBER
3234 --Third Party Type
3235  , p_source_45            IN VARCHAR2
3236 --Parent Reversal Identifier
3237  , p_source_46            IN NUMBER
3238 --Invoice Distribution Statistical Amount
3239  , p_source_47            IN NUMBER
3240 --Invoice Distribution Tax Line Identifier
3241  , p_source_48            IN NUMBER
3242 --Invoice Distribution Tax Distribution Identifier from Tax
3243  , p_source_49            IN NUMBER
3244 --Invoice Distribution Summary Tax Line Identifier
3245  , p_source_50            IN NUMBER
3249  , p_source_52            IN NUMBER
3246 --Payables Upgrade Credit Encumbrance Type Identifier
3247  , p_source_51            IN NUMBER
3248 --Payables Upgrade Debit Encumbrance Type Identifier
3250 --Invoice Distribution Encumbrance Ledger Amount
3251  , p_source_53            IN NUMBER
3252 )
3253 IS
3254 
3255 l_component_type              VARCHAR2(80);
3256 l_component_code              VARCHAR2(30);
3257 l_component_type_code         VARCHAR2(1);
3258 l_component_appl_id           INTEGER;
3259 l_amb_context_code            VARCHAR2(30);
3260 l_entity_code                 VARCHAR2(30);
3261 l_event_class_code            VARCHAR2(30);
3262 l_ae_header_id                NUMBER;
3263 l_event_type_code             VARCHAR2(30);
3264 l_line_definition_code        VARCHAR2(30);
3265 l_line_definition_owner_code  VARCHAR2(1);
3266 --
3267 -- adr variables
3268 l_segment                     VARCHAR2(30);
3269 l_ccid                        NUMBER;
3270 l_adr_transaction_coa_id      NUMBER;
3271 l_adr_accounting_coa_id       NUMBER;
3272 l_adr_flexfield_segment_code  VARCHAR2(30);
3273 l_adr_flex_value_set_id       NUMBER;
3274 l_adr_value_type_code         VARCHAR2(30);
3275 l_adr_value_combination_id    NUMBER;
3276 l_adr_value_segment_code      VARCHAR2(30);
3277 
3278 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3279 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3280 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3281 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3282 
3283 -- 4262811 Variables ------------------------------------------------------------------------------------------
3284 l_entered_amt_idx             NUMBER;
3285 l_accted_amt_idx              NUMBER;
3286 l_acc_rev_flag                VARCHAR2(1);
3287 l_accrual_line_num            NUMBER;
3288 l_tmp_amt                     NUMBER;
3289 l_acc_rev_natural_side_code   VARCHAR2(1);
3290 
3291 l_num_entries                 NUMBER;
3292 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3293 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3294 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3295 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3296 l_recog_line_1                NUMBER;
3297 l_recog_line_2                NUMBER;
3298 
3299 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3300 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3301 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3302 
3303 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3304 
3305 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3306 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3307 
3308 ---------------------------------------------------------------------------------------------------------------
3309 
3310 
3311 --
3312 -- bulk performance
3313 --
3314 l_balance_type_code           VARCHAR2(1);
3315 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3316 l_log_module                  VARCHAR2(240);
3317 
3318 --
3319 -- Upgrade strategy
3320 --
3321 l_actual_upg_option           VARCHAR2(1);
3322 l_enc_upg_option           VARCHAR2(1);
3323 
3324 --
3325 BEGIN
3326 --
3327 IF g_log_enabled THEN
3328       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
3329 END IF;
3330 --
3331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3332 
3333       trace
3334          (p_msg      => 'BEGIN of AcctLineType_18'
3335          ,p_level    => C_LEVEL_PROCEDURE
3336          ,p_module   => l_log_module);
3337 
3338 END IF;
3339 --
3340 l_component_type             := 'AMB_JLT';
3341 l_component_code             := 'FV_AP_CM_ DWD_ANPT_PYA_DR';
3342 l_component_type_code        := 'S';
3343 l_component_appl_id          :=  200;
3344 l_amb_context_code           := 'DEFAULT';
3345 l_entity_code                := 'AP_INVOICES';
3346 l_event_class_code           := 'CREDIT MEMOS';
3347 l_event_type_code            := 'CREDIT MEMOS_ALL';
3348 l_line_definition_owner_code := 'S';
3349 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
3350 --
3351 l_balance_type_code          := 'A';
3352 l_segment                     := NULL;
3353 l_ccid                        := NULL;
3354 l_adr_transaction_coa_id      := NULL;
3355 l_adr_accounting_coa_id       := NULL;
3356 l_adr_flexfield_segment_code  := NULL;
3357 l_adr_flex_value_set_id       := NULL;
3358 l_adr_value_type_code         := NULL;
3359 l_adr_value_combination_id    := NULL;
3360 l_adr_value_segment_code      := NULL;
3361 
3362 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3363 l_bflow_class_code           := '';    -- 4219869 Business Flow
3364 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3365 l_budgetary_control_flag     := 'Y';
3366 
3367 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3368 l_bflow_applied_to_amt       := NULL; -- 5132302
3369 l_entered_amt_idx            := NULL;          -- 4262811
3370 l_accted_amt_idx             := NULL;          -- 4262811
3371 l_acc_rev_flag               := NULL;          -- 4262811
3372 l_accrual_line_num           := NULL;          -- 4262811
3376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3373 l_tmp_amt                    := NULL;          -- 4262811
3374 --
3375  
3377     l_balance_type_code <> 'B' THEN
3378 IF NVL(p_source_9,'
3379 ') =  'Y' AND 
3380 NVL(p_source_13,'
3381 ') =  'CREDIT' AND 
3382 NVL(p_source_14,'
3383 ') =  'Downward' AND 
3384 (NVL(p_source_8,'
3385 ') =  'ITEM' OR 
3386 NVL(p_source_8,'
3387 ') =  'ACCRUAL' OR 
3388 NVL(p_source_8,'
3389 ') =  'FREIGHT' OR 
3390 NVL(p_source_8,'
3391 ') =  'MISCELLANEOUS' OR 
3392 NVL(p_source_8,'
3393 ') =  'IPV')
3394  THEN 
3395 
3396    --
3397    XLA_AE_LINES_PKG.SetNewLine;
3398 
3399    p_balance_type_code          := l_balance_type_code;
3400    -- set the flag so later we will know whether the gain loss line needs to be created
3401    
3402    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3403      p_actual_flag :='A';
3404    END IF;
3405 
3406    --
3407    -- bulk performance
3408    --
3409    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3410                                       p_header_num   => 0); -- 4262811
3411    --
3412    -- set accounting line options
3413    --
3414    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3415            p_natural_side_code          => 'C'
3416          , p_gain_or_loss_flag          => 'N'
3417          , p_gl_transfer_mode_code      => 'S'
3418          , p_acct_entry_type_code       => 'A'
3419          , p_switch_side_flag           => 'N'
3420          , p_merge_duplicate_code       => 'N'
3421          );
3422    --
3423    l_acc_rev_natural_side_code := 'D';  -- 4262811
3424    -- 
3425    --
3426    -- set accounting line type info
3427    --
3428    xla_ae_lines_pkg.SetAcctLineType
3429       (p_component_type             => l_component_type
3430       ,p_event_type_code            => l_event_type_code
3431       ,p_line_definition_owner_code => l_line_definition_owner_code
3432       ,p_line_definition_code       => l_line_definition_code
3433       ,p_accounting_line_code       => l_component_code
3434       ,p_accounting_line_type_code  => l_component_type_code
3435       ,p_accounting_line_appl_id    => l_component_appl_id
3436       ,p_amb_context_code           => l_amb_context_code
3437       ,p_entity_code                => l_entity_code
3438       ,p_event_class_code           => l_event_class_code);
3439    --
3440    -- set accounting class
3441    --
3442    xla_ae_lines_pkg.SetAcctClass(
3443            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
3444          , p_ae_header_id           => l_ae_header_id
3445          );
3446 
3447    --
3448    -- set rounding class
3449    --
3450    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3451                       'ACCOUNTSPAYABLE';
3452 
3453    --
3454    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3455    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3456    --
3457    -- bulk performance
3458    --
3459    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3460 
3461    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3462       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3463 
3464    -- 4955764
3465    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3467 
3468    -- 4458381 Public Sector Enh
3469    
3470    --
3471    -- set accounting attributes for the line type
3472    --
3473    l_entered_amt_idx := 23;
3474    l_accted_amt_idx  := 28;
3475    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3476    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3477    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
3478    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
3479    l_rec_acct_attrs.array_num_value(2)  := 
3480 xla_ae_sources_pkg.GetSystemSourceNum(
3481    p_source_code           => 'XLA_EVENT_APPL_ID'
3482  , p_source_type_code      => 'Y'
3483  , p_source_application_id =>  602
3484 );
3485    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
3486    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
3487    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
3488    l_rec_acct_attrs.array_char_value(4)  := 
3489 xla_ae_sources_pkg.GetSystemSourceChar(
3490    p_source_code           => 'XLA_ENTITY_CODE'
3491  , p_source_type_code      => 'Y'
3492  , p_source_application_id =>  602
3493 );
3494    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
3495    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
3496    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
3497    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
3498    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
3499    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
3500    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3504    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
3501    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
3502    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
3503    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
3505    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
3506    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3507    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
3508    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
3509    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
3510    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
3511    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
3512    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
3513    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
3514    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
3515    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
3516    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
3517    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
3518    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
3519    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
3520    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
3521    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
3522    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
3523    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
3524    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
3525    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
3526    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
3527    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
3528    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
3529    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
3530    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
3531    l_rec_acct_attrs.array_num_value(23)  := p_source_35;
3532    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
3533    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
3534    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
3535    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
3536    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
3537    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
3538    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
3539    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
3540    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
3541    l_rec_acct_attrs.array_num_value(28)  := p_source_53;
3542    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
3543    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
3544    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
3545    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
3546    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
3547    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
3548    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
3549    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
3550    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
3551    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
3552    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
3553    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
3554    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
3555    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
3556    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
3557    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
3558    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
3559    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
3560    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
3561    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
3562    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
3563    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
3564    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
3565    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
3566    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
3567    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
3568    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
3569    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
3570    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
3571    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
3572 
3573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3575 
3576    ---------------------------------------------------------------------------------------------------------------
3577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3578    ---------------------------------------------------------------------------------------------------------------
3579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3580 
3581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3583 
3584    IF xla_accounting_cache_pkg.GetValueChar
3585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3587    AND l_bflow_method_code = 'PRIOR_ENTRY'
3588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3591        )
3592    THEN
3593          xla_ae_lines_pkg.BflowUpgEntry
3594            (p_business_method_code    => l_bflow_method_code
3595            ,p_business_class_code     => l_bflow_class_code
3596            ,p_balance_type            => l_balance_type_code);
3597    ELSE
3598       NULL;
3599 -- No business flow processing for business flow method of NONE.
3600    END IF;
3601 
3602    --
3603    -- call analytical criteria
3604    --
3605    
3606    --
3607    -- call description
3608    --
3609    
3610 xla_ae_lines_pkg.SetLineDescription(
3611    p_ae_header_id => l_ae_header_id
3612   ,p_description  => Description_2 (
3613      p_application_id         => p_application_id
3614    , p_ae_header_id           => l_ae_header_id 
3615 , p_source_1 => p_source_1
3616    )
3617 );
3618 
3619 
3620    --
3621    -- call ADRs
3622    -- Bug 4922099
3623    --
3624    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3625         (NVL(l_actual_upg_option, 'N') = 'O') OR
3626         (NVL(l_enc_upg_option, 'N') = 'O')
3627       )
3628    THEN
3629    NULL;
3630    --
3631    --
3632    
3633   l_ccid := AcctDerRule_3(
3634            p_application_id           => p_application_id
3635          , p_ae_header_id             => l_ae_header_id 
3636 , p_source_2 => p_source_2
3637          , x_transaction_coa_id       => l_adr_transaction_coa_id
3638          , x_accounting_coa_id        => l_adr_accounting_coa_id
3639          , x_value_type_code          => l_adr_value_type_code
3640          , p_side                     => 'NA'
3641    );
3642 
3643    xla_ae_lines_pkg.set_ccid(
3644     p_code_combination_id          => l_ccid
3645   , p_value_type_code              => l_adr_value_type_code
3646   , p_transaction_coa_id           => l_adr_transaction_coa_id
3647   , p_accounting_coa_id            => l_adr_accounting_coa_id
3648   , p_adr_code                     => 'AP_INVOICE_DIST'
3649   , p_adr_type_code                => 'S'
3650   , p_component_type               => l_component_type
3651   , p_component_code               => l_component_code
3652   , p_component_type_code          => l_component_type_code
3653   , p_component_appl_id            => l_component_appl_id
3654   , p_amb_context_code             => l_amb_context_code
3655   , p_side                         => 'NA'
3656   );
3657 
3658 
3659    l_segment := AcctDerRule_13(
3660            p_application_id           => p_application_id
3661          , p_ae_header_id             => l_ae_header_id 
3662          , x_transaction_coa_id       => l_adr_transaction_coa_id
3663          , x_accounting_coa_id        => l_adr_accounting_coa_id
3664          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
3665          , x_flex_value_set_id        => l_adr_flex_value_set_id
3666          , x_value_type_code          => l_adr_value_type_code
3667          , x_value_combination_id     => l_adr_value_combination_id
3668          , x_value_segment_code       => l_adr_value_segment_code
3669          , p_side                     => 'NA'
3670          , p_override_seg_flag        => 'Y'
3671    );
3672 
3673    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
3674 
3675       xla_ae_lines_pkg.set_segment(
3676           p_to_segment_code         => 'GL_ACCOUNT'
3677         , p_segment_value           => l_segment
3678         , p_from_segment_code       => l_adr_value_segment_code
3679         , p_from_combination_id     => l_adr_value_combination_id
3680         , p_value_type_code         => l_adr_value_type_code
3681         , p_transaction_coa_id      => l_adr_transaction_coa_id
3682         , p_accounting_coa_id       => l_adr_accounting_coa_id
3683         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
3684         , p_flex_value_set_id       => l_adr_flex_value_set_id
3685         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
3686         , p_adr_type_code           => 'S'
3687         , p_component_type          => l_component_type
3688         , p_component_code          => l_component_code
3689         , p_component_type_code     => l_component_type_code
3690         , p_component_appl_id       => l_component_appl_id
3691         , p_amb_context_code        => l_amb_context_code
3692         , p_entity_code             => 'AP_INVOICES'
3693         , p_event_class_code        => 'CREDIT MEMOS'
3694         , p_side                    => 'NA'
3695         );
3696 
3697   END IF;
3698 
3699    --
3700    --
3701    END IF;
3702    --
3703    -- Bug 4922099
3704    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3705           (NVL(l_enc_upg_option, 'N') = 'O')
3706         ) AND
3707         (l_bflow_method_code = 'PRIOR_ENTRY')
3708       )
3709    THEN
3710       IF
3711       --
3712       1 = 2
3713       --
3714       THEN
3715       xla_accounting_err_pkg.build_message
3716                                     (p_appli_s_name            => 'XLA'
3717                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3721                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3718                                     ,p_token_1                 => 'LINE_NUMBER'
3719                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3720                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3722                                                                              l_component_type
3723                                                                             ,l_component_code
3724                                                                             ,l_component_type_code
3725                                                                             ,l_component_appl_id
3726                                                                             ,l_amb_context_code
3727                                                                             ,l_entity_code
3728                                                                             ,l_event_class_code
3729                                                                            )
3730                                     ,p_token_3                 => 'OWNER'
3731                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3732                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3733                                                                           ,p_lookup_code    => l_component_type_code
3734                                                                          )
3735                                     ,p_token_4                 => 'PRODUCT_NAME'
3736                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3737                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3738                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3739                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3740                                     ,p_ae_header_id            =>  NULL
3741                                        );
3742 
3743         IF (C_LEVEL_ERROR>= g_log_level) THEN
3744                  trace
3745                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3746                       ,p_level    => C_LEVEL_ERROR
3747                       ,p_module   => l_log_module);
3748         END IF;
3749       END IF;
3750    END IF;
3751    --
3752    --
3753    ------------------------------------------------------------------------------------------------
3754    -- 4219869 Business Flow
3755    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3756    -- Prior Entry.  Currently, the following code is always generated.
3757    ------------------------------------------------------------------------------------------------
3758    XLA_AE_LINES_PKG.ValidateCurrentLine;
3759 
3760    ------------------------------------------------------------------------------------
3761    -- 4219869 Business Flow
3762    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3763    ------------------------------------------------------------------------------------
3764    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3765 
3766    ----------------------------------------------------------------------------------
3767    -- 4219869 Business Flow
3768    -- Update journal entry status -- Need to generate this within IF <condition>
3769    ----------------------------------------------------------------------------------
3770    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3771          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3772          ,p_balance_type_code => l_balance_type_code
3773          );
3774 
3775    -------------------------------------------------------------------------------------------
3776    -- 4262811 - Generate the Accrual Reversal lines
3777    -------------------------------------------------------------------------------------------
3778    BEGIN
3779       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3780                               (g_array_event(p_event_id).array_value_num('header_index'));
3781       IF l_acc_rev_flag IS NULL THEN
3782          l_acc_rev_flag := 'N';
3783       END IF;
3784    EXCEPTION
3785       WHEN OTHERS THEN
3786          l_acc_rev_flag := 'N';
3787    END;
3788    --
3789    IF (l_acc_rev_flag = 'Y') THEN
3790 
3791        -- 4645092  ------------------------------------------------------------------------------
3792        -- To allow MPA report to determine if it should generate report process
3793        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3794        ------------------------------------------------------------------------------------------
3795 
3796        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3797        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3798    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3799    -- call ADRs
3800    -- Bug 4922099
3801    --
3802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3803         (NVL(l_actual_upg_option, 'N') = 'O') OR
3804         (NVL(l_enc_upg_option, 'N') = 'O')
3805       )
3806    THEN
3807    NULL;
3808    --
3809    --
3810    
3811   l_ccid := AcctDerRule_3(
3812            p_application_id           => p_application_id
3816          , x_accounting_coa_id        => l_adr_accounting_coa_id
3813          , p_ae_header_id             => l_ae_header_id 
3814 , p_source_2 => p_source_2
3815          , x_transaction_coa_id       => l_adr_transaction_coa_id
3817          , x_value_type_code          => l_adr_value_type_code
3818          , p_side                     => 'NA'
3819    );
3820 
3821    xla_ae_lines_pkg.set_ccid(
3822     p_code_combination_id          => l_ccid
3823   , p_value_type_code              => l_adr_value_type_code
3824   , p_transaction_coa_id           => l_adr_transaction_coa_id
3825   , p_accounting_coa_id            => l_adr_accounting_coa_id
3826   , p_adr_code                     => 'AP_INVOICE_DIST'
3827   , p_adr_type_code                => 'S'
3828   , p_component_type               => l_component_type
3829   , p_component_code               => l_component_code
3830   , p_component_type_code          => l_component_type_code
3831   , p_component_appl_id            => l_component_appl_id
3832   , p_amb_context_code             => l_amb_context_code
3833   , p_side                         => 'NA'
3834   );
3835 
3836 
3837    l_segment := AcctDerRule_13(
3838            p_application_id           => p_application_id
3839          , p_ae_header_id             => l_ae_header_id 
3840          , x_transaction_coa_id       => l_adr_transaction_coa_id
3841          , x_accounting_coa_id        => l_adr_accounting_coa_id
3842          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
3843          , x_flex_value_set_id        => l_adr_flex_value_set_id
3844          , x_value_type_code          => l_adr_value_type_code
3845          , x_value_combination_id     => l_adr_value_combination_id
3846          , x_value_segment_code       => l_adr_value_segment_code
3847          , p_side                     => 'NA'
3848          , p_override_seg_flag        => 'Y'
3849    );
3850 
3851    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
3852 
3853       xla_ae_lines_pkg.set_segment(
3854           p_to_segment_code         => 'GL_ACCOUNT'
3855         , p_segment_value           => l_segment
3856         , p_from_segment_code       => l_adr_value_segment_code
3857         , p_from_combination_id     => l_adr_value_combination_id
3858         , p_value_type_code         => l_adr_value_type_code
3859         , p_transaction_coa_id      => l_adr_transaction_coa_id
3860         , p_accounting_coa_id       => l_adr_accounting_coa_id
3861         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
3862         , p_flex_value_set_id       => l_adr_flex_value_set_id
3863         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
3864         , p_adr_type_code           => 'S'
3865         , p_component_type          => l_component_type
3866         , p_component_code          => l_component_code
3867         , p_component_type_code     => l_component_type_code
3868         , p_component_appl_id       => l_component_appl_id
3869         , p_amb_context_code        => l_amb_context_code
3870         , p_entity_code             => 'AP_INVOICES'
3871         , p_event_class_code        => 'CREDIT MEMOS'
3872         , p_side                    => 'NA'
3873         );
3874 
3875   END IF;
3876 
3877    --
3878    --
3879    END IF;
3880 
3881        --
3882        -- Update the line information that should be overwritten
3883        --
3884        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3885                                          p_header_num   => 1);
3886        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3887 
3888        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3889 
3890        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3891           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3892        END IF;
3893 
3894       --
3895       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3896       --
3897       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3898           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3899       ELSE
3900           ---------------------------------------------------------------------------------------------------
3901           -- 4262811a Switch Sign
3902           ---------------------------------------------------------------------------------------------------
3903           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3904           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3905                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3906           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3907                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3908           -- 5132302
3909           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3910                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3911 
3912       END IF;
3913 
3914       -- 4955764
3915       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3917 
3921 
3918 
3919       XLA_AE_LINES_PKG.ValidateCurrentLine;
3920       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3922       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3923                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3924                ,p_balance_type_code => l_balance_type_code);
3925 
3926    END IF;
3927 
3928    -----------------------------------------------------------------------------------------
3929    -- 4262811 Multiperiod Accounting
3930    -----------------------------------------------------------------------------------------
3931      -- No MPA option is assigned.
3932 
3933 
3934 END IF;
3935 END IF;
3936 --
3937 
3938 --
3939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3940    trace
3941       (p_msg      => 'END of AcctLineType_18'
3942       ,p_level    => C_LEVEL_PROCEDURE
3943       ,p_module   => l_log_module);
3944 END IF;
3945 --
3946 EXCEPTION
3947   WHEN xla_exceptions_pkg.application_exception THEN
3948       RAISE;
3949   WHEN OTHERS THEN
3950        xla_exceptions_pkg.raise_message
3951            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_18');
3952 END AcctLineType_18;
3953 --
3954 
3955 ---------------------------------------
3956 --
3957 -- PRIVATE FUNCTION
3958 --         AcctLineType_19
3959 --
3960 ---------------------------------------
3961 PROCEDURE AcctLineType_19 (
3962   p_application_id        IN NUMBER
3963  ,p_event_id              IN NUMBER
3964  ,p_calculate_acctd_flag  IN VARCHAR2
3965  ,p_calculate_g_l_flag    IN VARCHAR2
3966  ,p_actual_flag           IN OUT VARCHAR2
3967  ,p_balance_type_code     OUT VARCHAR2
3968  ,p_gain_or_loss_ref      OUT VARCHAR2
3969  
3970 --Invoice Distribution Description
3971  , p_source_1            IN VARCHAR2
3972 --Invoice Distribution Account
3973  , p_source_2            IN NUMBER
3974 --Federal Anticipation
3975  , p_source_3            IN VARCHAR2
3976 --Invoice Distribution Type
3977  , p_source_8            IN VARCHAR2
3978  , p_source_8_meaning    IN VARCHAR2
3979 --Federal Prior Year Flag
3980  , p_source_9            IN VARCHAR2
3981 --Invoice Type
3982  , p_source_13            IN VARCHAR2
3983  , p_source_13_meaning    IN VARCHAR2
3984 --Federal Adjustment Type
3985  , p_source_14            IN VARCHAR2
3986 --Accounting Reversal Indicator
3987  , p_source_15            IN VARCHAR2
3988 --Distribution Link Type
3989  , p_source_17            IN VARCHAR2
3990 --Allocation to Main Distribution Identifier
3991  , p_source_19            IN NUMBER
3992 --Invoice Identifier
3993  , p_source_20            IN NUMBER
3994 --Business Flow Accounts Payable Application Identifier
3995  , p_source_21            IN NUMBER
3996 --Business Flow Invoice Distribution Type
3997  , p_source_22            IN VARCHAR2
3998 --Business Flow Invoice Entity Code
3999  , p_source_23            IN VARCHAR2
4000 --Business Flow Invoice Distribution Identifier
4001  , p_source_24            IN NUMBER
4002 --Business Flow Invoice Identifier
4003  , p_source_25            IN NUMBER
4004 --Invoice Distribution Identifier
4005  , p_source_26            IN NUMBER
4006 --Payables Encumbrance Upgrade Credit Account
4007  , p_source_27            IN NUMBER
4008 --Payables Encumbrance Upgrade Credit Amount
4009  , p_source_28            IN NUMBER
4010 --Invoice Currency Code
4011  , p_source_29            IN VARCHAR2
4012 --Payables Encumbrance Upgrade Credit Base Amount
4013  , p_source_30            IN NUMBER
4014 --Payables Encumbrance Upgrade Debit Account
4015  , p_source_31            IN NUMBER
4016 --Payables Encumbrance Upgrade Debit Amount
4017  , p_source_32            IN NUMBER
4018 --Payables Encumbrance Upgrade Debit Base Amount
4019  , p_source_33            IN NUMBER
4020 --Payables Encumbrance Upgrade Option
4021  , p_source_34            IN VARCHAR2
4022 --Invoice Exchange Date
4023  , p_source_36            IN DATE
4024 --Invoice Exchange Rate
4025  , p_source_37            IN NUMBER
4026 --Invoice Exchange Rate Type
4027  , p_source_38            IN VARCHAR2
4028 --Deferred Accounting End Date
4029  , p_source_39            IN DATE
4030 --Deferred Accounting Option
4031  , p_source_40            IN VARCHAR2
4032 --Deferred Accounting Start Date
4033  , p_source_41            IN DATE
4034 --Override Accounted Amount Indicator
4035  , p_source_42            IN VARCHAR2
4036  , p_source_42_meaning    IN VARCHAR2
4037 --Invoice Supplier Identifier
4038  , p_source_43            IN NUMBER
4039 --Invoice Supplier Site Identifier
4040  , p_source_44            IN NUMBER
4041 --Third Party Type
4042  , p_source_45            IN VARCHAR2
4043 --Parent Reversal Identifier
4044  , p_source_46            IN NUMBER
4045 --Invoice Distribution Statistical Amount
4046  , p_source_47            IN NUMBER
4047 --Invoice Distribution Tax Line Identifier
4048  , p_source_48            IN NUMBER
4049 --Invoice Distribution Tax Distribution Identifier from Tax
4050  , p_source_49            IN NUMBER
4051 --Invoice Distribution Summary Tax Line Identifier
4052  , p_source_50            IN NUMBER
4053 --Payables Upgrade Credit Encumbrance Type Identifier
4054  , p_source_51            IN NUMBER
4055 --Payables Upgrade Debit Encumbrance Type Identifier
4056  , p_source_52            IN NUMBER
4057 --Federal Unanticipated Amt
4061 
4058  , p_source_54            IN NUMBER
4059 )
4060 IS
4062 l_component_type              VARCHAR2(80);
4063 l_component_code              VARCHAR2(30);
4064 l_component_type_code         VARCHAR2(1);
4065 l_component_appl_id           INTEGER;
4066 l_amb_context_code            VARCHAR2(30);
4067 l_entity_code                 VARCHAR2(30);
4068 l_event_class_code            VARCHAR2(30);
4069 l_ae_header_id                NUMBER;
4070 l_event_type_code             VARCHAR2(30);
4071 l_line_definition_code        VARCHAR2(30);
4072 l_line_definition_owner_code  VARCHAR2(1);
4073 --
4074 -- adr variables
4075 l_segment                     VARCHAR2(30);
4076 l_ccid                        NUMBER;
4077 l_adr_transaction_coa_id      NUMBER;
4078 l_adr_accounting_coa_id       NUMBER;
4079 l_adr_flexfield_segment_code  VARCHAR2(30);
4080 l_adr_flex_value_set_id       NUMBER;
4081 l_adr_value_type_code         VARCHAR2(30);
4082 l_adr_value_combination_id    NUMBER;
4083 l_adr_value_segment_code      VARCHAR2(30);
4084 
4085 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4086 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4087 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4088 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4089 
4090 -- 4262811 Variables ------------------------------------------------------------------------------------------
4091 l_entered_amt_idx             NUMBER;
4092 l_accted_amt_idx              NUMBER;
4093 l_acc_rev_flag                VARCHAR2(1);
4094 l_accrual_line_num            NUMBER;
4095 l_tmp_amt                     NUMBER;
4096 l_acc_rev_natural_side_code   VARCHAR2(1);
4097 
4098 l_num_entries                 NUMBER;
4099 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4100 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4101 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4102 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4103 l_recog_line_1                NUMBER;
4104 l_recog_line_2                NUMBER;
4105 
4106 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4107 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4108 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4109 
4110 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4111 
4112 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4113 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4114 
4115 ---------------------------------------------------------------------------------------------------------------
4116 
4117 
4118 --
4119 -- bulk performance
4120 --
4121 l_balance_type_code           VARCHAR2(1);
4122 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4123 l_log_module                  VARCHAR2(240);
4124 
4125 --
4126 -- Upgrade strategy
4127 --
4128 l_actual_upg_option           VARCHAR2(1);
4129 l_enc_upg_option           VARCHAR2(1);
4130 
4131 --
4132 BEGIN
4133 --
4134 IF g_log_enabled THEN
4135       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
4136 END IF;
4137 --
4138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4139 
4140       trace
4141          (p_msg      => 'BEGIN of AcctLineType_19'
4142          ,p_level    => C_LEVEL_PROCEDURE
4143          ,p_module   => l_log_module);
4144 
4145 END IF;
4146 --
4147 l_component_type             := 'AMB_JLT';
4148 l_component_code             := 'FV_AP_CM_ DWD_UNANPT_PYA_CR';
4149 l_component_type_code        := 'S';
4150 l_component_appl_id          :=  200;
4151 l_amb_context_code           := 'DEFAULT';
4152 l_entity_code                := 'AP_INVOICES';
4153 l_event_class_code           := 'CREDIT MEMOS';
4154 l_event_type_code            := 'CREDIT MEMOS_ALL';
4155 l_line_definition_owner_code := 'S';
4156 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
4157 --
4158 l_balance_type_code          := 'A';
4159 l_segment                     := NULL;
4160 l_ccid                        := NULL;
4161 l_adr_transaction_coa_id      := NULL;
4162 l_adr_accounting_coa_id       := NULL;
4163 l_adr_flexfield_segment_code  := NULL;
4164 l_adr_flex_value_set_id       := NULL;
4165 l_adr_value_type_code         := NULL;
4166 l_adr_value_combination_id    := NULL;
4167 l_adr_value_segment_code      := NULL;
4168 
4169 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4170 l_bflow_class_code           := '';    -- 4219869 Business Flow
4171 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4172 l_budgetary_control_flag     := 'Y';
4173 
4174 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4175 l_bflow_applied_to_amt       := NULL; -- 5132302
4176 l_entered_amt_idx            := NULL;          -- 4262811
4177 l_accted_amt_idx             := NULL;          -- 4262811
4178 l_acc_rev_flag               := NULL;          -- 4262811
4179 l_accrual_line_num           := NULL;          -- 4262811
4180 l_tmp_amt                    := NULL;          -- 4262811
4181 --
4182  
4183 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4184     l_balance_type_code <> 'B' THEN
4185 IF NVL(p_source_13,'
4186 ') =  'CREDIT' AND 
4187 NVL(p_source_9,'
4188 ') =  'Y' AND 
4189 (NVL(p_source_8,'
4193 NVL(p_source_8,'
4190 ') =  'ITEM' OR 
4191 NVL(p_source_8,'
4192 ') =  'ACCRUAL' OR 
4194 ') =  'FREIGHT' OR 
4195 NVL(p_source_8,'
4196 ') =  'MISCELLANEOUS' OR 
4197 NVL(p_source_8,'
4198 ') =  'IPV') AND 
4199 NVL(p_source_14,'
4200 ') =  'Downward' AND 
4201 (NVL(p_source_3,'
4202 ') =  'UnAnticipated' OR 
4203 NVL(p_source_3,'
4204 ') =  'Partial')
4205  THEN 
4206 
4207    --
4208    XLA_AE_LINES_PKG.SetNewLine;
4209 
4210    p_balance_type_code          := l_balance_type_code;
4211    -- set the flag so later we will know whether the gain loss line needs to be created
4212    
4213    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4214      p_actual_flag :='A';
4215    END IF;
4216 
4217    --
4218    -- bulk performance
4219    --
4220    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4221                                       p_header_num   => 0); -- 4262811
4222    --
4223    -- set accounting line options
4224    --
4225    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4226            p_natural_side_code          => 'D'
4227          , p_gain_or_loss_flag          => 'N'
4228          , p_gl_transfer_mode_code      => 'S'
4229          , p_acct_entry_type_code       => 'A'
4230          , p_switch_side_flag           => 'N'
4231          , p_merge_duplicate_code       => 'N'
4232          );
4233    --
4234    l_acc_rev_natural_side_code := 'C';  -- 4262811
4235    -- 
4236    --
4237    -- set accounting line type info
4238    --
4239    xla_ae_lines_pkg.SetAcctLineType
4240       (p_component_type             => l_component_type
4241       ,p_event_type_code            => l_event_type_code
4242       ,p_line_definition_owner_code => l_line_definition_owner_code
4243       ,p_line_definition_code       => l_line_definition_code
4244       ,p_accounting_line_code       => l_component_code
4245       ,p_accounting_line_type_code  => l_component_type_code
4246       ,p_accounting_line_appl_id    => l_component_appl_id
4247       ,p_amb_context_code           => l_amb_context_code
4248       ,p_entity_code                => l_entity_code
4249       ,p_event_class_code           => l_event_class_code);
4250    --
4251    -- set accounting class
4252    --
4253    xla_ae_lines_pkg.SetAcctClass(
4254            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
4255          , p_ae_header_id           => l_ae_header_id
4256          );
4257 
4258    --
4259    -- set rounding class
4260    --
4261    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4262                       'ACCOUNTSPAYABLE';
4263 
4264    --
4265    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4266    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4267    --
4268    -- bulk performance
4269    --
4270    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4271 
4272    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4273       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4274 
4275    -- 4955764
4276    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4277       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4278 
4279    -- 4458381 Public Sector Enh
4280    
4281    --
4282    -- set accounting attributes for the line type
4283    --
4284    l_entered_amt_idx := 23;
4285    l_accted_amt_idx  := 28;
4286    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4287    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4288    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
4289    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
4290    l_rec_acct_attrs.array_num_value(2)  := 
4291 xla_ae_sources_pkg.GetSystemSourceNum(
4292    p_source_code           => 'XLA_EVENT_APPL_ID'
4293  , p_source_type_code      => 'Y'
4294  , p_source_application_id =>  602
4295 );
4296    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
4297    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
4298    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
4299    l_rec_acct_attrs.array_char_value(4)  := 
4300 xla_ae_sources_pkg.GetSystemSourceChar(
4301    p_source_code           => 'XLA_ENTITY_CODE'
4302  , p_source_type_code      => 'Y'
4303  , p_source_application_id =>  602
4304 );
4305    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
4306    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
4307    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
4308    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
4309    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
4310    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
4311    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4312    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
4313    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
4314    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
4318    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
4315    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
4316    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
4317    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4319    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
4320    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
4321    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
4322    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
4323    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
4324    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
4325    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
4326    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
4327    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
4328    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
4329    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
4330    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
4331    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
4332    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
4333    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
4334    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
4335    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
4336    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
4337    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
4338    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
4339    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
4340    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
4341    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
4342    l_rec_acct_attrs.array_num_value(23)  := p_source_54;
4343    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
4344    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
4345    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
4346    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
4347    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
4348    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
4349    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
4350    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
4351    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
4352    l_rec_acct_attrs.array_num_value(28)  := p_source_54;
4353    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
4354    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
4355    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
4356    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
4357    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
4358    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
4359    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
4360    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
4361    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
4362    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
4363    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
4364    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
4365    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
4366    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
4367    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
4368    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
4369    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
4370    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
4371    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
4372    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
4373    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
4374    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
4375    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
4376    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
4377    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
4378    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
4379    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
4380    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
4381    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
4382    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
4383 
4384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4385    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4386 
4387    ---------------------------------------------------------------------------------------------------------------
4388    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4389    ---------------------------------------------------------------------------------------------------------------
4390    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4391 
4392    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4393    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4394 
4395    IF xla_accounting_cache_pkg.GetValueChar
4396          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4397          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4401          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4398    AND l_bflow_method_code = 'PRIOR_ENTRY'
4399 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4400    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4402        )
4403    THEN
4404          xla_ae_lines_pkg.BflowUpgEntry
4405            (p_business_method_code    => l_bflow_method_code
4406            ,p_business_class_code     => l_bflow_class_code
4407            ,p_balance_type            => l_balance_type_code);
4408    ELSE
4409       NULL;
4410 -- No business flow processing for business flow method of NONE.
4411    END IF;
4412 
4413    --
4414    -- call analytical criteria
4415    --
4416    
4417    --
4418    -- call description
4419    --
4420    
4421 xla_ae_lines_pkg.SetLineDescription(
4422    p_ae_header_id => l_ae_header_id
4423   ,p_description  => Description_2 (
4424      p_application_id         => p_application_id
4425    , p_ae_header_id           => l_ae_header_id 
4426 , p_source_1 => p_source_1
4427    )
4428 );
4429 
4430 
4431    --
4432    -- call ADRs
4433    -- Bug 4922099
4434    --
4435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4436         (NVL(l_actual_upg_option, 'N') = 'O') OR
4437         (NVL(l_enc_upg_option, 'N') = 'O')
4438       )
4439    THEN
4440    NULL;
4441    --
4442    --
4443    
4444   l_ccid := AcctDerRule_3(
4445            p_application_id           => p_application_id
4446          , p_ae_header_id             => l_ae_header_id 
4447 , p_source_2 => p_source_2
4448          , x_transaction_coa_id       => l_adr_transaction_coa_id
4449          , x_accounting_coa_id        => l_adr_accounting_coa_id
4450          , x_value_type_code          => l_adr_value_type_code
4451          , p_side                     => 'NA'
4452    );
4453 
4454    xla_ae_lines_pkg.set_ccid(
4455     p_code_combination_id          => l_ccid
4456   , p_value_type_code              => l_adr_value_type_code
4457   , p_transaction_coa_id           => l_adr_transaction_coa_id
4458   , p_accounting_coa_id            => l_adr_accounting_coa_id
4459   , p_adr_code                     => 'AP_INVOICE_DIST'
4460   , p_adr_type_code                => 'S'
4461   , p_component_type               => l_component_type
4462   , p_component_code               => l_component_code
4463   , p_component_type_code          => l_component_type_code
4464   , p_component_appl_id            => l_component_appl_id
4465   , p_amb_context_code             => l_amb_context_code
4466   , p_side                         => 'NA'
4467   );
4468 
4469 
4470    l_segment := AcctDerRule_5(
4471            p_application_id           => p_application_id
4472          , p_ae_header_id             => l_ae_header_id 
4473 , p_source_3 => p_source_3
4474          , x_transaction_coa_id       => l_adr_transaction_coa_id
4475          , x_accounting_coa_id        => l_adr_accounting_coa_id
4476          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
4477          , x_flex_value_set_id        => l_adr_flex_value_set_id
4478          , x_value_type_code          => l_adr_value_type_code
4479          , x_value_combination_id     => l_adr_value_combination_id
4480          , x_value_segment_code       => l_adr_value_segment_code
4481          , p_side                     => 'NA'
4482          , p_override_seg_flag        => 'Y'
4483    );
4484 
4485    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
4486 
4487       xla_ae_lines_pkg.set_segment(
4488           p_to_segment_code         => 'GL_ACCOUNT'
4489         , p_segment_value           => l_segment
4490         , p_from_segment_code       => l_adr_value_segment_code
4491         , p_from_combination_id     => l_adr_value_combination_id
4492         , p_value_type_code         => l_adr_value_type_code
4493         , p_transaction_coa_id      => l_adr_transaction_coa_id
4494         , p_accounting_coa_id       => l_adr_accounting_coa_id
4495         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
4496         , p_flex_value_set_id       => l_adr_flex_value_set_id
4497         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
4498         , p_adr_type_code           => 'S'
4499         , p_component_type          => l_component_type
4500         , p_component_code          => l_component_code
4501         , p_component_type_code     => l_component_type_code
4502         , p_component_appl_id       => l_component_appl_id
4503         , p_amb_context_code        => l_amb_context_code
4504         , p_entity_code             => 'AP_INVOICES'
4505         , p_event_class_code        => 'CREDIT MEMOS'
4506         , p_side                    => 'NA'
4507         );
4508 
4509   END IF;
4510 
4511    --
4512    --
4513    END IF;
4514    --
4515    -- Bug 4922099
4516    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4517           (NVL(l_enc_upg_option, 'N') = 'O')
4518         ) AND
4519         (l_bflow_method_code = 'PRIOR_ENTRY')
4520       )
4521    THEN
4522       IF
4523       --
4524       1 = 2
4525       --
4526       THEN
4527       xla_accounting_err_pkg.build_message
4528                                     (p_appli_s_name            => 'XLA'
4529                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4533                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4530                                     ,p_token_1                 => 'LINE_NUMBER'
4531                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4532                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4534                                                                              l_component_type
4535                                                                             ,l_component_code
4536                                                                             ,l_component_type_code
4537                                                                             ,l_component_appl_id
4538                                                                             ,l_amb_context_code
4539                                                                             ,l_entity_code
4540                                                                             ,l_event_class_code
4541                                                                            )
4542                                     ,p_token_3                 => 'OWNER'
4543                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4544                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4545                                                                           ,p_lookup_code    => l_component_type_code
4546                                                                          )
4547                                     ,p_token_4                 => 'PRODUCT_NAME'
4548                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4549                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4550                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4551                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4552                                     ,p_ae_header_id            =>  NULL
4553                                        );
4554 
4555         IF (C_LEVEL_ERROR>= g_log_level) THEN
4556                  trace
4557                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4558                       ,p_level    => C_LEVEL_ERROR
4559                       ,p_module   => l_log_module);
4560         END IF;
4561       END IF;
4562    END IF;
4563    --
4564    --
4565    ------------------------------------------------------------------------------------------------
4566    -- 4219869 Business Flow
4567    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4568    -- Prior Entry.  Currently, the following code is always generated.
4569    ------------------------------------------------------------------------------------------------
4570    XLA_AE_LINES_PKG.ValidateCurrentLine;
4571 
4572    ------------------------------------------------------------------------------------
4573    -- 4219869 Business Flow
4574    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4575    ------------------------------------------------------------------------------------
4576    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4577 
4578    ----------------------------------------------------------------------------------
4579    -- 4219869 Business Flow
4580    -- Update journal entry status -- Need to generate this within IF <condition>
4581    ----------------------------------------------------------------------------------
4582    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4583          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4584          ,p_balance_type_code => l_balance_type_code
4585          );
4586 
4587    -------------------------------------------------------------------------------------------
4588    -- 4262811 - Generate the Accrual Reversal lines
4589    -------------------------------------------------------------------------------------------
4590    BEGIN
4591       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4592                               (g_array_event(p_event_id).array_value_num('header_index'));
4593       IF l_acc_rev_flag IS NULL THEN
4594          l_acc_rev_flag := 'N';
4595       END IF;
4596    EXCEPTION
4597       WHEN OTHERS THEN
4598          l_acc_rev_flag := 'N';
4599    END;
4600    --
4601    IF (l_acc_rev_flag = 'Y') THEN
4602 
4603        -- 4645092  ------------------------------------------------------------------------------
4604        -- To allow MPA report to determine if it should generate report process
4605        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4606        ------------------------------------------------------------------------------------------
4607 
4608        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4609        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4610    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4611    -- call ADRs
4612    -- Bug 4922099
4613    --
4614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4615         (NVL(l_actual_upg_option, 'N') = 'O') OR
4616         (NVL(l_enc_upg_option, 'N') = 'O')
4617       )
4618    THEN
4619    NULL;
4620    --
4621    --
4622    
4623   l_ccid := AcctDerRule_3(
4627          , x_transaction_coa_id       => l_adr_transaction_coa_id
4624            p_application_id           => p_application_id
4625          , p_ae_header_id             => l_ae_header_id 
4626 , p_source_2 => p_source_2
4628          , x_accounting_coa_id        => l_adr_accounting_coa_id
4629          , x_value_type_code          => l_adr_value_type_code
4630          , p_side                     => 'NA'
4631    );
4632 
4633    xla_ae_lines_pkg.set_ccid(
4634     p_code_combination_id          => l_ccid
4635   , p_value_type_code              => l_adr_value_type_code
4636   , p_transaction_coa_id           => l_adr_transaction_coa_id
4637   , p_accounting_coa_id            => l_adr_accounting_coa_id
4638   , p_adr_code                     => 'AP_INVOICE_DIST'
4639   , p_adr_type_code                => 'S'
4640   , p_component_type               => l_component_type
4641   , p_component_code               => l_component_code
4642   , p_component_type_code          => l_component_type_code
4643   , p_component_appl_id            => l_component_appl_id
4644   , p_amb_context_code             => l_amb_context_code
4645   , p_side                         => 'NA'
4646   );
4647 
4648 
4649    l_segment := AcctDerRule_5(
4650            p_application_id           => p_application_id
4651          , p_ae_header_id             => l_ae_header_id 
4652 , p_source_3 => p_source_3
4653          , x_transaction_coa_id       => l_adr_transaction_coa_id
4654          , x_accounting_coa_id        => l_adr_accounting_coa_id
4655          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
4656          , x_flex_value_set_id        => l_adr_flex_value_set_id
4657          , x_value_type_code          => l_adr_value_type_code
4658          , x_value_combination_id     => l_adr_value_combination_id
4659          , x_value_segment_code       => l_adr_value_segment_code
4660          , p_side                     => 'NA'
4661          , p_override_seg_flag        => 'Y'
4662    );
4663 
4664    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
4665 
4666       xla_ae_lines_pkg.set_segment(
4667           p_to_segment_code         => 'GL_ACCOUNT'
4668         , p_segment_value           => l_segment
4669         , p_from_segment_code       => l_adr_value_segment_code
4670         , p_from_combination_id     => l_adr_value_combination_id
4671         , p_value_type_code         => l_adr_value_type_code
4672         , p_transaction_coa_id      => l_adr_transaction_coa_id
4673         , p_accounting_coa_id       => l_adr_accounting_coa_id
4674         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
4675         , p_flex_value_set_id       => l_adr_flex_value_set_id
4676         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
4677         , p_adr_type_code           => 'S'
4678         , p_component_type          => l_component_type
4679         , p_component_code          => l_component_code
4680         , p_component_type_code     => l_component_type_code
4681         , p_component_appl_id       => l_component_appl_id
4682         , p_amb_context_code        => l_amb_context_code
4683         , p_entity_code             => 'AP_INVOICES'
4684         , p_event_class_code        => 'CREDIT MEMOS'
4685         , p_side                    => 'NA'
4686         );
4687 
4688   END IF;
4689 
4690    --
4691    --
4692    END IF;
4693 
4694        --
4695        -- Update the line information that should be overwritten
4696        --
4697        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4698                                          p_header_num   => 1);
4699        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4700 
4701        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4702 
4703        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4704           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4705        END IF;
4706 
4707       --
4708       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4709       --
4710       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4711           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4712       ELSE
4713           ---------------------------------------------------------------------------------------------------
4714           -- 4262811a Switch Sign
4715           ---------------------------------------------------------------------------------------------------
4716           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4717           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4718                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4719           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4720                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4721           -- 5132302
4722           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4723                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4724 
4725       END IF;
4726 
4727       -- 4955764
4728       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4732       XLA_AE_LINES_PKG.ValidateCurrentLine;
4729       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4730 
4731 
4733       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4734 
4735       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4736                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4737                ,p_balance_type_code => l_balance_type_code);
4738 
4739    END IF;
4740 
4741    -----------------------------------------------------------------------------------------
4742    -- 4262811 Multiperiod Accounting
4743    -----------------------------------------------------------------------------------------
4744      -- No MPA option is assigned.
4745 
4746 
4747 END IF;
4748 END IF;
4749 --
4750 
4751 --
4752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4753    trace
4754       (p_msg      => 'END of AcctLineType_19'
4755       ,p_level    => C_LEVEL_PROCEDURE
4756       ,p_module   => l_log_module);
4757 END IF;
4758 --
4759 EXCEPTION
4760   WHEN xla_exceptions_pkg.application_exception THEN
4761       RAISE;
4762   WHEN OTHERS THEN
4763        xla_exceptions_pkg.raise_message
4764            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_19');
4765 END AcctLineType_19;
4766 --
4767 
4768 ---------------------------------------
4769 --
4770 -- PRIVATE FUNCTION
4771 --         AcctLineType_20
4772 --
4773 ---------------------------------------
4774 PROCEDURE AcctLineType_20 (
4775   p_application_id        IN NUMBER
4776  ,p_event_id              IN NUMBER
4777  ,p_calculate_acctd_flag  IN VARCHAR2
4778  ,p_calculate_g_l_flag    IN VARCHAR2
4779  ,p_actual_flag           IN OUT VARCHAR2
4780  ,p_balance_type_code     OUT VARCHAR2
4781  ,p_gain_or_loss_ref      OUT VARCHAR2
4782  
4783 --Invoice Distribution Description
4784  , p_source_1            IN VARCHAR2
4785 --Invoice Distribution Account
4786  , p_source_2            IN NUMBER
4787 --Invoice Distribution Type
4788  , p_source_8            IN VARCHAR2
4789  , p_source_8_meaning    IN VARCHAR2
4790 --Federal Prior Year Flag
4791  , p_source_9            IN VARCHAR2
4792 --Accrue on Receipt Option
4793  , p_source_11            IN VARCHAR2
4794  , p_source_11_meaning    IN VARCHAR2
4795 --Purchase Order Distribution Identifier
4796  , p_source_12            IN NUMBER
4797 --Invoice Type
4798  , p_source_13            IN VARCHAR2
4799  , p_source_13_meaning    IN VARCHAR2
4800 --Federal Adjustment Type
4801  , p_source_14            IN VARCHAR2
4802 --Accounting Reversal Indicator
4803  , p_source_15            IN VARCHAR2
4804 --Distribution Link Type
4805  , p_source_17            IN VARCHAR2
4806 --Allocation to Main Distribution Identifier
4807  , p_source_19            IN NUMBER
4808 --Invoice Identifier
4809  , p_source_20            IN NUMBER
4810 --Business Flow Accounts Payable Application Identifier
4811  , p_source_21            IN NUMBER
4812 --Business Flow Invoice Distribution Type
4813  , p_source_22            IN VARCHAR2
4814 --Business Flow Invoice Entity Code
4815  , p_source_23            IN VARCHAR2
4816 --Business Flow Invoice Distribution Identifier
4817  , p_source_24            IN NUMBER
4818 --Business Flow Invoice Identifier
4819  , p_source_25            IN NUMBER
4820 --Invoice Distribution Identifier
4821  , p_source_26            IN NUMBER
4822 --Payables Encumbrance Upgrade Credit Account
4823  , p_source_27            IN NUMBER
4824 --Payables Encumbrance Upgrade Credit Amount
4825  , p_source_28            IN NUMBER
4826 --Invoice Currency Code
4827  , p_source_29            IN VARCHAR2
4828 --Payables Encumbrance Upgrade Credit Base Amount
4829  , p_source_30            IN NUMBER
4830 --Payables Encumbrance Upgrade Debit Account
4831  , p_source_31            IN NUMBER
4832 --Payables Encumbrance Upgrade Debit Amount
4833  , p_source_32            IN NUMBER
4834 --Payables Encumbrance Upgrade Debit Base Amount
4835  , p_source_33            IN NUMBER
4836 --Payables Encumbrance Upgrade Option
4837  , p_source_34            IN VARCHAR2
4838 --Invoice Exchange Date
4839  , p_source_36            IN DATE
4840 --Invoice Exchange Rate
4841  , p_source_37            IN NUMBER
4842 --Invoice Exchange Rate Type
4843  , p_source_38            IN VARCHAR2
4844 --Deferred Accounting End Date
4845  , p_source_39            IN DATE
4846 --Deferred Accounting Option
4847  , p_source_40            IN VARCHAR2
4848 --Deferred Accounting Start Date
4849  , p_source_41            IN DATE
4850 --Override Accounted Amount Indicator
4851  , p_source_42            IN VARCHAR2
4852  , p_source_42_meaning    IN VARCHAR2
4853 --Invoice Supplier Identifier
4854  , p_source_43            IN NUMBER
4855 --Invoice Supplier Site Identifier
4856  , p_source_44            IN NUMBER
4857 --Third Party Type
4858  , p_source_45            IN VARCHAR2
4859 --Parent Reversal Identifier
4860  , p_source_46            IN NUMBER
4861 --Invoice Distribution Statistical Amount
4862  , p_source_47            IN NUMBER
4863 --Invoice Distribution Tax Line Identifier
4864  , p_source_48            IN NUMBER
4865 --Invoice Distribution Tax Distribution Identifier from Tax
4866  , p_source_49            IN NUMBER
4867 --Invoice Distribution Summary Tax Line Identifier
4868  , p_source_50            IN NUMBER
4869 --Payables Upgrade Credit Encumbrance Type Identifier
4870  , p_source_51            IN NUMBER
4871 --Payables Upgrade Debit Encumbrance Type Identifier
4872  , p_source_52            IN NUMBER
4873 --Invoice Distribution Amount
4877 )
4874  , p_source_55            IN NUMBER
4875 --Invoice Distribution Ledger Amount
4876  , p_source_56            IN NUMBER
4878 IS
4879 
4880 l_component_type              VARCHAR2(80);
4881 l_component_code              VARCHAR2(30);
4882 l_component_type_code         VARCHAR2(1);
4883 l_component_appl_id           INTEGER;
4884 l_amb_context_code            VARCHAR2(30);
4885 l_entity_code                 VARCHAR2(30);
4886 l_event_class_code            VARCHAR2(30);
4887 l_ae_header_id                NUMBER;
4888 l_event_type_code             VARCHAR2(30);
4889 l_line_definition_code        VARCHAR2(30);
4890 l_line_definition_owner_code  VARCHAR2(1);
4891 --
4892 -- adr variables
4893 l_segment                     VARCHAR2(30);
4894 l_ccid                        NUMBER;
4895 l_adr_transaction_coa_id      NUMBER;
4896 l_adr_accounting_coa_id       NUMBER;
4897 l_adr_flexfield_segment_code  VARCHAR2(30);
4898 l_adr_flex_value_set_id       NUMBER;
4899 l_adr_value_type_code         VARCHAR2(30);
4900 l_adr_value_combination_id    NUMBER;
4901 l_adr_value_segment_code      VARCHAR2(30);
4902 
4903 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4904 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4905 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4906 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4907 
4908 -- 4262811 Variables ------------------------------------------------------------------------------------------
4909 l_entered_amt_idx             NUMBER;
4910 l_accted_amt_idx              NUMBER;
4911 l_acc_rev_flag                VARCHAR2(1);
4912 l_accrual_line_num            NUMBER;
4913 l_tmp_amt                     NUMBER;
4914 l_acc_rev_natural_side_code   VARCHAR2(1);
4915 
4916 l_num_entries                 NUMBER;
4917 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4918 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4919 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4920 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4921 l_recog_line_1                NUMBER;
4922 l_recog_line_2                NUMBER;
4923 
4924 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4925 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4926 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4927 
4928 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4929 
4930 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4931 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4932 
4933 ---------------------------------------------------------------------------------------------------------------
4934 
4935 
4936 --
4937 -- bulk performance
4938 --
4939 l_balance_type_code           VARCHAR2(1);
4940 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4941 l_log_module                  VARCHAR2(240);
4942 
4943 --
4944 -- Upgrade strategy
4945 --
4946 l_actual_upg_option           VARCHAR2(1);
4947 l_enc_upg_option           VARCHAR2(1);
4948 
4949 --
4950 BEGIN
4951 --
4952 IF g_log_enabled THEN
4953       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
4954 END IF;
4955 --
4956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4957 
4958       trace
4959          (p_msg      => 'BEGIN of AcctLineType_20'
4960          ,p_level    => C_LEVEL_PROCEDURE
4961          ,p_module   => l_log_module);
4962 
4963 END IF;
4964 --
4965 l_component_type             := 'AMB_JLT';
4966 l_component_code             := 'FV_AP_CM_ UPWARD_PYA_CR';
4967 l_component_type_code        := 'S';
4968 l_component_appl_id          :=  200;
4969 l_amb_context_code           := 'DEFAULT';
4970 l_entity_code                := 'AP_INVOICES';
4971 l_event_class_code           := 'CREDIT MEMOS';
4972 l_event_type_code            := 'CREDIT MEMOS_ALL';
4973 l_line_definition_owner_code := 'S';
4974 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
4975 --
4976 l_balance_type_code          := 'A';
4977 l_segment                     := NULL;
4978 l_ccid                        := NULL;
4979 l_adr_transaction_coa_id      := NULL;
4980 l_adr_accounting_coa_id       := NULL;
4981 l_adr_flexfield_segment_code  := NULL;
4982 l_adr_flex_value_set_id       := NULL;
4983 l_adr_value_type_code         := NULL;
4984 l_adr_value_combination_id    := NULL;
4985 l_adr_value_segment_code      := NULL;
4986 
4987 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4988 l_bflow_class_code           := '';    -- 4219869 Business Flow
4989 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4990 l_budgetary_control_flag     := 'Y';
4991 
4992 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4993 l_bflow_applied_to_amt       := NULL; -- 5132302
4994 l_entered_amt_idx            := NULL;          -- 4262811
4995 l_accted_amt_idx             := NULL;          -- 4262811
4996 l_acc_rev_flag               := NULL;          -- 4262811
4997 l_accrual_line_num           := NULL;          -- 4262811
4998 l_tmp_amt                    := NULL;          -- 4262811
4999 --
5000  
5001 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5005 NVL(p_source_9,'
5002     l_balance_type_code <> 'B' THEN
5003 IF NVL(p_source_13,'
5004 ') =  'CREDIT' AND 
5006 ') =  'Y' AND 
5007 (NVL(p_source_8,'
5008 ') =  'ITEM' OR 
5009 NVL(p_source_8,'
5010 ') =  'ACCRUAL' OR 
5011 NVL(p_source_8,'
5012 ') =  'MISCELLANEOUS' OR 
5013 NVL(p_source_8,'
5014 ') =  'FREIGHT' OR 
5015 NVL(p_source_8,'
5016 ') =  'IPV') AND 
5017 NVL(p_source_14,'
5018 ') =  'Upward'
5019  THEN 
5020 
5021    --
5022    XLA_AE_LINES_PKG.SetNewLine;
5023 
5024    p_balance_type_code          := l_balance_type_code;
5025    -- set the flag so later we will know whether the gain loss line needs to be created
5026    
5027    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5028      p_actual_flag :='A';
5029    END IF;
5030 
5031    --
5032    -- bulk performance
5033    --
5034    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5035                                       p_header_num   => 0); -- 4262811
5036    --
5037    -- set accounting line options
5038    --
5039    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5040            p_natural_side_code          => 'D'
5041          , p_gain_or_loss_flag          => 'N'
5042          , p_gl_transfer_mode_code      => 'S'
5043          , p_acct_entry_type_code       => 'A'
5044          , p_switch_side_flag           => 'N'
5045          , p_merge_duplicate_code       => 'N'
5046          );
5047    --
5048    l_acc_rev_natural_side_code := 'C';  -- 4262811
5049    -- 
5050    --
5051    -- set accounting line type info
5052    --
5053    xla_ae_lines_pkg.SetAcctLineType
5054       (p_component_type             => l_component_type
5055       ,p_event_type_code            => l_event_type_code
5056       ,p_line_definition_owner_code => l_line_definition_owner_code
5057       ,p_line_definition_code       => l_line_definition_code
5058       ,p_accounting_line_code       => l_component_code
5059       ,p_accounting_line_type_code  => l_component_type_code
5060       ,p_accounting_line_appl_id    => l_component_appl_id
5061       ,p_amb_context_code           => l_amb_context_code
5062       ,p_entity_code                => l_entity_code
5063       ,p_event_class_code           => l_event_class_code);
5064    --
5065    -- set accounting class
5066    --
5067    xla_ae_lines_pkg.SetAcctClass(
5068            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
5069          , p_ae_header_id           => l_ae_header_id
5070          );
5071 
5072    --
5073    -- set rounding class
5074    --
5075    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5076                       'ACCOUNTSPAYABLE';
5077 
5078    --
5079    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5080    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5081    --
5082    -- bulk performance
5083    --
5084    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5085 
5086    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5087       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5088 
5089    -- 4955764
5090    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5091       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5092 
5093    -- 4458381 Public Sector Enh
5094    
5095    --
5096    -- set accounting attributes for the line type
5097    --
5098    l_entered_amt_idx := 23;
5099    l_accted_amt_idx  := 28;
5100    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5101    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5102    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
5103    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5104    l_rec_acct_attrs.array_num_value(2)  := 
5105 xla_ae_sources_pkg.GetSystemSourceNum(
5106    p_source_code           => 'XLA_EVENT_APPL_ID'
5107  , p_source_type_code      => 'Y'
5108  , p_source_application_id =>  602
5109 );
5110    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5111    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
5112    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5113    l_rec_acct_attrs.array_char_value(4)  := 
5114 xla_ae_sources_pkg.GetSystemSourceChar(
5115    p_source_code           => 'XLA_ENTITY_CODE'
5116  , p_source_type_code      => 'Y'
5117  , p_source_application_id =>  602
5118 );
5119    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5120    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
5121    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5122    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
5123    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5124    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
5125    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5126    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
5127    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5128    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
5129    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5130    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
5134    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
5131    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5132    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
5133    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5135    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5136    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
5137    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5138    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
5139    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5140    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
5141    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5142    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
5143    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5144    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
5145    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5146    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
5147    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5148    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
5149    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5150    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
5151    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5152    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
5153    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5154    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
5155    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5156    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
5157    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5158    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
5159    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
5160    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
5161    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
5162    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
5163    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
5164    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
5165    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
5166    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
5167    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
5168    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
5169    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
5170    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
5171    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
5172    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
5173    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
5174    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
5175    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
5176    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
5177    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
5178    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
5179    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
5180    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
5181    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
5182    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
5183    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
5184    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
5185    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
5186    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
5187    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
5188    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
5189    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
5190    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
5191    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
5192    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
5193    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
5194    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
5195    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
5196    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
5197 
5198    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5199    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5200 
5201    ---------------------------------------------------------------------------------------------------------------
5202    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5203    ---------------------------------------------------------------------------------------------------------------
5204    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5205 
5206    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5207    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5208 
5209    IF xla_accounting_cache_pkg.GetValueChar
5210          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5211          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5212    AND l_bflow_method_code = 'PRIOR_ENTRY'
5213 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5217    THEN
5214    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5215          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5216        )
5218          xla_ae_lines_pkg.BflowUpgEntry
5219            (p_business_method_code    => l_bflow_method_code
5220            ,p_business_class_code     => l_bflow_class_code
5221            ,p_balance_type            => l_balance_type_code);
5222    ELSE
5223       NULL;
5224 -- No business flow processing for business flow method of NONE.
5225    END IF;
5226 
5227    --
5228    -- call analytical criteria
5229    --
5230    
5231    --
5232    -- call description
5233    --
5234    
5235 xla_ae_lines_pkg.SetLineDescription(
5236    p_ae_header_id => l_ae_header_id
5237   ,p_description  => Description_2 (
5238      p_application_id         => p_application_id
5239    , p_ae_header_id           => l_ae_header_id 
5240 , p_source_1 => p_source_1
5241    )
5242 );
5243 
5244 
5245    --
5246    -- call ADRs
5247    -- Bug 4922099
5248    --
5249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5250         (NVL(l_actual_upg_option, 'N') = 'O') OR
5251         (NVL(l_enc_upg_option, 'N') = 'O')
5252       )
5253    THEN
5254    NULL;
5255    --
5256    --
5257    
5258   l_ccid := AcctDerRule_3(
5259            p_application_id           => p_application_id
5260          , p_ae_header_id             => l_ae_header_id 
5261 , p_source_2 => p_source_2
5262          , x_transaction_coa_id       => l_adr_transaction_coa_id
5263          , x_accounting_coa_id        => l_adr_accounting_coa_id
5264          , x_value_type_code          => l_adr_value_type_code
5265          , p_side                     => 'NA'
5266    );
5267 
5268    xla_ae_lines_pkg.set_ccid(
5269     p_code_combination_id          => l_ccid
5270   , p_value_type_code              => l_adr_value_type_code
5271   , p_transaction_coa_id           => l_adr_transaction_coa_id
5272   , p_accounting_coa_id            => l_adr_accounting_coa_id
5273   , p_adr_code                     => 'AP_INVOICE_DIST'
5274   , p_adr_type_code                => 'S'
5275   , p_component_type               => l_component_type
5276   , p_component_code               => l_component_code
5277   , p_component_type_code          => l_component_type_code
5278   , p_component_appl_id            => l_component_appl_id
5279   , p_amb_context_code             => l_amb_context_code
5280   , p_side                         => 'NA'
5281   );
5282 
5283 
5284    l_segment := AcctDerRule_14(
5285            p_application_id           => p_application_id
5286          , p_ae_header_id             => l_ae_header_id 
5287 , p_source_11 => p_source_11
5288 , p_source_11_meaning => p_source_11_meaning
5289 , p_source_12 => p_source_12
5290          , x_transaction_coa_id       => l_adr_transaction_coa_id
5291          , x_accounting_coa_id        => l_adr_accounting_coa_id
5292          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
5293          , x_flex_value_set_id        => l_adr_flex_value_set_id
5294          , x_value_type_code          => l_adr_value_type_code
5295          , x_value_combination_id     => l_adr_value_combination_id
5296          , x_value_segment_code       => l_adr_value_segment_code
5297          , p_side                     => 'NA'
5298          , p_override_seg_flag        => 'Y'
5299    );
5300 
5301    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
5302 
5303       xla_ae_lines_pkg.set_segment(
5304           p_to_segment_code         => 'GL_ACCOUNT'
5305         , p_segment_value           => l_segment
5306         , p_from_segment_code       => l_adr_value_segment_code
5307         , p_from_combination_id     => l_adr_value_combination_id
5308         , p_value_type_code         => l_adr_value_type_code
5309         , p_transaction_coa_id      => l_adr_transaction_coa_id
5310         , p_accounting_coa_id       => l_adr_accounting_coa_id
5311         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
5312         , p_flex_value_set_id       => l_adr_flex_value_set_id
5313         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
5314         , p_adr_type_code           => 'S'
5315         , p_component_type          => l_component_type
5316         , p_component_code          => l_component_code
5317         , p_component_type_code     => l_component_type_code
5318         , p_component_appl_id       => l_component_appl_id
5319         , p_amb_context_code        => l_amb_context_code
5320         , p_entity_code             => 'AP_INVOICES'
5321         , p_event_class_code        => 'CREDIT MEMOS'
5322         , p_side                    => 'NA'
5323         );
5324 
5325   END IF;
5326 
5327    --
5328    --
5329    END IF;
5330    --
5331    -- Bug 4922099
5332    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5333           (NVL(l_enc_upg_option, 'N') = 'O')
5334         ) AND
5335         (l_bflow_method_code = 'PRIOR_ENTRY')
5336       )
5337    THEN
5338       IF
5339       --
5340       1 = 2
5341       --
5342       THEN
5343       xla_accounting_err_pkg.build_message
5344                                     (p_appli_s_name            => 'XLA'
5345                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5346                                     ,p_token_1                 => 'LINE_NUMBER'
5350                                                                              l_component_type
5347                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5348                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5349                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5351                                                                             ,l_component_code
5352                                                                             ,l_component_type_code
5353                                                                             ,l_component_appl_id
5354                                                                             ,l_amb_context_code
5355                                                                             ,l_entity_code
5356                                                                             ,l_event_class_code
5357                                                                            )
5358                                     ,p_token_3                 => 'OWNER'
5359                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5360                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5361                                                                           ,p_lookup_code    => l_component_type_code
5362                                                                          )
5363                                     ,p_token_4                 => 'PRODUCT_NAME'
5364                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5365                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5366                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5367                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5368                                     ,p_ae_header_id            =>  NULL
5369                                        );
5370 
5371         IF (C_LEVEL_ERROR>= g_log_level) THEN
5372                  trace
5373                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5374                       ,p_level    => C_LEVEL_ERROR
5375                       ,p_module   => l_log_module);
5376         END IF;
5377       END IF;
5378    END IF;
5379    --
5380    --
5381    ------------------------------------------------------------------------------------------------
5382    -- 4219869 Business Flow
5383    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5384    -- Prior Entry.  Currently, the following code is always generated.
5385    ------------------------------------------------------------------------------------------------
5386    XLA_AE_LINES_PKG.ValidateCurrentLine;
5387 
5388    ------------------------------------------------------------------------------------
5389    -- 4219869 Business Flow
5390    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5391    ------------------------------------------------------------------------------------
5392    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5393 
5394    ----------------------------------------------------------------------------------
5395    -- 4219869 Business Flow
5396    -- Update journal entry status -- Need to generate this within IF <condition>
5397    ----------------------------------------------------------------------------------
5398    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5399          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5400          ,p_balance_type_code => l_balance_type_code
5401          );
5402 
5403    -------------------------------------------------------------------------------------------
5404    -- 4262811 - Generate the Accrual Reversal lines
5405    -------------------------------------------------------------------------------------------
5406    BEGIN
5407       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5408                               (g_array_event(p_event_id).array_value_num('header_index'));
5409       IF l_acc_rev_flag IS NULL THEN
5410          l_acc_rev_flag := 'N';
5411       END IF;
5412    EXCEPTION
5413       WHEN OTHERS THEN
5414          l_acc_rev_flag := 'N';
5415    END;
5416    --
5417    IF (l_acc_rev_flag = 'Y') THEN
5418 
5419        -- 4645092  ------------------------------------------------------------------------------
5420        -- To allow MPA report to determine if it should generate report process
5421        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5422        ------------------------------------------------------------------------------------------
5423 
5424        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5425        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5426    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5427    -- call ADRs
5428    -- Bug 4922099
5429    --
5430    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5431         (NVL(l_actual_upg_option, 'N') = 'O') OR
5432         (NVL(l_enc_upg_option, 'N') = 'O')
5433       )
5434    THEN
5435    NULL;
5436    --
5437    --
5438    
5439   l_ccid := AcctDerRule_3(
5440            p_application_id           => p_application_id
5441          , p_ae_header_id             => l_ae_header_id 
5442 , p_source_2 => p_source_2
5446          , p_side                     => 'NA'
5443          , x_transaction_coa_id       => l_adr_transaction_coa_id
5444          , x_accounting_coa_id        => l_adr_accounting_coa_id
5445          , x_value_type_code          => l_adr_value_type_code
5447    );
5448 
5449    xla_ae_lines_pkg.set_ccid(
5450     p_code_combination_id          => l_ccid
5451   , p_value_type_code              => l_adr_value_type_code
5452   , p_transaction_coa_id           => l_adr_transaction_coa_id
5453   , p_accounting_coa_id            => l_adr_accounting_coa_id
5454   , p_adr_code                     => 'AP_INVOICE_DIST'
5455   , p_adr_type_code                => 'S'
5456   , p_component_type               => l_component_type
5457   , p_component_code               => l_component_code
5458   , p_component_type_code          => l_component_type_code
5459   , p_component_appl_id            => l_component_appl_id
5460   , p_amb_context_code             => l_amb_context_code
5461   , p_side                         => 'NA'
5462   );
5463 
5464 
5465    l_segment := AcctDerRule_14(
5466            p_application_id           => p_application_id
5467          , p_ae_header_id             => l_ae_header_id 
5468 , p_source_11 => p_source_11
5469 , p_source_11_meaning => p_source_11_meaning
5470 , p_source_12 => p_source_12
5471          , x_transaction_coa_id       => l_adr_transaction_coa_id
5472          , x_accounting_coa_id        => l_adr_accounting_coa_id
5473          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
5474          , x_flex_value_set_id        => l_adr_flex_value_set_id
5475          , x_value_type_code          => l_adr_value_type_code
5476          , x_value_combination_id     => l_adr_value_combination_id
5477          , x_value_segment_code       => l_adr_value_segment_code
5478          , p_side                     => 'NA'
5479          , p_override_seg_flag        => 'Y'
5480    );
5481 
5482    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
5483 
5484       xla_ae_lines_pkg.set_segment(
5485           p_to_segment_code         => 'GL_ACCOUNT'
5486         , p_segment_value           => l_segment
5487         , p_from_segment_code       => l_adr_value_segment_code
5488         , p_from_combination_id     => l_adr_value_combination_id
5489         , p_value_type_code         => l_adr_value_type_code
5490         , p_transaction_coa_id      => l_adr_transaction_coa_id
5491         , p_accounting_coa_id       => l_adr_accounting_coa_id
5492         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
5493         , p_flex_value_set_id       => l_adr_flex_value_set_id
5494         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
5495         , p_adr_type_code           => 'S'
5496         , p_component_type          => l_component_type
5497         , p_component_code          => l_component_code
5498         , p_component_type_code     => l_component_type_code
5499         , p_component_appl_id       => l_component_appl_id
5500         , p_amb_context_code        => l_amb_context_code
5501         , p_entity_code             => 'AP_INVOICES'
5502         , p_event_class_code        => 'CREDIT MEMOS'
5503         , p_side                    => 'NA'
5504         );
5505 
5506   END IF;
5507 
5508    --
5509    --
5510    END IF;
5511 
5512        --
5513        -- Update the line information that should be overwritten
5514        --
5515        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5516                                          p_header_num   => 1);
5517        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5518 
5519        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5520 
5521        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5522           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5523        END IF;
5524 
5525       --
5526       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5527       --
5528       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5529           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5530       ELSE
5531           ---------------------------------------------------------------------------------------------------
5532           -- 4262811a Switch Sign
5533           ---------------------------------------------------------------------------------------------------
5534           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5535           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5536                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5537           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5538                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5539           -- 5132302
5540           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5541                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5542 
5543       END IF;
5544 
5545       -- 4955764
5549 
5546       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5547       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5548 
5550       XLA_AE_LINES_PKG.ValidateCurrentLine;
5551       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5552 
5553       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5554                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5555                ,p_balance_type_code => l_balance_type_code);
5556 
5557    END IF;
5558 
5559    -----------------------------------------------------------------------------------------
5560    -- 4262811 Multiperiod Accounting
5561    -----------------------------------------------------------------------------------------
5562      -- No MPA option is assigned.
5563 
5564 
5565 END IF;
5566 END IF;
5567 --
5568 
5569 --
5570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5571    trace
5572       (p_msg      => 'END of AcctLineType_20'
5573       ,p_level    => C_LEVEL_PROCEDURE
5574       ,p_module   => l_log_module);
5575 END IF;
5576 --
5577 EXCEPTION
5578   WHEN xla_exceptions_pkg.application_exception THEN
5579       RAISE;
5580   WHEN OTHERS THEN
5581        xla_exceptions_pkg.raise_message
5582            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_20');
5583 END AcctLineType_20;
5584 --
5585 
5586 ---------------------------------------
5587 --
5588 -- PRIVATE FUNCTION
5589 --         AcctLineType_21
5590 --
5591 ---------------------------------------
5592 PROCEDURE AcctLineType_21 (
5593   p_application_id        IN NUMBER
5594  ,p_event_id              IN NUMBER
5595  ,p_calculate_acctd_flag  IN VARCHAR2
5596  ,p_calculate_g_l_flag    IN VARCHAR2
5597  ,p_actual_flag           IN OUT VARCHAR2
5598  ,p_balance_type_code     OUT VARCHAR2
5599  ,p_gain_or_loss_ref      OUT VARCHAR2
5600  
5601 --Invoice Distribution Description
5602  , p_source_1            IN VARCHAR2
5603 --Invoice Distribution Account
5604  , p_source_2            IN NUMBER
5605 --Federal Fund Category
5606  , p_source_4            IN VARCHAR2
5607 --Federal Fund Expired Status
5608  , p_source_5            IN VARCHAR2
5609 --Federal Fund Category Description
5610  , p_source_6            IN VARCHAR2
5611 --Invoice Distribution Type
5612  , p_source_8            IN VARCHAR2
5613  , p_source_8_meaning    IN VARCHAR2
5614 --Federal Prior Year Flag
5615  , p_source_9            IN VARCHAR2
5616 --Invoice Type
5617  , p_source_13            IN VARCHAR2
5618  , p_source_13_meaning    IN VARCHAR2
5619 --Federal Adjustment Type
5620  , p_source_14            IN VARCHAR2
5621 --Accounting Reversal Indicator
5622  , p_source_15            IN VARCHAR2
5623 --Distribution Link Type
5624  , p_source_17            IN VARCHAR2
5625 --Allocation to Main Distribution Identifier
5626  , p_source_19            IN NUMBER
5627 --Invoice Identifier
5628  , p_source_20            IN NUMBER
5629 --Business Flow Accounts Payable Application Identifier
5630  , p_source_21            IN NUMBER
5631 --Business Flow Invoice Distribution Type
5632  , p_source_22            IN VARCHAR2
5633 --Business Flow Invoice Entity Code
5634  , p_source_23            IN VARCHAR2
5635 --Business Flow Invoice Distribution Identifier
5636  , p_source_24            IN NUMBER
5637 --Business Flow Invoice Identifier
5638  , p_source_25            IN NUMBER
5639 --Invoice Distribution Identifier
5640  , p_source_26            IN NUMBER
5641 --Payables Encumbrance Upgrade Credit Account
5642  , p_source_27            IN NUMBER
5643 --Payables Encumbrance Upgrade Credit Amount
5644  , p_source_28            IN NUMBER
5645 --Invoice Currency Code
5646  , p_source_29            IN VARCHAR2
5647 --Payables Encumbrance Upgrade Credit Base Amount
5648  , p_source_30            IN NUMBER
5649 --Payables Encumbrance Upgrade Debit Account
5650  , p_source_31            IN NUMBER
5651 --Payables Encumbrance Upgrade Debit Amount
5652  , p_source_32            IN NUMBER
5653 --Payables Encumbrance Upgrade Debit Base Amount
5654  , p_source_33            IN NUMBER
5655 --Payables Encumbrance Upgrade Option
5656  , p_source_34            IN VARCHAR2
5657 --Invoice Exchange Date
5658  , p_source_36            IN DATE
5659 --Invoice Exchange Rate
5660  , p_source_37            IN NUMBER
5661 --Invoice Exchange Rate Type
5662  , p_source_38            IN VARCHAR2
5663 --Deferred Accounting End Date
5664  , p_source_39            IN DATE
5665 --Deferred Accounting Option
5666  , p_source_40            IN VARCHAR2
5667 --Deferred Accounting Start Date
5668  , p_source_41            IN DATE
5669 --Override Accounted Amount Indicator
5670  , p_source_42            IN VARCHAR2
5671  , p_source_42_meaning    IN VARCHAR2
5672 --Invoice Supplier Identifier
5673  , p_source_43            IN NUMBER
5674 --Invoice Supplier Site Identifier
5675  , p_source_44            IN NUMBER
5676 --Third Party Type
5677  , p_source_45            IN VARCHAR2
5678 --Parent Reversal Identifier
5679  , p_source_46            IN NUMBER
5680 --Invoice Distribution Statistical Amount
5681  , p_source_47            IN NUMBER
5682 --Invoice Distribution Tax Line Identifier
5683  , p_source_48            IN NUMBER
5684 --Invoice Distribution Tax Distribution Identifier from Tax
5685  , p_source_49            IN NUMBER
5689  , p_source_51            IN NUMBER
5686 --Invoice Distribution Summary Tax Line Identifier
5687  , p_source_50            IN NUMBER
5688 --Payables Upgrade Credit Encumbrance Type Identifier
5690 --Payables Upgrade Debit Encumbrance Type Identifier
5691  , p_source_52            IN NUMBER
5692 --Invoice Distribution Amount
5693  , p_source_55            IN NUMBER
5694 --Invoice Distribution Ledger Amount
5695  , p_source_56            IN NUMBER
5696 )
5697 IS
5698 
5699 l_component_type              VARCHAR2(80);
5700 l_component_code              VARCHAR2(30);
5701 l_component_type_code         VARCHAR2(1);
5702 l_component_appl_id           INTEGER;
5703 l_amb_context_code            VARCHAR2(30);
5704 l_entity_code                 VARCHAR2(30);
5705 l_event_class_code            VARCHAR2(30);
5706 l_ae_header_id                NUMBER;
5707 l_event_type_code             VARCHAR2(30);
5708 l_line_definition_code        VARCHAR2(30);
5709 l_line_definition_owner_code  VARCHAR2(1);
5710 --
5711 -- adr variables
5712 l_segment                     VARCHAR2(30);
5713 l_ccid                        NUMBER;
5714 l_adr_transaction_coa_id      NUMBER;
5715 l_adr_accounting_coa_id       NUMBER;
5716 l_adr_flexfield_segment_code  VARCHAR2(30);
5717 l_adr_flex_value_set_id       NUMBER;
5718 l_adr_value_type_code         VARCHAR2(30);
5719 l_adr_value_combination_id    NUMBER;
5720 l_adr_value_segment_code      VARCHAR2(30);
5721 
5722 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5723 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5724 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5725 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5726 
5727 -- 4262811 Variables ------------------------------------------------------------------------------------------
5728 l_entered_amt_idx             NUMBER;
5729 l_accted_amt_idx              NUMBER;
5730 l_acc_rev_flag                VARCHAR2(1);
5731 l_accrual_line_num            NUMBER;
5732 l_tmp_amt                     NUMBER;
5733 l_acc_rev_natural_side_code   VARCHAR2(1);
5734 
5735 l_num_entries                 NUMBER;
5736 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5737 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5738 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5739 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5740 l_recog_line_1                NUMBER;
5741 l_recog_line_2                NUMBER;
5742 
5743 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5744 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5745 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5746 
5747 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5748 
5749 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5750 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5751 
5752 ---------------------------------------------------------------------------------------------------------------
5753 
5754 
5755 --
5756 -- bulk performance
5757 --
5758 l_balance_type_code           VARCHAR2(1);
5759 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5760 l_log_module                  VARCHAR2(240);
5761 
5762 --
5763 -- Upgrade strategy
5764 --
5765 l_actual_upg_option           VARCHAR2(1);
5766 l_enc_upg_option           VARCHAR2(1);
5767 
5768 --
5769 BEGIN
5770 --
5771 IF g_log_enabled THEN
5772       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
5773 END IF;
5774 --
5775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5776 
5777       trace
5778          (p_msg      => 'BEGIN of AcctLineType_21'
5779          ,p_level    => C_LEVEL_PROCEDURE
5780          ,p_module   => l_log_module);
5781 
5782 END IF;
5783 --
5784 l_component_type             := 'AMB_JLT';
5785 l_component_code             := 'FV_AP_CM_ UPWARD_PYA_DR';
5786 l_component_type_code        := 'S';
5787 l_component_appl_id          :=  200;
5788 l_amb_context_code           := 'DEFAULT';
5789 l_entity_code                := 'AP_INVOICES';
5790 l_event_class_code           := 'CREDIT MEMOS';
5791 l_event_type_code            := 'CREDIT MEMOS_ALL';
5792 l_line_definition_owner_code := 'S';
5793 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
5794 --
5795 l_balance_type_code          := 'A';
5796 l_segment                     := NULL;
5797 l_ccid                        := NULL;
5798 l_adr_transaction_coa_id      := NULL;
5799 l_adr_accounting_coa_id       := NULL;
5800 l_adr_flexfield_segment_code  := NULL;
5801 l_adr_flex_value_set_id       := NULL;
5802 l_adr_value_type_code         := NULL;
5803 l_adr_value_combination_id    := NULL;
5804 l_adr_value_segment_code      := NULL;
5805 
5806 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5807 l_bflow_class_code           := '';    -- 4219869 Business Flow
5808 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5809 l_budgetary_control_flag     := 'Y';
5810 
5811 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5812 l_bflow_applied_to_amt       := NULL; -- 5132302
5813 l_entered_amt_idx            := NULL;          -- 4262811
5814 l_accted_amt_idx             := NULL;          -- 4262811
5818 --
5815 l_acc_rev_flag               := NULL;          -- 4262811
5816 l_accrual_line_num           := NULL;          -- 4262811
5817 l_tmp_amt                    := NULL;          -- 4262811
5819  
5820 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5821     l_balance_type_code <> 'B' THEN
5822 IF NVL(p_source_13,'
5823 ') =  'CREDIT' AND 
5824 (NVL(p_source_8,'
5825 ') =  'ITEM' OR 
5826 NVL(p_source_8,'
5827 ') =  'ACCRUAL' OR 
5828 NVL(p_source_8,'
5829 ') =  'FREIGHT' OR 
5830 NVL(p_source_8,'
5831 ') =  'MISCELLANEOUS' OR 
5832 NVL(p_source_8,'
5833 ') =  'IPV') AND 
5834 NVL(p_source_14,'
5835 ') =  'Upward' AND 
5836 NVL(p_source_9,'
5837 ') =  'Y'
5838  THEN 
5839 
5840    --
5841    XLA_AE_LINES_PKG.SetNewLine;
5842 
5843    p_balance_type_code          := l_balance_type_code;
5844    -- set the flag so later we will know whether the gain loss line needs to be created
5845    
5846    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5847      p_actual_flag :='A';
5848    END IF;
5849 
5850    --
5851    -- bulk performance
5852    --
5853    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5854                                       p_header_num   => 0); -- 4262811
5855    --
5856    -- set accounting line options
5857    --
5858    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5859            p_natural_side_code          => 'C'
5860          , p_gain_or_loss_flag          => 'N'
5861          , p_gl_transfer_mode_code      => 'S'
5862          , p_acct_entry_type_code       => 'A'
5863          , p_switch_side_flag           => 'N'
5864          , p_merge_duplicate_code       => 'N'
5865          );
5866    --
5867    l_acc_rev_natural_side_code := 'D';  -- 4262811
5868    -- 
5869    --
5870    -- set accounting line type info
5871    --
5872    xla_ae_lines_pkg.SetAcctLineType
5873       (p_component_type             => l_component_type
5874       ,p_event_type_code            => l_event_type_code
5875       ,p_line_definition_owner_code => l_line_definition_owner_code
5876       ,p_line_definition_code       => l_line_definition_code
5877       ,p_accounting_line_code       => l_component_code
5878       ,p_accounting_line_type_code  => l_component_type_code
5879       ,p_accounting_line_appl_id    => l_component_appl_id
5880       ,p_amb_context_code           => l_amb_context_code
5881       ,p_entity_code                => l_entity_code
5882       ,p_event_class_code           => l_event_class_code);
5883    --
5884    -- set accounting class
5885    --
5886    xla_ae_lines_pkg.SetAcctClass(
5887            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
5888          , p_ae_header_id           => l_ae_header_id
5889          );
5890 
5891    --
5892    -- set rounding class
5893    --
5894    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5895                       'ACCOUNTSPAYABLE';
5896 
5897    --
5898    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5899    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5900    --
5901    -- bulk performance
5902    --
5903    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5904 
5905    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5906       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5907 
5908    -- 4955764
5909    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5910       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5911 
5912    -- 4458381 Public Sector Enh
5913    
5914    --
5915    -- set accounting attributes for the line type
5916    --
5917    l_entered_amt_idx := 23;
5918    l_accted_amt_idx  := 28;
5919    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5920    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5921    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
5922    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5923    l_rec_acct_attrs.array_num_value(2)  := 
5924 xla_ae_sources_pkg.GetSystemSourceNum(
5925    p_source_code           => 'XLA_EVENT_APPL_ID'
5926  , p_source_type_code      => 'Y'
5927  , p_source_application_id =>  602
5928 );
5929    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5930    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
5931    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5932    l_rec_acct_attrs.array_char_value(4)  := 
5933 xla_ae_sources_pkg.GetSystemSourceChar(
5934    p_source_code           => 'XLA_ENTITY_CODE'
5935  , p_source_type_code      => 'Y'
5936  , p_source_application_id =>  602
5937 );
5938    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5939    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
5940    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5941    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
5942    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5943    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
5947    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
5944    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5945    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
5946    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5948    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5949    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
5950    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5951    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
5952    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5953    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
5954    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5955    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
5956    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5957    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
5958    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5959    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
5960    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5961    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
5962    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5963    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
5964    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5965    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
5966    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5967    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
5968    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5969    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
5970    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5971    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
5972    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5973    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
5974    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5975    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
5976    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5977    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
5978    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
5979    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
5980    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
5981    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
5982    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
5983    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
5984    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
5985    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
5986    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
5987    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
5988    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
5989    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
5990    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
5991    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
5992    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
5993    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
5994    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
5995    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
5996    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
5997    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
5998    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
5999    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
6000    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
6001    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
6002    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
6003    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
6004    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
6005    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
6006    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
6007    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
6008    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
6009    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
6010    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
6011    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
6012    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
6013    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
6014    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
6015    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
6016 
6017    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6018    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6019 
6020    ---------------------------------------------------------------------------------------------------------------
6021    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6022    ---------------------------------------------------------------------------------------------------------------
6023    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6024 
6025    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6029          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6026    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6027 
6028    IF xla_accounting_cache_pkg.GetValueChar
6030          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6031    AND l_bflow_method_code = 'PRIOR_ENTRY'
6032 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6033    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6034          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6035        )
6036    THEN
6037          xla_ae_lines_pkg.BflowUpgEntry
6038            (p_business_method_code    => l_bflow_method_code
6039            ,p_business_class_code     => l_bflow_class_code
6040            ,p_balance_type            => l_balance_type_code);
6041    ELSE
6042       NULL;
6043 -- No business flow processing for business flow method of NONE.
6044    END IF;
6045 
6046    --
6047    -- call analytical criteria
6048    --
6049    
6050    --
6051    -- call description
6052    --
6053    
6054 xla_ae_lines_pkg.SetLineDescription(
6055    p_ae_header_id => l_ae_header_id
6056   ,p_description  => Description_2 (
6057      p_application_id         => p_application_id
6058    , p_ae_header_id           => l_ae_header_id 
6059 , p_source_1 => p_source_1
6060    )
6061 );
6062 
6063 
6064    --
6065    -- call ADRs
6066    -- Bug 4922099
6067    --
6068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6069         (NVL(l_actual_upg_option, 'N') = 'O') OR
6070         (NVL(l_enc_upg_option, 'N') = 'O')
6071       )
6072    THEN
6073    NULL;
6074    --
6075    --
6076    
6077   l_ccid := AcctDerRule_3(
6078            p_application_id           => p_application_id
6079          , p_ae_header_id             => l_ae_header_id 
6080 , p_source_2 => p_source_2
6081          , x_transaction_coa_id       => l_adr_transaction_coa_id
6082          , x_accounting_coa_id        => l_adr_accounting_coa_id
6083          , x_value_type_code          => l_adr_value_type_code
6084          , p_side                     => 'NA'
6085    );
6086 
6087    xla_ae_lines_pkg.set_ccid(
6088     p_code_combination_id          => l_ccid
6089   , p_value_type_code              => l_adr_value_type_code
6090   , p_transaction_coa_id           => l_adr_transaction_coa_id
6091   , p_accounting_coa_id            => l_adr_accounting_coa_id
6092   , p_adr_code                     => 'AP_INVOICE_DIST'
6093   , p_adr_type_code                => 'S'
6094   , p_component_type               => l_component_type
6095   , p_component_code               => l_component_code
6096   , p_component_type_code          => l_component_type_code
6097   , p_component_appl_id            => l_component_appl_id
6098   , p_amb_context_code             => l_amb_context_code
6099   , p_side                         => 'NA'
6100   );
6101 
6102 
6103    l_segment := AcctDerRule_8(
6104            p_application_id           => p_application_id
6105          , p_ae_header_id             => l_ae_header_id 
6106 , p_source_4 => p_source_4
6107 , p_source_5 => p_source_5
6108 , p_source_6 => p_source_6
6109          , x_transaction_coa_id       => l_adr_transaction_coa_id
6110          , x_accounting_coa_id        => l_adr_accounting_coa_id
6111          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6112          , x_flex_value_set_id        => l_adr_flex_value_set_id
6113          , x_value_type_code          => l_adr_value_type_code
6114          , x_value_combination_id     => l_adr_value_combination_id
6115          , x_value_segment_code       => l_adr_value_segment_code
6116          , p_side                     => 'NA'
6117          , p_override_seg_flag        => 'Y'
6118    );
6119 
6120    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6121 
6122       xla_ae_lines_pkg.set_segment(
6123           p_to_segment_code         => 'GL_ACCOUNT'
6124         , p_segment_value           => l_segment
6125         , p_from_segment_code       => l_adr_value_segment_code
6126         , p_from_combination_id     => l_adr_value_combination_id
6127         , p_value_type_code         => l_adr_value_type_code
6128         , p_transaction_coa_id      => l_adr_transaction_coa_id
6129         , p_accounting_coa_id       => l_adr_accounting_coa_id
6130         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6131         , p_flex_value_set_id       => l_adr_flex_value_set_id
6132         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
6133         , p_adr_type_code           => 'S'
6134         , p_component_type          => l_component_type
6135         , p_component_code          => l_component_code
6136         , p_component_type_code     => l_component_type_code
6137         , p_component_appl_id       => l_component_appl_id
6138         , p_amb_context_code        => l_amb_context_code
6139         , p_entity_code             => 'AP_INVOICES'
6140         , p_event_class_code        => 'CREDIT MEMOS'
6141         , p_side                    => 'NA'
6142         );
6143 
6144   END IF;
6145 
6146    --
6147    --
6148    END IF;
6149    --
6150    -- Bug 4922099
6151    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6152           (NVL(l_enc_upg_option, 'N') = 'O')
6153         ) AND
6154         (l_bflow_method_code = 'PRIOR_ENTRY')
6155       )
6156    THEN
6157       IF
6161       THEN
6158       --
6159       1 = 2
6160       --
6162       xla_accounting_err_pkg.build_message
6163                                     (p_appli_s_name            => 'XLA'
6164                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6165                                     ,p_token_1                 => 'LINE_NUMBER'
6166                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6167                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6168                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6169                                                                              l_component_type
6170                                                                             ,l_component_code
6171                                                                             ,l_component_type_code
6172                                                                             ,l_component_appl_id
6173                                                                             ,l_amb_context_code
6174                                                                             ,l_entity_code
6175                                                                             ,l_event_class_code
6176                                                                            )
6177                                     ,p_token_3                 => 'OWNER'
6178                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6179                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6180                                                                           ,p_lookup_code    => l_component_type_code
6181                                                                          )
6182                                     ,p_token_4                 => 'PRODUCT_NAME'
6183                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6184                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6185                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6186                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6187                                     ,p_ae_header_id            =>  NULL
6188                                        );
6189 
6190         IF (C_LEVEL_ERROR>= g_log_level) THEN
6191                  trace
6192                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6193                       ,p_level    => C_LEVEL_ERROR
6194                       ,p_module   => l_log_module);
6195         END IF;
6196       END IF;
6197    END IF;
6198    --
6199    --
6200    ------------------------------------------------------------------------------------------------
6201    -- 4219869 Business Flow
6202    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6203    -- Prior Entry.  Currently, the following code is always generated.
6204    ------------------------------------------------------------------------------------------------
6205    XLA_AE_LINES_PKG.ValidateCurrentLine;
6206 
6207    ------------------------------------------------------------------------------------
6208    -- 4219869 Business Flow
6209    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6210    ------------------------------------------------------------------------------------
6211    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6212 
6213    ----------------------------------------------------------------------------------
6214    -- 4219869 Business Flow
6215    -- Update journal entry status -- Need to generate this within IF <condition>
6216    ----------------------------------------------------------------------------------
6217    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6218          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6219          ,p_balance_type_code => l_balance_type_code
6220          );
6221 
6222    -------------------------------------------------------------------------------------------
6223    -- 4262811 - Generate the Accrual Reversal lines
6224    -------------------------------------------------------------------------------------------
6225    BEGIN
6226       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6227                               (g_array_event(p_event_id).array_value_num('header_index'));
6228       IF l_acc_rev_flag IS NULL THEN
6229          l_acc_rev_flag := 'N';
6230       END IF;
6231    EXCEPTION
6232       WHEN OTHERS THEN
6233          l_acc_rev_flag := 'N';
6234    END;
6235    --
6236    IF (l_acc_rev_flag = 'Y') THEN
6237 
6238        -- 4645092  ------------------------------------------------------------------------------
6239        -- To allow MPA report to determine if it should generate report process
6240        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6241        ------------------------------------------------------------------------------------------
6242 
6243        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6244        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6245    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6246    -- call ADRs
6247    -- Bug 4922099
6248    --
6249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6250         (NVL(l_actual_upg_option, 'N') = 'O') OR
6254    NULL;
6251         (NVL(l_enc_upg_option, 'N') = 'O')
6252       )
6253    THEN
6255    --
6256    --
6257    
6258   l_ccid := AcctDerRule_3(
6259            p_application_id           => p_application_id
6260          , p_ae_header_id             => l_ae_header_id 
6261 , p_source_2 => p_source_2
6262          , x_transaction_coa_id       => l_adr_transaction_coa_id
6263          , x_accounting_coa_id        => l_adr_accounting_coa_id
6264          , x_value_type_code          => l_adr_value_type_code
6265          , p_side                     => 'NA'
6266    );
6267 
6268    xla_ae_lines_pkg.set_ccid(
6269     p_code_combination_id          => l_ccid
6270   , p_value_type_code              => l_adr_value_type_code
6271   , p_transaction_coa_id           => l_adr_transaction_coa_id
6272   , p_accounting_coa_id            => l_adr_accounting_coa_id
6273   , p_adr_code                     => 'AP_INVOICE_DIST'
6274   , p_adr_type_code                => 'S'
6275   , p_component_type               => l_component_type
6276   , p_component_code               => l_component_code
6277   , p_component_type_code          => l_component_type_code
6278   , p_component_appl_id            => l_component_appl_id
6279   , p_amb_context_code             => l_amb_context_code
6280   , p_side                         => 'NA'
6281   );
6282 
6283 
6284    l_segment := AcctDerRule_8(
6285            p_application_id           => p_application_id
6286          , p_ae_header_id             => l_ae_header_id 
6287 , p_source_4 => p_source_4
6288 , p_source_5 => p_source_5
6289 , p_source_6 => p_source_6
6290          , x_transaction_coa_id       => l_adr_transaction_coa_id
6291          , x_accounting_coa_id        => l_adr_accounting_coa_id
6292          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6293          , x_flex_value_set_id        => l_adr_flex_value_set_id
6294          , x_value_type_code          => l_adr_value_type_code
6295          , x_value_combination_id     => l_adr_value_combination_id
6296          , x_value_segment_code       => l_adr_value_segment_code
6297          , p_side                     => 'NA'
6298          , p_override_seg_flag        => 'Y'
6299    );
6300 
6301    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6302 
6303       xla_ae_lines_pkg.set_segment(
6304           p_to_segment_code         => 'GL_ACCOUNT'
6305         , p_segment_value           => l_segment
6306         , p_from_segment_code       => l_adr_value_segment_code
6307         , p_from_combination_id     => l_adr_value_combination_id
6308         , p_value_type_code         => l_adr_value_type_code
6309         , p_transaction_coa_id      => l_adr_transaction_coa_id
6310         , p_accounting_coa_id       => l_adr_accounting_coa_id
6311         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6312         , p_flex_value_set_id       => l_adr_flex_value_set_id
6313         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
6314         , p_adr_type_code           => 'S'
6315         , p_component_type          => l_component_type
6316         , p_component_code          => l_component_code
6317         , p_component_type_code     => l_component_type_code
6318         , p_component_appl_id       => l_component_appl_id
6319         , p_amb_context_code        => l_amb_context_code
6320         , p_entity_code             => 'AP_INVOICES'
6321         , p_event_class_code        => 'CREDIT MEMOS'
6322         , p_side                    => 'NA'
6323         );
6324 
6325   END IF;
6326 
6327    --
6328    --
6329    END IF;
6330 
6331        --
6332        -- Update the line information that should be overwritten
6333        --
6334        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6335                                          p_header_num   => 1);
6336        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6337 
6338        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6339 
6340        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6341           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6342        END IF;
6343 
6344       --
6345       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6346       --
6347       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6348           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6349       ELSE
6350           ---------------------------------------------------------------------------------------------------
6351           -- 4262811a Switch Sign
6352           ---------------------------------------------------------------------------------------------------
6353           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6354           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6355                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6356           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6357                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6358           -- 5132302
6359           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6360                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6361 
6362       END IF;
6366       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6363 
6364       -- 4955764
6365       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6367 
6368 
6369       XLA_AE_LINES_PKG.ValidateCurrentLine;
6370       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6371 
6372       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6373                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6374                ,p_balance_type_code => l_balance_type_code);
6375 
6376    END IF;
6377 
6378    -----------------------------------------------------------------------------------------
6379    -- 4262811 Multiperiod Accounting
6380    -----------------------------------------------------------------------------------------
6381      -- No MPA option is assigned.
6382 
6383 
6384 END IF;
6385 END IF;
6386 --
6387 
6388 --
6389 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6390    trace
6391       (p_msg      => 'END of AcctLineType_21'
6392       ,p_level    => C_LEVEL_PROCEDURE
6393       ,p_module   => l_log_module);
6394 END IF;
6395 --
6396 EXCEPTION
6397   WHEN xla_exceptions_pkg.application_exception THEN
6398       RAISE;
6399   WHEN OTHERS THEN
6400        xla_exceptions_pkg.raise_message
6401            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_21');
6402 END AcctLineType_21;
6403 --
6404 
6405 ---------------------------------------
6406 --
6407 -- PRIVATE FUNCTION
6408 --         AcctLineType_22
6409 --
6410 ---------------------------------------
6411 PROCEDURE AcctLineType_22 (
6412   p_application_id        IN NUMBER
6413  ,p_event_id              IN NUMBER
6414  ,p_calculate_acctd_flag  IN VARCHAR2
6415  ,p_calculate_g_l_flag    IN VARCHAR2
6416  ,p_actual_flag           IN OUT VARCHAR2
6417  ,p_balance_type_code     OUT VARCHAR2
6418  ,p_gain_or_loss_ref      OUT VARCHAR2
6419  
6420 --Invoice Distribution Description
6421  , p_source_1            IN VARCHAR2
6422 --Invoice Distribution Account
6423  , p_source_2            IN NUMBER
6424 --Federal Fund Category Description
6425  , p_source_6            IN VARCHAR2
6426 --Accounting Reversal Indicator
6427  , p_source_15            IN VARCHAR2
6428 --Distribution Link Type
6429  , p_source_17            IN VARCHAR2
6430 --Allocation to Main Distribution Identifier
6431  , p_source_19            IN NUMBER
6432 --Invoice Identifier
6433  , p_source_20            IN NUMBER
6434 --Business Flow Accounts Payable Application Identifier
6435  , p_source_21            IN NUMBER
6436 --Business Flow Invoice Distribution Type
6437  , p_source_22            IN VARCHAR2
6438 --Business Flow Invoice Entity Code
6439  , p_source_23            IN VARCHAR2
6440 --Business Flow Invoice Distribution Identifier
6441  , p_source_24            IN NUMBER
6442 --Business Flow Invoice Identifier
6443  , p_source_25            IN NUMBER
6444 --Invoice Distribution Identifier
6445  , p_source_26            IN NUMBER
6446 --Payables Encumbrance Upgrade Credit Account
6447  , p_source_27            IN NUMBER
6448 --Payables Encumbrance Upgrade Credit Amount
6449  , p_source_28            IN NUMBER
6450 --Invoice Currency Code
6451  , p_source_29            IN VARCHAR2
6452 --Payables Encumbrance Upgrade Credit Base Amount
6453  , p_source_30            IN NUMBER
6454 --Payables Encumbrance Upgrade Debit Account
6455  , p_source_31            IN NUMBER
6456 --Payables Encumbrance Upgrade Debit Amount
6457  , p_source_32            IN NUMBER
6458 --Payables Encumbrance Upgrade Debit Base Amount
6459  , p_source_33            IN NUMBER
6460 --Payables Encumbrance Upgrade Option
6461  , p_source_34            IN VARCHAR2
6462 --Invoice Exchange Date
6463  , p_source_36            IN DATE
6464 --Invoice Exchange Rate
6465  , p_source_37            IN NUMBER
6466 --Invoice Exchange Rate Type
6467  , p_source_38            IN VARCHAR2
6468 --Deferred Accounting End Date
6469  , p_source_39            IN DATE
6470 --Deferred Accounting Option
6471  , p_source_40            IN VARCHAR2
6472 --Deferred Accounting Start Date
6473  , p_source_41            IN DATE
6474 --Override Accounted Amount Indicator
6475  , p_source_42            IN VARCHAR2
6476  , p_source_42_meaning    IN VARCHAR2
6477 --Invoice Supplier Identifier
6478  , p_source_43            IN NUMBER
6479 --Invoice Supplier Site Identifier
6480  , p_source_44            IN NUMBER
6481 --Third Party Type
6482  , p_source_45            IN VARCHAR2
6483 --Parent Reversal Identifier
6484  , p_source_46            IN NUMBER
6485 --Invoice Distribution Statistical Amount
6486  , p_source_47            IN NUMBER
6487 --Invoice Distribution Tax Line Identifier
6488  , p_source_48            IN NUMBER
6489 --Invoice Distribution Tax Distribution Identifier from Tax
6490  , p_source_49            IN NUMBER
6491 --Invoice Distribution Summary Tax Line Identifier
6492  , p_source_50            IN NUMBER
6493 --Payables Upgrade Credit Encumbrance Type Identifier
6494  , p_source_51            IN NUMBER
6495 --Payables Upgrade Debit Encumbrance Type Identifier
6496  , p_source_52            IN NUMBER
6497 --Invoice Distribution Amount
6498  , p_source_55            IN NUMBER
6502 IS
6499 --Invoice Distribution Ledger Amount
6500  , p_source_56            IN NUMBER
6501 )
6503 
6504 l_component_type              VARCHAR2(80);
6505 l_component_code              VARCHAR2(30);
6506 l_component_type_code         VARCHAR2(1);
6507 l_component_appl_id           INTEGER;
6508 l_amb_context_code            VARCHAR2(30);
6509 l_entity_code                 VARCHAR2(30);
6510 l_event_class_code            VARCHAR2(30);
6511 l_ae_header_id                NUMBER;
6512 l_event_type_code             VARCHAR2(30);
6513 l_line_definition_code        VARCHAR2(30);
6514 l_line_definition_owner_code  VARCHAR2(1);
6515 --
6516 -- adr variables
6517 l_segment                     VARCHAR2(30);
6518 l_ccid                        NUMBER;
6519 l_adr_transaction_coa_id      NUMBER;
6520 l_adr_accounting_coa_id       NUMBER;
6521 l_adr_flexfield_segment_code  VARCHAR2(30);
6522 l_adr_flex_value_set_id       NUMBER;
6523 l_adr_value_type_code         VARCHAR2(30);
6524 l_adr_value_combination_id    NUMBER;
6525 l_adr_value_segment_code      VARCHAR2(30);
6526 
6527 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6528 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6529 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6530 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6531 
6532 -- 4262811 Variables ------------------------------------------------------------------------------------------
6533 l_entered_amt_idx             NUMBER;
6534 l_accted_amt_idx              NUMBER;
6535 l_acc_rev_flag                VARCHAR2(1);
6536 l_accrual_line_num            NUMBER;
6537 l_tmp_amt                     NUMBER;
6538 l_acc_rev_natural_side_code   VARCHAR2(1);
6539 
6540 l_num_entries                 NUMBER;
6541 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6542 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6543 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6544 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6545 l_recog_line_1                NUMBER;
6546 l_recog_line_2                NUMBER;
6547 
6548 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6549 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6550 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6551 
6552 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6553 
6554 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6555 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6556 
6557 ---------------------------------------------------------------------------------------------------------------
6558 
6559 
6560 --
6561 -- bulk performance
6562 --
6563 l_balance_type_code           VARCHAR2(1);
6564 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6565 l_log_module                  VARCHAR2(240);
6566 
6567 --
6568 -- Upgrade strategy
6569 --
6570 l_actual_upg_option           VARCHAR2(1);
6571 l_enc_upg_option           VARCHAR2(1);
6572 
6573 --
6574 BEGIN
6575 --
6576 IF g_log_enabled THEN
6577       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
6578 END IF;
6579 --
6580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6581 
6582       trace
6583          (p_msg      => 'BEGIN of AcctLineType_22'
6584          ,p_level    => C_LEVEL_PROCEDURE
6585          ,p_module   => l_log_module);
6586 
6587 END IF;
6588 --
6589 l_component_type             := 'AMB_JLT';
6590 l_component_code             := 'FV_AP_CM_DIRECT_FUND_CR';
6591 l_component_type_code        := 'S';
6592 l_component_appl_id          :=  200;
6593 l_amb_context_code           := 'DEFAULT';
6594 l_entity_code                := 'AP_INVOICES';
6595 l_event_class_code           := 'CREDIT MEMOS';
6596 l_event_type_code            := 'CREDIT MEMOS_ALL';
6597 l_line_definition_owner_code := 'S';
6598 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
6599 --
6600 l_balance_type_code          := 'A';
6601 l_segment                     := NULL;
6602 l_ccid                        := NULL;
6603 l_adr_transaction_coa_id      := NULL;
6604 l_adr_accounting_coa_id       := NULL;
6605 l_adr_flexfield_segment_code  := NULL;
6606 l_adr_flex_value_set_id       := NULL;
6607 l_adr_value_type_code         := NULL;
6608 l_adr_value_combination_id    := NULL;
6609 l_adr_value_segment_code      := NULL;
6610 
6611 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6612 l_bflow_class_code           := 'FV_DIRECT_FUND_CR';    -- 4219869 Business Flow
6613 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6614 l_budgetary_control_flag     := 'Y';
6615 
6616 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6617 l_bflow_applied_to_amt       := NULL; -- 5132302
6618 l_entered_amt_idx            := NULL;          -- 4262811
6619 l_accted_amt_idx             := NULL;          -- 4262811
6620 l_acc_rev_flag               := NULL;          -- 4262811
6621 l_accrual_line_num           := NULL;          -- 4262811
6622 l_tmp_amt                    := NULL;          -- 4262811
6623 --
6624  
6625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6626     l_balance_type_code <> 'B' THEN
6627 IF NVL(p_source_6,'
6631    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6628 ') =  'Direct' AND 
6629 NVL(
6630 xla_ae_sources_pkg.GetSystemSourceChar(
6632  , p_source_type_code      => 'Y'
6633  , p_source_application_id =>  602
6634 ),'
6635 ') <>  'CREDIT MEMO CANCELLED'
6636  THEN 
6637 
6638    --
6639    XLA_AE_LINES_PKG.SetNewLine;
6640 
6641    p_balance_type_code          := l_balance_type_code;
6642    -- set the flag so later we will know whether the gain loss line needs to be created
6643    
6644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6645      p_actual_flag :='A';
6646    END IF;
6647 
6648    --
6649    -- bulk performance
6650    --
6651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6652                                       p_header_num   => 0); -- 4262811
6653    --
6654    -- set accounting line options
6655    --
6656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6657            p_natural_side_code          => 'D'
6658          , p_gain_or_loss_flag          => 'N'
6659          , p_gl_transfer_mode_code      => 'S'
6660          , p_acct_entry_type_code       => 'A'
6661          , p_switch_side_flag           => 'N'
6662          , p_merge_duplicate_code       => 'N'
6663          );
6664    --
6665    l_acc_rev_natural_side_code := 'C';  -- 4262811
6666    -- 
6667    --
6668    -- set accounting line type info
6669    --
6670    xla_ae_lines_pkg.SetAcctLineType
6671       (p_component_type             => l_component_type
6672       ,p_event_type_code            => l_event_type_code
6673       ,p_line_definition_owner_code => l_line_definition_owner_code
6674       ,p_line_definition_code       => l_line_definition_code
6675       ,p_accounting_line_code       => l_component_code
6676       ,p_accounting_line_type_code  => l_component_type_code
6677       ,p_accounting_line_appl_id    => l_component_appl_id
6678       ,p_amb_context_code           => l_amb_context_code
6679       ,p_entity_code                => l_entity_code
6680       ,p_event_class_code           => l_event_class_code);
6681    --
6682    -- set accounting class
6683    --
6684    xla_ae_lines_pkg.SetAcctClass(
6685            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
6686          , p_ae_header_id           => l_ae_header_id
6687          );
6688 
6689    --
6690    -- set rounding class
6691    --
6692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6693                       'ACCOUNTSPAYABLE';
6694 
6695    --
6696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6698    --
6699    -- bulk performance
6700    --
6701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6702 
6703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6705 
6706    -- 4955764
6707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6709 
6710    -- 4458381 Public Sector Enh
6711    
6712    --
6713    -- set accounting attributes for the line type
6714    --
6715    l_entered_amt_idx := 23;
6716    l_accted_amt_idx  := 28;
6717    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6718    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6719    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
6720    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
6721    l_rec_acct_attrs.array_num_value(2)  := 
6722 xla_ae_sources_pkg.GetSystemSourceNum(
6723    p_source_code           => 'XLA_EVENT_APPL_ID'
6724  , p_source_type_code      => 'Y'
6725  , p_source_application_id =>  602
6726 );
6727    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
6728    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
6729    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
6730    l_rec_acct_attrs.array_char_value(4)  := 
6731 xla_ae_sources_pkg.GetSystemSourceChar(
6732    p_source_code           => 'XLA_ENTITY_CODE'
6733  , p_source_type_code      => 'Y'
6734  , p_source_application_id =>  602
6735 );
6736    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
6737    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
6738    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
6739    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
6740    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
6741    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
6742    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6743    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
6744    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
6745    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
6746    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
6747    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
6748    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6749    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
6753    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
6750    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
6751    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
6752    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
6754    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
6755    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
6756    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
6757    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
6758    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
6759    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
6760    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
6761    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
6762    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
6763    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
6764    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
6765    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
6766    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
6767    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
6768    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
6769    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
6770    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
6771    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
6772    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
6773    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
6774    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
6775    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
6776    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
6777    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
6778    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
6779    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
6780    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
6781    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
6782    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
6783    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
6784    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
6785    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
6786    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
6787    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
6788    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
6789    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
6790    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
6791    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
6792    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
6793    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
6794    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
6795    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
6796    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
6797    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
6798    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
6799    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
6800    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
6801    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
6802    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
6803    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
6804    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
6805    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
6806    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
6807    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
6808    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
6809    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
6810    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
6811    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
6812    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
6813    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
6814 
6815    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6816    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6817 
6818    ---------------------------------------------------------------------------------------------------------------
6819    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6820    ---------------------------------------------------------------------------------------------------------------
6821    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6822 
6823    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6824    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6825 
6826    IF xla_accounting_cache_pkg.GetValueChar
6827          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6828          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6829    AND l_bflow_method_code = 'PRIOR_ENTRY'
6830 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6831    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6832          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6836            (p_business_method_code    => l_bflow_method_code
6833        )
6834    THEN
6835          xla_ae_lines_pkg.BflowUpgEntry
6837            ,p_business_class_code     => l_bflow_class_code
6838            ,p_balance_type            => l_balance_type_code);
6839    ELSE
6840       NULL;
6841 -- No business flow processing for business flow method of NONE.
6842    END IF;
6843 
6844    --
6845    -- call analytical criteria
6846    --
6847    
6848    --
6849    -- call description
6850    --
6851    
6852 xla_ae_lines_pkg.SetLineDescription(
6853    p_ae_header_id => l_ae_header_id
6854   ,p_description  => Description_2 (
6855      p_application_id         => p_application_id
6856    , p_ae_header_id           => l_ae_header_id 
6857 , p_source_1 => p_source_1
6858    )
6859 );
6860 
6861 
6862    --
6863    -- call ADRs
6864    -- Bug 4922099
6865    --
6866    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6867         (NVL(l_actual_upg_option, 'N') = 'O') OR
6868         (NVL(l_enc_upg_option, 'N') = 'O')
6869       )
6870    THEN
6871    NULL;
6872    --
6873    --
6874    
6875   l_ccid := AcctDerRule_3(
6876            p_application_id           => p_application_id
6877          , p_ae_header_id             => l_ae_header_id 
6878 , p_source_2 => p_source_2
6879          , x_transaction_coa_id       => l_adr_transaction_coa_id
6880          , x_accounting_coa_id        => l_adr_accounting_coa_id
6881          , x_value_type_code          => l_adr_value_type_code
6882          , p_side                     => 'NA'
6883    );
6884 
6885    xla_ae_lines_pkg.set_ccid(
6886     p_code_combination_id          => l_ccid
6887   , p_value_type_code              => l_adr_value_type_code
6888   , p_transaction_coa_id           => l_adr_transaction_coa_id
6889   , p_accounting_coa_id            => l_adr_accounting_coa_id
6890   , p_adr_code                     => 'AP_INVOICE_DIST'
6891   , p_adr_type_code                => 'S'
6892   , p_component_type               => l_component_type
6893   , p_component_code               => l_component_code
6894   , p_component_type_code          => l_component_type_code
6895   , p_component_appl_id            => l_component_appl_id
6896   , p_amb_context_code             => l_amb_context_code
6897   , p_side                         => 'NA'
6898   );
6899 
6900 
6901    l_segment := AcctDerRule_4(
6902            p_application_id           => p_application_id
6903          , p_ae_header_id             => l_ae_header_id 
6904          , x_transaction_coa_id       => l_adr_transaction_coa_id
6905          , x_accounting_coa_id        => l_adr_accounting_coa_id
6906          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6907          , x_flex_value_set_id        => l_adr_flex_value_set_id
6908          , x_value_type_code          => l_adr_value_type_code
6909          , x_value_combination_id     => l_adr_value_combination_id
6910          , x_value_segment_code       => l_adr_value_segment_code
6911          , p_side                     => 'NA'
6912          , p_override_seg_flag        => 'Y'
6913    );
6914 
6915    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6916 
6917       xla_ae_lines_pkg.set_segment(
6918           p_to_segment_code         => 'GL_ACCOUNT'
6919         , p_segment_value           => l_segment
6920         , p_from_segment_code       => l_adr_value_segment_code
6921         , p_from_combination_id     => l_adr_value_combination_id
6922         , p_value_type_code         => l_adr_value_type_code
6923         , p_transaction_coa_id      => l_adr_transaction_coa_id
6924         , p_accounting_coa_id       => l_adr_accounting_coa_id
6925         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6926         , p_flex_value_set_id       => l_adr_flex_value_set_id
6927         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
6928         , p_adr_type_code           => 'S'
6929         , p_component_type          => l_component_type
6930         , p_component_code          => l_component_code
6931         , p_component_type_code     => l_component_type_code
6932         , p_component_appl_id       => l_component_appl_id
6933         , p_amb_context_code        => l_amb_context_code
6934         , p_entity_code             => 'AP_INVOICES'
6935         , p_event_class_code        => 'CREDIT MEMOS'
6936         , p_side                    => 'NA'
6937         );
6938 
6939   END IF;
6940 
6941    --
6942    --
6943    END IF;
6944    --
6945    -- Bug 4922099
6946    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6947           (NVL(l_enc_upg_option, 'N') = 'O')
6948         ) AND
6949         (l_bflow_method_code = 'PRIOR_ENTRY')
6950       )
6951    THEN
6952       IF
6953       --
6954       1 = 2
6955       --
6956       THEN
6957       xla_accounting_err_pkg.build_message
6958                                     (p_appli_s_name            => 'XLA'
6959                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6960                                     ,p_token_1                 => 'LINE_NUMBER'
6961                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6962                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6966                                                                             ,l_component_type_code
6963                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6964                                                                              l_component_type
6965                                                                             ,l_component_code
6967                                                                             ,l_component_appl_id
6968                                                                             ,l_amb_context_code
6969                                                                             ,l_entity_code
6970                                                                             ,l_event_class_code
6971                                                                            )
6972                                     ,p_token_3                 => 'OWNER'
6973                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6974                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6975                                                                           ,p_lookup_code    => l_component_type_code
6976                                                                          )
6977                                     ,p_token_4                 => 'PRODUCT_NAME'
6978                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6979                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6980                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6981                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6982                                     ,p_ae_header_id            =>  NULL
6983                                        );
6984 
6985         IF (C_LEVEL_ERROR>= g_log_level) THEN
6986                  trace
6987                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6988                       ,p_level    => C_LEVEL_ERROR
6989                       ,p_module   => l_log_module);
6990         END IF;
6991       END IF;
6992    END IF;
6993    --
6994    --
6995    ------------------------------------------------------------------------------------------------
6996    -- 4219869 Business Flow
6997    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6998    -- Prior Entry.  Currently, the following code is always generated.
6999    ------------------------------------------------------------------------------------------------
7000    XLA_AE_LINES_PKG.ValidateCurrentLine;
7001 
7002    ------------------------------------------------------------------------------------
7003    -- 4219869 Business Flow
7004    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7005    ------------------------------------------------------------------------------------
7006    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7007 
7008    ----------------------------------------------------------------------------------
7009    -- 4219869 Business Flow
7010    -- Update journal entry status -- Need to generate this within IF <condition>
7011    ----------------------------------------------------------------------------------
7012    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7013          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7014          ,p_balance_type_code => l_balance_type_code
7015          );
7016 
7017    -------------------------------------------------------------------------------------------
7018    -- 4262811 - Generate the Accrual Reversal lines
7019    -------------------------------------------------------------------------------------------
7020    BEGIN
7021       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7022                               (g_array_event(p_event_id).array_value_num('header_index'));
7023       IF l_acc_rev_flag IS NULL THEN
7024          l_acc_rev_flag := 'N';
7025       END IF;
7026    EXCEPTION
7027       WHEN OTHERS THEN
7028          l_acc_rev_flag := 'N';
7029    END;
7030    --
7031    IF (l_acc_rev_flag = 'Y') THEN
7032 
7033        -- 4645092  ------------------------------------------------------------------------------
7034        -- To allow MPA report to determine if it should generate report process
7035        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7036        ------------------------------------------------------------------------------------------
7037 
7038        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7039        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7040    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7041    -- call ADRs
7042    -- Bug 4922099
7043    --
7044    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7045         (NVL(l_actual_upg_option, 'N') = 'O') OR
7046         (NVL(l_enc_upg_option, 'N') = 'O')
7047       )
7048    THEN
7049    NULL;
7050    --
7051    --
7052    
7053   l_ccid := AcctDerRule_3(
7054            p_application_id           => p_application_id
7055          , p_ae_header_id             => l_ae_header_id 
7056 , p_source_2 => p_source_2
7057          , x_transaction_coa_id       => l_adr_transaction_coa_id
7058          , x_accounting_coa_id        => l_adr_accounting_coa_id
7059          , x_value_type_code          => l_adr_value_type_code
7060          , p_side                     => 'NA'
7061    );
7062 
7063    xla_ae_lines_pkg.set_ccid(
7064     p_code_combination_id          => l_ccid
7068   , p_adr_code                     => 'AP_INVOICE_DIST'
7065   , p_value_type_code              => l_adr_value_type_code
7066   , p_transaction_coa_id           => l_adr_transaction_coa_id
7067   , p_accounting_coa_id            => l_adr_accounting_coa_id
7069   , p_adr_type_code                => 'S'
7070   , p_component_type               => l_component_type
7071   , p_component_code               => l_component_code
7072   , p_component_type_code          => l_component_type_code
7073   , p_component_appl_id            => l_component_appl_id
7074   , p_amb_context_code             => l_amb_context_code
7075   , p_side                         => 'NA'
7076   );
7077 
7078 
7079    l_segment := AcctDerRule_4(
7080            p_application_id           => p_application_id
7081          , p_ae_header_id             => l_ae_header_id 
7082          , x_transaction_coa_id       => l_adr_transaction_coa_id
7083          , x_accounting_coa_id        => l_adr_accounting_coa_id
7084          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
7085          , x_flex_value_set_id        => l_adr_flex_value_set_id
7086          , x_value_type_code          => l_adr_value_type_code
7087          , x_value_combination_id     => l_adr_value_combination_id
7088          , x_value_segment_code       => l_adr_value_segment_code
7089          , p_side                     => 'NA'
7090          , p_override_seg_flag        => 'Y'
7091    );
7092 
7093    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
7094 
7095       xla_ae_lines_pkg.set_segment(
7096           p_to_segment_code         => 'GL_ACCOUNT'
7097         , p_segment_value           => l_segment
7098         , p_from_segment_code       => l_adr_value_segment_code
7099         , p_from_combination_id     => l_adr_value_combination_id
7100         , p_value_type_code         => l_adr_value_type_code
7101         , p_transaction_coa_id      => l_adr_transaction_coa_id
7102         , p_accounting_coa_id       => l_adr_accounting_coa_id
7103         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
7104         , p_flex_value_set_id       => l_adr_flex_value_set_id
7105         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
7106         , p_adr_type_code           => 'S'
7107         , p_component_type          => l_component_type
7108         , p_component_code          => l_component_code
7109         , p_component_type_code     => l_component_type_code
7110         , p_component_appl_id       => l_component_appl_id
7111         , p_amb_context_code        => l_amb_context_code
7112         , p_entity_code             => 'AP_INVOICES'
7113         , p_event_class_code        => 'CREDIT MEMOS'
7114         , p_side                    => 'NA'
7115         );
7116 
7117   END IF;
7118 
7119    --
7120    --
7121    END IF;
7122 
7123        --
7124        -- Update the line information that should be overwritten
7125        --
7126        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7127                                          p_header_num   => 1);
7128        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7129 
7130        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7131 
7132        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7133           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7134        END IF;
7135 
7136       --
7137       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7138       --
7139       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7140           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7141       ELSE
7142           ---------------------------------------------------------------------------------------------------
7143           -- 4262811a Switch Sign
7144           ---------------------------------------------------------------------------------------------------
7145           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7146           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7147                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7148           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7149                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7150           -- 5132302
7151           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7152                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7153 
7154       END IF;
7155 
7156       -- 4955764
7157       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7158       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7159 
7160 
7161       XLA_AE_LINES_PKG.ValidateCurrentLine;
7162       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7163 
7164       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7165                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7166                ,p_balance_type_code => l_balance_type_code);
7167 
7168    END IF;
7169 
7170    -----------------------------------------------------------------------------------------
7171    -- 4262811 Multiperiod Accounting
7175 
7172    -----------------------------------------------------------------------------------------
7173      -- No MPA option is assigned.
7174 
7176 END IF;
7177 END IF;
7178 --
7179 
7180 --
7181 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7182    trace
7183       (p_msg      => 'END of AcctLineType_22'
7184       ,p_level    => C_LEVEL_PROCEDURE
7185       ,p_module   => l_log_module);
7186 END IF;
7187 --
7188 EXCEPTION
7189   WHEN xla_exceptions_pkg.application_exception THEN
7190       RAISE;
7191   WHEN OTHERS THEN
7192        xla_exceptions_pkg.raise_message
7193            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_22');
7194 END AcctLineType_22;
7195 --
7196 
7197 ---------------------------------------
7198 --
7199 -- PRIVATE FUNCTION
7200 --         AcctLineType_23
7201 --
7202 ---------------------------------------
7203 PROCEDURE AcctLineType_23 (
7204   p_application_id        IN NUMBER
7205  ,p_event_id              IN NUMBER
7206  ,p_calculate_acctd_flag  IN VARCHAR2
7207  ,p_calculate_g_l_flag    IN VARCHAR2
7208  ,p_actual_flag           IN OUT VARCHAR2
7209  ,p_balance_type_code     OUT VARCHAR2
7210  ,p_gain_or_loss_ref      OUT VARCHAR2
7211  
7212 --Invoice Distribution Description
7213  , p_source_1            IN VARCHAR2
7214 --Invoice Distribution Account
7215  , p_source_2            IN NUMBER
7216 --Federal Fund Category Description
7217  , p_source_6            IN VARCHAR2
7218 --Accounting Reversal Indicator
7219  , p_source_15            IN VARCHAR2
7220 --Distribution Link Type
7221  , p_source_17            IN VARCHAR2
7222 --Allocation to Main Distribution Identifier
7223  , p_source_19            IN NUMBER
7224 --Invoice Identifier
7225  , p_source_20            IN NUMBER
7226 --Business Flow Accounts Payable Application Identifier
7227  , p_source_21            IN NUMBER
7228 --Business Flow Invoice Distribution Type
7229  , p_source_22            IN VARCHAR2
7230 --Business Flow Invoice Entity Code
7231  , p_source_23            IN VARCHAR2
7232 --Business Flow Invoice Distribution Identifier
7233  , p_source_24            IN NUMBER
7234 --Business Flow Invoice Identifier
7235  , p_source_25            IN NUMBER
7236 --Invoice Distribution Identifier
7237  , p_source_26            IN NUMBER
7238 --Payables Encumbrance Upgrade Credit Account
7239  , p_source_27            IN NUMBER
7240 --Payables Encumbrance Upgrade Credit Amount
7241  , p_source_28            IN NUMBER
7242 --Invoice Currency Code
7243  , p_source_29            IN VARCHAR2
7244 --Payables Encumbrance Upgrade Credit Base Amount
7245  , p_source_30            IN NUMBER
7246 --Payables Encumbrance Upgrade Debit Account
7247  , p_source_31            IN NUMBER
7248 --Payables Encumbrance Upgrade Debit Amount
7249  , p_source_32            IN NUMBER
7250 --Payables Encumbrance Upgrade Debit Base Amount
7251  , p_source_33            IN NUMBER
7252 --Payables Encumbrance Upgrade Option
7253  , p_source_34            IN VARCHAR2
7254 --Invoice Exchange Date
7255  , p_source_36            IN DATE
7256 --Invoice Exchange Rate
7257  , p_source_37            IN NUMBER
7258 --Invoice Exchange Rate Type
7259  , p_source_38            IN VARCHAR2
7260 --Deferred Accounting End Date
7261  , p_source_39            IN DATE
7262 --Deferred Accounting Option
7263  , p_source_40            IN VARCHAR2
7264 --Deferred Accounting Start Date
7265  , p_source_41            IN DATE
7266 --Override Accounted Amount Indicator
7267  , p_source_42            IN VARCHAR2
7268  , p_source_42_meaning    IN VARCHAR2
7269 --Invoice Supplier Identifier
7270  , p_source_43            IN NUMBER
7271 --Invoice Supplier Site Identifier
7272  , p_source_44            IN NUMBER
7273 --Third Party Type
7274  , p_source_45            IN VARCHAR2
7275 --Parent Reversal Identifier
7276  , p_source_46            IN NUMBER
7277 --Invoice Distribution Statistical Amount
7278  , p_source_47            IN NUMBER
7279 --Invoice Distribution Tax Line Identifier
7280  , p_source_48            IN NUMBER
7281 --Invoice Distribution Tax Distribution Identifier from Tax
7282  , p_source_49            IN NUMBER
7283 --Invoice Distribution Summary Tax Line Identifier
7284  , p_source_50            IN NUMBER
7285 --Payables Upgrade Credit Encumbrance Type Identifier
7286  , p_source_51            IN NUMBER
7287 --Payables Upgrade Debit Encumbrance Type Identifier
7288  , p_source_52            IN NUMBER
7289 --Invoice Distribution Amount
7290  , p_source_55            IN NUMBER
7291 --Invoice Distribution Ledger Amount
7292  , p_source_56            IN NUMBER
7293 )
7294 IS
7295 
7296 l_component_type              VARCHAR2(80);
7297 l_component_code              VARCHAR2(30);
7298 l_component_type_code         VARCHAR2(1);
7299 l_component_appl_id           INTEGER;
7300 l_amb_context_code            VARCHAR2(30);
7301 l_entity_code                 VARCHAR2(30);
7302 l_event_class_code            VARCHAR2(30);
7303 l_ae_header_id                NUMBER;
7304 l_event_type_code             VARCHAR2(30);
7305 l_line_definition_code        VARCHAR2(30);
7306 l_line_definition_owner_code  VARCHAR2(1);
7307 --
7308 -- adr variables
7309 l_segment                     VARCHAR2(30);
7310 l_ccid                        NUMBER;
7311 l_adr_transaction_coa_id      NUMBER;
7312 l_adr_accounting_coa_id       NUMBER;
7313 l_adr_flexfield_segment_code  VARCHAR2(30);
7317 l_adr_value_segment_code      VARCHAR2(30);
7314 l_adr_flex_value_set_id       NUMBER;
7315 l_adr_value_type_code         VARCHAR2(30);
7316 l_adr_value_combination_id    NUMBER;
7318 
7319 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7320 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7321 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7322 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7323 
7324 -- 4262811 Variables ------------------------------------------------------------------------------------------
7325 l_entered_amt_idx             NUMBER;
7326 l_accted_amt_idx              NUMBER;
7327 l_acc_rev_flag                VARCHAR2(1);
7328 l_accrual_line_num            NUMBER;
7329 l_tmp_amt                     NUMBER;
7330 l_acc_rev_natural_side_code   VARCHAR2(1);
7331 
7332 l_num_entries                 NUMBER;
7333 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7334 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7335 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7336 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7337 l_recog_line_1                NUMBER;
7338 l_recog_line_2                NUMBER;
7339 
7340 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7341 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7342 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7343 
7344 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7345 
7346 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7347 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7348 
7349 ---------------------------------------------------------------------------------------------------------------
7350 
7351 
7352 --
7353 -- bulk performance
7354 --
7355 l_balance_type_code           VARCHAR2(1);
7356 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7357 l_log_module                  VARCHAR2(240);
7358 
7359 --
7360 -- Upgrade strategy
7361 --
7362 l_actual_upg_option           VARCHAR2(1);
7363 l_enc_upg_option           VARCHAR2(1);
7364 
7365 --
7366 BEGIN
7367 --
7368 IF g_log_enabled THEN
7369       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
7370 END IF;
7371 --
7372 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7373 
7374       trace
7375          (p_msg      => 'BEGIN of AcctLineType_23'
7376          ,p_level    => C_LEVEL_PROCEDURE
7377          ,p_module   => l_log_module);
7378 
7379 END IF;
7380 --
7381 l_component_type             := 'AMB_JLT';
7382 l_component_code             := 'FV_AP_CM_DIRECT_FUND_DR';
7383 l_component_type_code        := 'S';
7384 l_component_appl_id          :=  200;
7385 l_amb_context_code           := 'DEFAULT';
7386 l_entity_code                := 'AP_INVOICES';
7387 l_event_class_code           := 'CREDIT MEMOS';
7388 l_event_type_code            := 'CREDIT MEMOS_ALL';
7389 l_line_definition_owner_code := 'S';
7390 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
7391 --
7392 l_balance_type_code          := 'A';
7393 l_segment                     := NULL;
7394 l_ccid                        := NULL;
7395 l_adr_transaction_coa_id      := NULL;
7396 l_adr_accounting_coa_id       := NULL;
7397 l_adr_flexfield_segment_code  := NULL;
7398 l_adr_flex_value_set_id       := NULL;
7399 l_adr_value_type_code         := NULL;
7400 l_adr_value_combination_id    := NULL;
7401 l_adr_value_segment_code      := NULL;
7402 
7403 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7404 l_bflow_class_code           := 'FV_DIRECT_FUND_DR';    -- 4219869 Business Flow
7405 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7406 l_budgetary_control_flag     := 'Y';
7407 
7408 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7409 l_bflow_applied_to_amt       := NULL; -- 5132302
7410 l_entered_amt_idx            := NULL;          -- 4262811
7411 l_accted_amt_idx             := NULL;          -- 4262811
7412 l_acc_rev_flag               := NULL;          -- 4262811
7413 l_accrual_line_num           := NULL;          -- 4262811
7414 l_tmp_amt                    := NULL;          -- 4262811
7415 --
7416  
7417 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7418     l_balance_type_code <> 'B' THEN
7419 IF NVL(p_source_6,'
7420 ') =  'Direct' AND 
7421 NVL(
7422 xla_ae_sources_pkg.GetSystemSourceChar(
7423    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7424  , p_source_type_code      => 'Y'
7425  , p_source_application_id =>  602
7426 ),'
7427 ') <>  'CREDIT MEMO CANCELLED'
7428  THEN 
7429 
7430    --
7431    XLA_AE_LINES_PKG.SetNewLine;
7432 
7433    p_balance_type_code          := l_balance_type_code;
7434    -- set the flag so later we will know whether the gain loss line needs to be created
7435    
7436    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7437      p_actual_flag :='A';
7438    END IF;
7439 
7440    --
7441    -- bulk performance
7442    --
7443    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7444                                       p_header_num   => 0); -- 4262811
7445    --
7446    -- set accounting line options
7450          , p_gain_or_loss_flag          => 'N'
7447    --
7448    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7449            p_natural_side_code          => 'C'
7451          , p_gl_transfer_mode_code      => 'S'
7452          , p_acct_entry_type_code       => 'A'
7453          , p_switch_side_flag           => 'N'
7454          , p_merge_duplicate_code       => 'N'
7455          );
7456    --
7457    l_acc_rev_natural_side_code := 'D';  -- 4262811
7458    -- 
7459    --
7460    -- set accounting line type info
7461    --
7462    xla_ae_lines_pkg.SetAcctLineType
7463       (p_component_type             => l_component_type
7464       ,p_event_type_code            => l_event_type_code
7465       ,p_line_definition_owner_code => l_line_definition_owner_code
7466       ,p_line_definition_code       => l_line_definition_code
7467       ,p_accounting_line_code       => l_component_code
7468       ,p_accounting_line_type_code  => l_component_type_code
7469       ,p_accounting_line_appl_id    => l_component_appl_id
7470       ,p_amb_context_code           => l_amb_context_code
7471       ,p_entity_code                => l_entity_code
7472       ,p_event_class_code           => l_event_class_code);
7473    --
7474    -- set accounting class
7475    --
7476    xla_ae_lines_pkg.SetAcctClass(
7477            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
7478          , p_ae_header_id           => l_ae_header_id
7479          );
7480 
7481    --
7482    -- set rounding class
7483    --
7484    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7485                       'ACCOUNTSPAYABLE';
7486 
7487    --
7488    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7489    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7490    --
7491    -- bulk performance
7492    --
7493    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7494 
7495    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7496       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7497 
7498    -- 4955764
7499    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7501 
7502    -- 4458381 Public Sector Enh
7503    
7504    --
7505    -- set accounting attributes for the line type
7506    --
7507    l_entered_amt_idx := 23;
7508    l_accted_amt_idx  := 28;
7509    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7510    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7511    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
7512    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
7513    l_rec_acct_attrs.array_num_value(2)  := 
7514 xla_ae_sources_pkg.GetSystemSourceNum(
7515    p_source_code           => 'XLA_EVENT_APPL_ID'
7516  , p_source_type_code      => 'Y'
7517  , p_source_application_id =>  602
7518 );
7519    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
7520    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
7521    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
7522    l_rec_acct_attrs.array_char_value(4)  := 
7523 xla_ae_sources_pkg.GetSystemSourceChar(
7524    p_source_code           => 'XLA_ENTITY_CODE'
7525  , p_source_type_code      => 'Y'
7526  , p_source_application_id =>  602
7527 );
7528    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
7529    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
7530    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
7531    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
7532    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
7533    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
7534    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7535    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
7536    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
7537    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
7538    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
7539    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
7540    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7541    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
7542    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
7543    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
7544    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
7545    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
7546    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
7547    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
7548    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
7549    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
7550    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
7551    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
7552    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
7553    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
7554    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
7555    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
7559    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
7556    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
7557    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
7558    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
7560    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
7561    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
7562    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
7563    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
7564    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
7565    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
7566    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
7567    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
7568    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
7569    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
7570    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
7571    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
7572    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
7573    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
7574    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
7575    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
7576    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
7577    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
7578    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
7579    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
7580    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
7581    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
7582    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
7583    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
7584    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
7585    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
7586    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
7587    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
7588    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
7589    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
7590    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
7591    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
7592    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
7593    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
7594    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
7595    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
7596    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
7597    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
7598    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
7599    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
7600    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
7601    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
7602    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
7603    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
7604    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
7605    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
7606 
7607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7609 
7610    ---------------------------------------------------------------------------------------------------------------
7611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7612    ---------------------------------------------------------------------------------------------------------------
7613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7614 
7615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7617 
7618    IF xla_accounting_cache_pkg.GetValueChar
7619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7621    AND l_bflow_method_code = 'PRIOR_ENTRY'
7622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7625        )
7626    THEN
7627          xla_ae_lines_pkg.BflowUpgEntry
7628            (p_business_method_code    => l_bflow_method_code
7629            ,p_business_class_code     => l_bflow_class_code
7630            ,p_balance_type            => l_balance_type_code);
7631    ELSE
7632       NULL;
7633 -- No business flow processing for business flow method of NONE.
7634    END IF;
7635 
7636    --
7637    -- call analytical criteria
7638    --
7639    
7640    --
7641    -- call description
7642    --
7643    
7644 xla_ae_lines_pkg.SetLineDescription(
7645    p_ae_header_id => l_ae_header_id
7646   ,p_description  => Description_2 (
7647      p_application_id         => p_application_id
7648    , p_ae_header_id           => l_ae_header_id 
7649 , p_source_1 => p_source_1
7650    )
7651 );
7652 
7653 
7654    --
7655    -- call ADRs
7656    -- Bug 4922099
7657    --
7661       )
7658    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7659         (NVL(l_actual_upg_option, 'N') = 'O') OR
7660         (NVL(l_enc_upg_option, 'N') = 'O')
7662    THEN
7663    NULL;
7664    --
7665    --
7666    
7667   l_ccid := AcctDerRule_3(
7668            p_application_id           => p_application_id
7669          , p_ae_header_id             => l_ae_header_id 
7670 , p_source_2 => p_source_2
7671          , x_transaction_coa_id       => l_adr_transaction_coa_id
7672          , x_accounting_coa_id        => l_adr_accounting_coa_id
7673          , x_value_type_code          => l_adr_value_type_code
7674          , p_side                     => 'NA'
7675    );
7676 
7677    xla_ae_lines_pkg.set_ccid(
7678     p_code_combination_id          => l_ccid
7679   , p_value_type_code              => l_adr_value_type_code
7680   , p_transaction_coa_id           => l_adr_transaction_coa_id
7681   , p_accounting_coa_id            => l_adr_accounting_coa_id
7682   , p_adr_code                     => 'AP_INVOICE_DIST'
7683   , p_adr_type_code                => 'S'
7684   , p_component_type               => l_component_type
7685   , p_component_code               => l_component_code
7686   , p_component_type_code          => l_component_type_code
7687   , p_component_appl_id            => l_component_appl_id
7688   , p_amb_context_code             => l_amb_context_code
7689   , p_side                         => 'NA'
7690   );
7691 
7692 
7693    l_segment := AcctDerRule_15(
7694            p_application_id           => p_application_id
7695          , p_ae_header_id             => l_ae_header_id 
7696          , x_transaction_coa_id       => l_adr_transaction_coa_id
7697          , x_accounting_coa_id        => l_adr_accounting_coa_id
7698          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
7699          , x_flex_value_set_id        => l_adr_flex_value_set_id
7700          , x_value_type_code          => l_adr_value_type_code
7701          , x_value_combination_id     => l_adr_value_combination_id
7702          , x_value_segment_code       => l_adr_value_segment_code
7703          , p_side                     => 'NA'
7704          , p_override_seg_flag        => 'Y'
7705    );
7706 
7707    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
7708 
7709       xla_ae_lines_pkg.set_segment(
7710           p_to_segment_code         => 'GL_ACCOUNT'
7711         , p_segment_value           => l_segment
7712         , p_from_segment_code       => l_adr_value_segment_code
7713         , p_from_combination_id     => l_adr_value_combination_id
7714         , p_value_type_code         => l_adr_value_type_code
7715         , p_transaction_coa_id      => l_adr_transaction_coa_id
7716         , p_accounting_coa_id       => l_adr_accounting_coa_id
7717         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
7718         , p_flex_value_set_id       => l_adr_flex_value_set_id
7719         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
7720         , p_adr_type_code           => 'S'
7721         , p_component_type          => l_component_type
7722         , p_component_code          => l_component_code
7723         , p_component_type_code     => l_component_type_code
7724         , p_component_appl_id       => l_component_appl_id
7725         , p_amb_context_code        => l_amb_context_code
7726         , p_entity_code             => 'AP_INVOICES'
7727         , p_event_class_code        => 'CREDIT MEMOS'
7728         , p_side                    => 'NA'
7729         );
7730 
7731   END IF;
7732 
7733    --
7734    --
7735    END IF;
7736    --
7737    -- Bug 4922099
7738    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7739           (NVL(l_enc_upg_option, 'N') = 'O')
7740         ) AND
7741         (l_bflow_method_code = 'PRIOR_ENTRY')
7742       )
7743    THEN
7744       IF
7745       --
7746       1 = 2
7747       --
7748       THEN
7749       xla_accounting_err_pkg.build_message
7750                                     (p_appli_s_name            => 'XLA'
7751                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7752                                     ,p_token_1                 => 'LINE_NUMBER'
7753                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7754                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7755                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7756                                                                              l_component_type
7757                                                                             ,l_component_code
7758                                                                             ,l_component_type_code
7759                                                                             ,l_component_appl_id
7760                                                                             ,l_amb_context_code
7761                                                                             ,l_entity_code
7762                                                                             ,l_event_class_code
7763                                                                            )
7764                                     ,p_token_3                 => 'OWNER'
7765                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7769                                     ,p_token_4                 => 'PRODUCT_NAME'
7766                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7767                                                                           ,p_lookup_code    => l_component_type_code
7768                                                                          )
7770                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7771                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7772                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7773                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7774                                     ,p_ae_header_id            =>  NULL
7775                                        );
7776 
7777         IF (C_LEVEL_ERROR>= g_log_level) THEN
7778                  trace
7779                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7780                       ,p_level    => C_LEVEL_ERROR
7781                       ,p_module   => l_log_module);
7782         END IF;
7783       END IF;
7784    END IF;
7785    --
7786    --
7787    ------------------------------------------------------------------------------------------------
7788    -- 4219869 Business Flow
7789    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7790    -- Prior Entry.  Currently, the following code is always generated.
7791    ------------------------------------------------------------------------------------------------
7792    XLA_AE_LINES_PKG.ValidateCurrentLine;
7793 
7794    ------------------------------------------------------------------------------------
7795    -- 4219869 Business Flow
7796    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7797    ------------------------------------------------------------------------------------
7798    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7799 
7800    ----------------------------------------------------------------------------------
7801    -- 4219869 Business Flow
7802    -- Update journal entry status -- Need to generate this within IF <condition>
7803    ----------------------------------------------------------------------------------
7804    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7805          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7806          ,p_balance_type_code => l_balance_type_code
7807          );
7808 
7809    -------------------------------------------------------------------------------------------
7810    -- 4262811 - Generate the Accrual Reversal lines
7811    -------------------------------------------------------------------------------------------
7812    BEGIN
7813       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7814                               (g_array_event(p_event_id).array_value_num('header_index'));
7815       IF l_acc_rev_flag IS NULL THEN
7816          l_acc_rev_flag := 'N';
7817       END IF;
7818    EXCEPTION
7819       WHEN OTHERS THEN
7820          l_acc_rev_flag := 'N';
7821    END;
7822    --
7823    IF (l_acc_rev_flag = 'Y') THEN
7824 
7825        -- 4645092  ------------------------------------------------------------------------------
7826        -- To allow MPA report to determine if it should generate report process
7827        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7828        ------------------------------------------------------------------------------------------
7829 
7830        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7831        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7832    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7833    -- call ADRs
7834    -- Bug 4922099
7835    --
7836    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7837         (NVL(l_actual_upg_option, 'N') = 'O') OR
7838         (NVL(l_enc_upg_option, 'N') = 'O')
7839       )
7840    THEN
7841    NULL;
7842    --
7843    --
7844    
7845   l_ccid := AcctDerRule_3(
7846            p_application_id           => p_application_id
7847          , p_ae_header_id             => l_ae_header_id 
7848 , p_source_2 => p_source_2
7849          , x_transaction_coa_id       => l_adr_transaction_coa_id
7850          , x_accounting_coa_id        => l_adr_accounting_coa_id
7851          , x_value_type_code          => l_adr_value_type_code
7852          , p_side                     => 'NA'
7853    );
7854 
7855    xla_ae_lines_pkg.set_ccid(
7856     p_code_combination_id          => l_ccid
7857   , p_value_type_code              => l_adr_value_type_code
7858   , p_transaction_coa_id           => l_adr_transaction_coa_id
7859   , p_accounting_coa_id            => l_adr_accounting_coa_id
7860   , p_adr_code                     => 'AP_INVOICE_DIST'
7861   , p_adr_type_code                => 'S'
7862   , p_component_type               => l_component_type
7863   , p_component_code               => l_component_code
7864   , p_component_type_code          => l_component_type_code
7865   , p_component_appl_id            => l_component_appl_id
7866   , p_amb_context_code             => l_amb_context_code
7867   , p_side                         => 'NA'
7868   );
7869 
7870 
7871    l_segment := AcctDerRule_15(
7872            p_application_id           => p_application_id
7873          , p_ae_header_id             => l_ae_header_id 
7874          , x_transaction_coa_id       => l_adr_transaction_coa_id
7878          , x_value_type_code          => l_adr_value_type_code
7875          , x_accounting_coa_id        => l_adr_accounting_coa_id
7876          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
7877          , x_flex_value_set_id        => l_adr_flex_value_set_id
7879          , x_value_combination_id     => l_adr_value_combination_id
7880          , x_value_segment_code       => l_adr_value_segment_code
7881          , p_side                     => 'NA'
7882          , p_override_seg_flag        => 'Y'
7883    );
7884 
7885    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
7886 
7887       xla_ae_lines_pkg.set_segment(
7888           p_to_segment_code         => 'GL_ACCOUNT'
7889         , p_segment_value           => l_segment
7890         , p_from_segment_code       => l_adr_value_segment_code
7891         , p_from_combination_id     => l_adr_value_combination_id
7892         , p_value_type_code         => l_adr_value_type_code
7893         , p_transaction_coa_id      => l_adr_transaction_coa_id
7894         , p_accounting_coa_id       => l_adr_accounting_coa_id
7895         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
7896         , p_flex_value_set_id       => l_adr_flex_value_set_id
7897         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
7898         , p_adr_type_code           => 'S'
7899         , p_component_type          => l_component_type
7900         , p_component_code          => l_component_code
7901         , p_component_type_code     => l_component_type_code
7902         , p_component_appl_id       => l_component_appl_id
7903         , p_amb_context_code        => l_amb_context_code
7904         , p_entity_code             => 'AP_INVOICES'
7905         , p_event_class_code        => 'CREDIT MEMOS'
7906         , p_side                    => 'NA'
7907         );
7908 
7909   END IF;
7910 
7911    --
7912    --
7913    END IF;
7914 
7915        --
7916        -- Update the line information that should be overwritten
7917        --
7918        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7919                                          p_header_num   => 1);
7920        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7921 
7922        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7923 
7924        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7925           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7926        END IF;
7927 
7928       --
7929       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7930       --
7931       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7932           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7933       ELSE
7934           ---------------------------------------------------------------------------------------------------
7935           -- 4262811a Switch Sign
7936           ---------------------------------------------------------------------------------------------------
7937           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7938           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7939                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7940           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7941                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7942           -- 5132302
7943           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7944                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7945 
7946       END IF;
7947 
7948       -- 4955764
7949       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7951 
7952 
7953       XLA_AE_LINES_PKG.ValidateCurrentLine;
7954       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7955 
7956       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7957                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7958                ,p_balance_type_code => l_balance_type_code);
7959 
7960    END IF;
7961 
7962    -----------------------------------------------------------------------------------------
7963    -- 4262811 Multiperiod Accounting
7964    -----------------------------------------------------------------------------------------
7965      -- No MPA option is assigned.
7966 
7967 
7968 END IF;
7969 END IF;
7970 --
7971 
7972 --
7973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7974    trace
7975       (p_msg      => 'END of AcctLineType_23'
7976       ,p_level    => C_LEVEL_PROCEDURE
7977       ,p_module   => l_log_module);
7978 END IF;
7979 --
7980 EXCEPTION
7981   WHEN xla_exceptions_pkg.application_exception THEN
7982       RAISE;
7983   WHEN OTHERS THEN
7984        xla_exceptions_pkg.raise_message
7985            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_23');
7986 END AcctLineType_23;
7987 --
7988 
7989 ---------------------------------------
7990 --
7991 -- PRIVATE FUNCTION
7995 PROCEDURE AcctLineType_24 (
7992 --         AcctLineType_24
7993 --
7994 ---------------------------------------
7996   p_application_id        IN NUMBER
7997  ,p_event_id              IN NUMBER
7998  ,p_calculate_acctd_flag  IN VARCHAR2
7999  ,p_calculate_g_l_flag    IN VARCHAR2
8000  ,p_actual_flag           IN OUT VARCHAR2
8001  ,p_balance_type_code     OUT VARCHAR2
8002  ,p_gain_or_loss_ref      OUT VARCHAR2
8003  
8004 --Federal Fund Category Description
8005  , p_source_6            IN VARCHAR2
8006 --Accounting Reversal Indicator
8007  , p_source_15            IN VARCHAR2
8008 --Distribution Link Type
8009  , p_source_17            IN VARCHAR2
8010 --Allocation to Main Distribution Identifier
8011  , p_source_19            IN NUMBER
8012 --Invoice Identifier
8013  , p_source_20            IN NUMBER
8014 --Business Flow Accounts Payable Application Identifier
8015  , p_source_21            IN NUMBER
8016 --Business Flow Invoice Distribution Type
8017  , p_source_22            IN VARCHAR2
8018 --Business Flow Invoice Entity Code
8019  , p_source_23            IN VARCHAR2
8020 --Business Flow Invoice Distribution Identifier
8021  , p_source_24            IN NUMBER
8022 --Business Flow Invoice Identifier
8023  , p_source_25            IN NUMBER
8024 --Invoice Distribution Identifier
8025  , p_source_26            IN NUMBER
8026 --Payables Encumbrance Upgrade Credit Account
8027  , p_source_27            IN NUMBER
8028 --Payables Encumbrance Upgrade Credit Amount
8029  , p_source_28            IN NUMBER
8030 --Invoice Currency Code
8031  , p_source_29            IN VARCHAR2
8032 --Payables Encumbrance Upgrade Credit Base Amount
8033  , p_source_30            IN NUMBER
8034 --Payables Encumbrance Upgrade Debit Account
8035  , p_source_31            IN NUMBER
8036 --Payables Encumbrance Upgrade Debit Amount
8037  , p_source_32            IN NUMBER
8038 --Payables Encumbrance Upgrade Debit Base Amount
8039  , p_source_33            IN NUMBER
8040 --Payables Encumbrance Upgrade Option
8041  , p_source_34            IN VARCHAR2
8042 --Deferred Accounting End Date
8043  , p_source_39            IN DATE
8044 --Deferred Accounting Option
8045  , p_source_40            IN VARCHAR2
8046 --Deferred Accounting Start Date
8047  , p_source_41            IN DATE
8048 --Override Accounted Amount Indicator
8049  , p_source_42            IN VARCHAR2
8050  , p_source_42_meaning    IN VARCHAR2
8051 --Third Party Type
8052  , p_source_45            IN VARCHAR2
8053 --Parent Reversal Identifier
8054  , p_source_46            IN NUMBER
8055 --Invoice Distribution Statistical Amount
8056  , p_source_47            IN NUMBER
8057 --Invoice Distribution Tax Line Identifier
8058  , p_source_48            IN NUMBER
8059 --Invoice Distribution Tax Distribution Identifier from Tax
8060  , p_source_49            IN NUMBER
8061 --Invoice Distribution Summary Tax Line Identifier
8062  , p_source_50            IN NUMBER
8063 --Payables Upgrade Credit Encumbrance Type Identifier
8064  , p_source_51            IN NUMBER
8065 --Payables Upgrade Debit Encumbrance Type Identifier
8066  , p_source_52            IN NUMBER
8067 --Invoice Distribution Amount
8068  , p_source_55            IN NUMBER
8069 --Invoice Distribution Ledger Amount
8070  , p_source_56            IN NUMBER
8071 )
8072 IS
8073 
8074 l_component_type              VARCHAR2(80);
8075 l_component_code              VARCHAR2(30);
8076 l_component_type_code         VARCHAR2(1);
8077 l_component_appl_id           INTEGER;
8078 l_amb_context_code            VARCHAR2(30);
8079 l_entity_code                 VARCHAR2(30);
8080 l_event_class_code            VARCHAR2(30);
8081 l_ae_header_id                NUMBER;
8082 l_event_type_code             VARCHAR2(30);
8083 l_line_definition_code        VARCHAR2(30);
8084 l_line_definition_owner_code  VARCHAR2(1);
8085 --
8086 -- adr variables
8087 l_segment                     VARCHAR2(30);
8088 l_ccid                        NUMBER;
8089 l_adr_transaction_coa_id      NUMBER;
8090 l_adr_accounting_coa_id       NUMBER;
8091 l_adr_flexfield_segment_code  VARCHAR2(30);
8092 l_adr_flex_value_set_id       NUMBER;
8093 l_adr_value_type_code         VARCHAR2(30);
8094 l_adr_value_combination_id    NUMBER;
8095 l_adr_value_segment_code      VARCHAR2(30);
8096 
8097 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8098 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8099 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8100 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8101 
8102 -- 4262811 Variables ------------------------------------------------------------------------------------------
8103 l_entered_amt_idx             NUMBER;
8104 l_accted_amt_idx              NUMBER;
8105 l_acc_rev_flag                VARCHAR2(1);
8106 l_accrual_line_num            NUMBER;
8107 l_tmp_amt                     NUMBER;
8108 l_acc_rev_natural_side_code   VARCHAR2(1);
8109 
8110 l_num_entries                 NUMBER;
8111 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8112 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8113 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8114 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8115 l_recog_line_1                NUMBER;
8116 l_recog_line_2                NUMBER;
8117 
8118 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8122 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8119 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8120 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8121 
8123 
8124 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8125 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8126 
8127 ---------------------------------------------------------------------------------------------------------------
8128 
8129 
8130 --
8131 -- bulk performance
8132 --
8133 l_balance_type_code           VARCHAR2(1);
8134 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8135 l_log_module                  VARCHAR2(240);
8136 
8137 --
8138 -- Upgrade strategy
8139 --
8140 l_actual_upg_option           VARCHAR2(1);
8141 l_enc_upg_option           VARCHAR2(1);
8142 
8143 --
8144 BEGIN
8145 --
8146 IF g_log_enabled THEN
8147       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
8148 END IF;
8149 --
8150 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8151 
8152       trace
8153          (p_msg      => 'BEGIN of AcctLineType_24'
8154          ,p_level    => C_LEVEL_PROCEDURE
8155          ,p_module   => l_log_module);
8156 
8157 END IF;
8158 --
8159 l_component_type             := 'AMB_JLT';
8160 l_component_code             := 'FV_AP_CM_REV_DIRECT_FUND_CR';
8161 l_component_type_code        := 'S';
8162 l_component_appl_id          :=  200;
8163 l_amb_context_code           := 'DEFAULT';
8164 l_entity_code                := 'AP_INVOICES';
8165 l_event_class_code           := 'CREDIT MEMOS';
8166 l_event_type_code            := 'CREDIT MEMOS_ALL';
8167 l_line_definition_owner_code := 'S';
8168 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
8169 --
8170 l_balance_type_code          := 'A';
8171 l_segment                     := NULL;
8172 l_ccid                        := NULL;
8173 l_adr_transaction_coa_id      := NULL;
8174 l_adr_accounting_coa_id       := NULL;
8175 l_adr_flexfield_segment_code  := NULL;
8176 l_adr_flex_value_set_id       := NULL;
8177 l_adr_value_type_code         := NULL;
8178 l_adr_value_combination_id    := NULL;
8179 l_adr_value_segment_code      := NULL;
8180 
8181 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
8182 l_bflow_class_code           := 'FV_DIRECT_FUND_DR';    -- 4219869 Business Flow
8183 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
8184 l_budgetary_control_flag     := 'Y';
8185 
8186 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8187 l_bflow_applied_to_amt       := NULL; -- 5132302
8188 l_entered_amt_idx            := NULL;          -- 4262811
8189 l_accted_amt_idx             := NULL;          -- 4262811
8190 l_acc_rev_flag               := NULL;          -- 4262811
8191 l_accrual_line_num           := NULL;          -- 4262811
8192 l_tmp_amt                    := NULL;          -- 4262811
8193 --
8194  
8195 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8196     l_balance_type_code <> 'B' THEN
8197 IF NVL(p_source_6,'
8198 ') =  'Direct' AND 
8199 NVL(
8200 xla_ae_sources_pkg.GetSystemSourceChar(
8201    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8202  , p_source_type_code      => 'Y'
8203  , p_source_application_id =>  602
8204 ),'
8205 ') =  'CREDIT MEMO CANCELLED'
8206  THEN 
8207 
8208    --
8209    XLA_AE_LINES_PKG.SetNewLine;
8210 
8211    p_balance_type_code          := l_balance_type_code;
8212    -- set the flag so later we will know whether the gain loss line needs to be created
8213    
8214    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8215      p_actual_flag :='A';
8216    END IF;
8217 
8218    --
8219    -- bulk performance
8220    --
8221    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8222                                       p_header_num   => 0); -- 4262811
8223    --
8224    -- set accounting line options
8225    --
8226    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8227            p_natural_side_code          => 'D'
8228          , p_gain_or_loss_flag          => 'N'
8229          , p_gl_transfer_mode_code      => 'S'
8230          , p_acct_entry_type_code       => 'A'
8231          , p_switch_side_flag           => 'N'
8232          , p_merge_duplicate_code       => 'N'
8233          );
8234    --
8235    l_acc_rev_natural_side_code := 'C';  -- 4262811
8236    -- 
8237    --
8238    -- set accounting line type info
8239    --
8240    xla_ae_lines_pkg.SetAcctLineType
8241       (p_component_type             => l_component_type
8242       ,p_event_type_code            => l_event_type_code
8243       ,p_line_definition_owner_code => l_line_definition_owner_code
8244       ,p_line_definition_code       => l_line_definition_code
8245       ,p_accounting_line_code       => l_component_code
8246       ,p_accounting_line_type_code  => l_component_type_code
8247       ,p_accounting_line_appl_id    => l_component_appl_id
8248       ,p_amb_context_code           => l_amb_context_code
8249       ,p_entity_code                => l_entity_code
8250       ,p_event_class_code           => l_event_class_code);
8251    --
8252    -- set accounting class
8253    --
8254    xla_ae_lines_pkg.SetAcctClass(
8255            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
8259    --
8256          , p_ae_header_id           => l_ae_header_id
8257          );
8258 
8260    -- set rounding class
8261    --
8262    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8263                       'ACCOUNTSPAYABLE';
8264 
8265    --
8266    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8267    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8268    --
8269    -- bulk performance
8270    --
8271    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8272 
8273    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8274       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8275 
8276    -- 4955764
8277    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8279 
8280    -- 4458381 Public Sector Enh
8281    
8282    --
8283    -- set accounting attributes for the line type
8284    --
8285    l_entered_amt_idx := 23;
8286    l_accted_amt_idx  := 25;
8287    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8288    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8289    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
8290    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
8291    l_rec_acct_attrs.array_num_value(2)  := 
8292 xla_ae_sources_pkg.GetSystemSourceNum(
8293    p_source_code           => 'XLA_EVENT_APPL_ID'
8294  , p_source_type_code      => 'Y'
8295  , p_source_application_id =>  602
8296 );
8297    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
8298    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
8299    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
8300    l_rec_acct_attrs.array_char_value(4)  := 
8301 xla_ae_sources_pkg.GetSystemSourceChar(
8302    p_source_code           => 'XLA_ENTITY_CODE'
8303  , p_source_type_code      => 'Y'
8304  , p_source_application_id =>  602
8305 );
8306    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
8307    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
8308    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
8309    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
8310    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
8311    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
8312    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8313    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
8314    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
8315    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
8316    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
8317    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
8318    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8319    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
8320    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
8321    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
8322    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
8323    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
8324    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
8325    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
8326    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
8327    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
8328    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
8329    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
8330    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
8331    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
8332    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
8333    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
8334    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
8335    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
8336    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
8337    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
8338    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
8339    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
8340    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
8341    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
8342    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
8343    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
8344    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
8345    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
8346    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
8347    l_rec_acct_attrs.array_num_value(25)  := p_source_56;
8348    l_rec_acct_attrs.array_acct_attr_code(26) := 'MULTIPERIOD_END_DATE';
8349    l_rec_acct_attrs.array_date_value(26)  := p_source_39;
8350    l_rec_acct_attrs.array_acct_attr_code(27) := 'MULTIPERIOD_OPTION';
8351    l_rec_acct_attrs.array_char_value(27)  := p_source_40;
8352    l_rec_acct_attrs.array_acct_attr_code(28) := 'MULTIPERIOD_START_DATE';
8353    l_rec_acct_attrs.array_date_value(28)  := p_source_41;
8357    l_rec_acct_attrs.array_char_value(30)  := p_source_45;
8354    l_rec_acct_attrs.array_acct_attr_code(29) := 'OVERRIDE_ACCTD_AMT_FLAG';
8355    l_rec_acct_attrs.array_char_value(29)  := p_source_42;
8356    l_rec_acct_attrs.array_acct_attr_code(30) := 'PARTY_TYPE';
8358    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
8359    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_46);
8360    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
8361    l_rec_acct_attrs.array_char_value(32)  := p_source_17;
8362    l_rec_acct_attrs.array_acct_attr_code(33) := 'STATISTICAL_AMOUNT';
8363    l_rec_acct_attrs.array_num_value(33)  := p_source_47;
8364    l_rec_acct_attrs.array_acct_attr_code(34) := 'TAX_LINE_REF_ID';
8365    l_rec_acct_attrs.array_num_value(34)  := p_source_48;
8366    l_rec_acct_attrs.array_acct_attr_code(35) := 'TAX_REC_NREC_DIST_REF_ID';
8367    l_rec_acct_attrs.array_num_value(35)  := p_source_49;
8368    l_rec_acct_attrs.array_acct_attr_code(36) := 'TAX_SUMMARY_LINE_REF_ID';
8369    l_rec_acct_attrs.array_num_value(36)  := p_source_50;
8370    l_rec_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
8371    l_rec_acct_attrs.array_num_value(37)  := p_source_51;
8372    l_rec_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
8373    l_rec_acct_attrs.array_num_value(38)  := p_source_52;
8374 
8375    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8376    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8377 
8378    ---------------------------------------------------------------------------------------------------------------
8379    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8380    ---------------------------------------------------------------------------------------------------------------
8381    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8382 
8383    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8384    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8385 
8386    IF xla_accounting_cache_pkg.GetValueChar
8387          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8388          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8389    AND l_bflow_method_code = 'PRIOR_ENTRY'
8390 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8391    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8392          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8393        )
8394    THEN
8395          xla_ae_lines_pkg.BflowUpgEntry
8396            (p_business_method_code    => l_bflow_method_code
8397            ,p_business_class_code     => l_bflow_class_code
8398            ,p_balance_type            => l_balance_type_code);
8399    ELSE
8400       NULL;
8401 XLA_AE_LINES_PKG.business_flow_validation(
8402                                 p_business_method_code     => l_bflow_method_code
8403                                ,p_business_class_code      => l_bflow_class_code
8404                                ,p_inherit_description_flag => l_inherit_desc_flag);
8405    END IF;
8406 
8407    --
8408    -- call analytical criteria
8409    --
8410    -- Inherited Analytical Criteria for business flow method of Prior Entry.
8411    --
8412    -- call description
8413    --
8414    -- No description or it is inherited.
8415    --
8416    -- call ADRs
8417    -- Bug 4922099
8418    --
8419    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8420         (NVL(l_actual_upg_option, 'N') = 'O') OR
8421         (NVL(l_enc_upg_option, 'N') = 'O')
8422       )
8423    THEN
8424    NULL;
8425    --
8426    --
8427    
8428    --
8429    --
8430    END IF;
8431    --
8432    -- Bug 4922099
8433    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8434           (NVL(l_enc_upg_option, 'N') = 'O')
8435         ) AND
8436         (l_bflow_method_code = 'PRIOR_ENTRY')
8437       )
8438    THEN
8439       IF
8440       --
8441       1 = 1
8442       --
8443       THEN
8444       xla_accounting_err_pkg.build_message
8445                                     (p_appli_s_name            => 'XLA'
8446                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8447                                     ,p_token_1                 => 'LINE_NUMBER'
8448                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8449                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8450                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8451                                                                              l_component_type
8452                                                                             ,l_component_code
8453                                                                             ,l_component_type_code
8454                                                                             ,l_component_appl_id
8455                                                                             ,l_amb_context_code
8456                                                                             ,l_entity_code
8457                                                                             ,l_event_class_code
8458                                                                            )
8462                                                                           ,p_lookup_code    => l_component_type_code
8459                                     ,p_token_3                 => 'OWNER'
8460                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8461                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8463                                                                          )
8464                                     ,p_token_4                 => 'PRODUCT_NAME'
8465                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8466                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8467                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8468                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8469                                     ,p_ae_header_id            =>  NULL
8470                                        );
8471 
8472         IF (C_LEVEL_ERROR>= g_log_level) THEN
8473                  trace
8474                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8475                       ,p_level    => C_LEVEL_ERROR
8476                       ,p_module   => l_log_module);
8477         END IF;
8478       END IF;
8479    END IF;
8480    --
8481    --
8482    ------------------------------------------------------------------------------------------------
8483    -- 4219869 Business Flow
8484    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8485    -- Prior Entry.  Currently, the following code is always generated.
8486    ------------------------------------------------------------------------------------------------
8487    -- No ValidateCurrentLine for business flow method of Prior Entry
8488 
8489    ------------------------------------------------------------------------------------
8490    -- 4219869 Business Flow
8491    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8492    ------------------------------------------------------------------------------------
8493    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8494 
8495    ----------------------------------------------------------------------------------
8496    -- 4219869 Business Flow
8497    -- Update journal entry status -- Need to generate this within IF <condition>
8498    ----------------------------------------------------------------------------------
8499    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8500          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8501          ,p_balance_type_code => l_balance_type_code
8502          );
8503 
8504    -------------------------------------------------------------------------------------------
8505    -- 4262811 - Generate the Accrual Reversal lines
8506    -------------------------------------------------------------------------------------------
8507    BEGIN
8508       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8509                               (g_array_event(p_event_id).array_value_num('header_index'));
8510       IF l_acc_rev_flag IS NULL THEN
8511          l_acc_rev_flag := 'N';
8512       END IF;
8513    EXCEPTION
8514       WHEN OTHERS THEN
8515          l_acc_rev_flag := 'N';
8516    END;
8517    --
8518    IF (l_acc_rev_flag = 'Y') THEN
8519 
8520        -- 4645092  ------------------------------------------------------------------------------
8521        -- To allow MPA report to determine if it should generate report process
8522        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8523        ------------------------------------------------------------------------------------------
8524 
8525        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8526        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8527    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8528    -- call ADRs
8529    -- Bug 4922099
8530    --
8531    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8532         (NVL(l_actual_upg_option, 'N') = 'O') OR
8533         (NVL(l_enc_upg_option, 'N') = 'O')
8534       )
8535    THEN
8536    NULL;
8537    --
8538    --
8539    
8540    --
8541    --
8542    END IF;
8543 
8544        --
8545        -- Update the line information that should be overwritten
8546        --
8547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8548                                          p_header_num   => 1);
8549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8550 
8551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8552 
8553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8555        END IF;
8556 
8557       --
8558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8559       --
8560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8562       ELSE
8566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8563           ---------------------------------------------------------------------------------------------------
8564           -- 4262811a Switch Sign
8565           ---------------------------------------------------------------------------------------------------
8567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8571           -- 5132302
8572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8574 
8575       END IF;
8576 
8577       -- 4955764
8578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8580 
8581 
8582       XLA_AE_LINES_PKG.ValidateCurrentLine;
8583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8584 
8585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8587                ,p_balance_type_code => l_balance_type_code);
8588 
8589    END IF;
8590 
8591    -----------------------------------------------------------------------------------------
8592    -- 4262811 Multiperiod Accounting
8593    -----------------------------------------------------------------------------------------
8594      -- No MPA option is assigned.
8595 
8596 
8597 END IF;
8598 END IF;
8599 --
8600 
8601 --
8602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8603    trace
8604       (p_msg      => 'END of AcctLineType_24'
8605       ,p_level    => C_LEVEL_PROCEDURE
8606       ,p_module   => l_log_module);
8607 END IF;
8608 --
8609 EXCEPTION
8610   WHEN xla_exceptions_pkg.application_exception THEN
8611       RAISE;
8612   WHEN OTHERS THEN
8613        xla_exceptions_pkg.raise_message
8614            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_24');
8615 END AcctLineType_24;
8616 --
8617 
8618 ---------------------------------------
8619 --
8620 -- PRIVATE FUNCTION
8621 --         AcctLineType_25
8622 --
8623 ---------------------------------------
8624 PROCEDURE AcctLineType_25 (
8625   p_application_id        IN NUMBER
8626  ,p_event_id              IN NUMBER
8627  ,p_calculate_acctd_flag  IN VARCHAR2
8628  ,p_calculate_g_l_flag    IN VARCHAR2
8629  ,p_actual_flag           IN OUT VARCHAR2
8630  ,p_balance_type_code     OUT VARCHAR2
8631  ,p_gain_or_loss_ref      OUT VARCHAR2
8632  
8633 --Federal Fund Category Description
8634  , p_source_6            IN VARCHAR2
8635 --Accounting Reversal Indicator
8636  , p_source_15            IN VARCHAR2
8637 --Distribution Link Type
8638  , p_source_17            IN VARCHAR2
8639 --Allocation to Main Distribution Identifier
8640  , p_source_19            IN NUMBER
8641 --Invoice Identifier
8642  , p_source_20            IN NUMBER
8643 --Business Flow Accounts Payable Application Identifier
8644  , p_source_21            IN NUMBER
8645 --Business Flow Invoice Distribution Type
8646  , p_source_22            IN VARCHAR2
8647 --Business Flow Invoice Entity Code
8648  , p_source_23            IN VARCHAR2
8649 --Business Flow Invoice Distribution Identifier
8650  , p_source_24            IN NUMBER
8651 --Business Flow Invoice Identifier
8652  , p_source_25            IN NUMBER
8653 --Invoice Distribution Identifier
8654  , p_source_26            IN NUMBER
8655 --Payables Encumbrance Upgrade Credit Account
8656  , p_source_27            IN NUMBER
8657 --Payables Encumbrance Upgrade Credit Amount
8658  , p_source_28            IN NUMBER
8659 --Invoice Currency Code
8660  , p_source_29            IN VARCHAR2
8661 --Payables Encumbrance Upgrade Credit Base Amount
8662  , p_source_30            IN NUMBER
8663 --Payables Encumbrance Upgrade Debit Account
8664  , p_source_31            IN NUMBER
8665 --Payables Encumbrance Upgrade Debit Amount
8666  , p_source_32            IN NUMBER
8667 --Payables Encumbrance Upgrade Debit Base Amount
8668  , p_source_33            IN NUMBER
8669 --Payables Encumbrance Upgrade Option
8670  , p_source_34            IN VARCHAR2
8671 --Deferred Accounting End Date
8672  , p_source_39            IN DATE
8673 --Deferred Accounting Option
8674  , p_source_40            IN VARCHAR2
8675 --Deferred Accounting Start Date
8676  , p_source_41            IN DATE
8677 --Override Accounted Amount Indicator
8678  , p_source_42            IN VARCHAR2
8679  , p_source_42_meaning    IN VARCHAR2
8680 --Third Party Type
8681  , p_source_45            IN VARCHAR2
8682 --Parent Reversal Identifier
8683  , p_source_46            IN NUMBER
8684 --Invoice Distribution Statistical Amount
8685  , p_source_47            IN NUMBER
8686 --Invoice Distribution Tax Line Identifier
8687  , p_source_48            IN NUMBER
8688 --Invoice Distribution Tax Distribution Identifier from Tax
8689  , p_source_49            IN NUMBER
8690 --Invoice Distribution Summary Tax Line Identifier
8691  , p_source_50            IN NUMBER
8695  , p_source_52            IN NUMBER
8692 --Payables Upgrade Credit Encumbrance Type Identifier
8693  , p_source_51            IN NUMBER
8694 --Payables Upgrade Debit Encumbrance Type Identifier
8696 --Invoice Distribution Amount
8697  , p_source_55            IN NUMBER
8698 --Invoice Distribution Ledger Amount
8699  , p_source_56            IN NUMBER
8700 )
8701 IS
8702 
8703 l_component_type              VARCHAR2(80);
8704 l_component_code              VARCHAR2(30);
8705 l_component_type_code         VARCHAR2(1);
8706 l_component_appl_id           INTEGER;
8707 l_amb_context_code            VARCHAR2(30);
8708 l_entity_code                 VARCHAR2(30);
8709 l_event_class_code            VARCHAR2(30);
8710 l_ae_header_id                NUMBER;
8711 l_event_type_code             VARCHAR2(30);
8712 l_line_definition_code        VARCHAR2(30);
8713 l_line_definition_owner_code  VARCHAR2(1);
8714 --
8715 -- adr variables
8716 l_segment                     VARCHAR2(30);
8717 l_ccid                        NUMBER;
8718 l_adr_transaction_coa_id      NUMBER;
8719 l_adr_accounting_coa_id       NUMBER;
8720 l_adr_flexfield_segment_code  VARCHAR2(30);
8721 l_adr_flex_value_set_id       NUMBER;
8722 l_adr_value_type_code         VARCHAR2(30);
8723 l_adr_value_combination_id    NUMBER;
8724 l_adr_value_segment_code      VARCHAR2(30);
8725 
8726 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8727 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8728 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8729 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8730 
8731 -- 4262811 Variables ------------------------------------------------------------------------------------------
8732 l_entered_amt_idx             NUMBER;
8733 l_accted_amt_idx              NUMBER;
8734 l_acc_rev_flag                VARCHAR2(1);
8735 l_accrual_line_num            NUMBER;
8736 l_tmp_amt                     NUMBER;
8737 l_acc_rev_natural_side_code   VARCHAR2(1);
8738 
8739 l_num_entries                 NUMBER;
8740 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8741 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8742 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8743 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8744 l_recog_line_1                NUMBER;
8745 l_recog_line_2                NUMBER;
8746 
8747 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8748 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8749 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8750 
8751 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8752 
8753 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8754 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8755 
8756 ---------------------------------------------------------------------------------------------------------------
8757 
8758 
8759 --
8760 -- bulk performance
8761 --
8762 l_balance_type_code           VARCHAR2(1);
8763 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8764 l_log_module                  VARCHAR2(240);
8765 
8766 --
8767 -- Upgrade strategy
8768 --
8769 l_actual_upg_option           VARCHAR2(1);
8770 l_enc_upg_option           VARCHAR2(1);
8771 
8772 --
8773 BEGIN
8774 --
8775 IF g_log_enabled THEN
8776       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
8777 END IF;
8778 --
8779 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8780 
8781       trace
8782          (p_msg      => 'BEGIN of AcctLineType_25'
8783          ,p_level    => C_LEVEL_PROCEDURE
8784          ,p_module   => l_log_module);
8785 
8786 END IF;
8787 --
8788 l_component_type             := 'AMB_JLT';
8789 l_component_code             := 'FV_AP_CM_REV_DIRECT_FUND_DR';
8790 l_component_type_code        := 'S';
8791 l_component_appl_id          :=  200;
8792 l_amb_context_code           := 'DEFAULT';
8793 l_entity_code                := 'AP_INVOICES';
8794 l_event_class_code           := 'CREDIT MEMOS';
8795 l_event_type_code            := 'CREDIT MEMOS_ALL';
8796 l_line_definition_owner_code := 'S';
8797 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
8798 --
8799 l_balance_type_code          := 'A';
8800 l_segment                     := NULL;
8801 l_ccid                        := NULL;
8802 l_adr_transaction_coa_id      := NULL;
8803 l_adr_accounting_coa_id       := NULL;
8804 l_adr_flexfield_segment_code  := NULL;
8805 l_adr_flex_value_set_id       := NULL;
8806 l_adr_value_type_code         := NULL;
8807 l_adr_value_combination_id    := NULL;
8808 l_adr_value_segment_code      := NULL;
8809 
8810 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
8811 l_bflow_class_code           := 'FV_DIRECT_FUND_CR';    -- 4219869 Business Flow
8812 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
8813 l_budgetary_control_flag     := 'Y';
8814 
8815 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8816 l_bflow_applied_to_amt       := NULL; -- 5132302
8817 l_entered_amt_idx            := NULL;          -- 4262811
8818 l_accted_amt_idx             := NULL;          -- 4262811
8819 l_acc_rev_flag               := NULL;          -- 4262811
8823  
8820 l_accrual_line_num           := NULL;          -- 4262811
8821 l_tmp_amt                    := NULL;          -- 4262811
8822 --
8824 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8825     l_balance_type_code <> 'B' THEN
8826 IF NVL(p_source_6,'
8827 ') =  'Direct' AND 
8828 NVL(
8829 xla_ae_sources_pkg.GetSystemSourceChar(
8830    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8831  , p_source_type_code      => 'Y'
8832  , p_source_application_id =>  602
8833 ),'
8834 ') =  'CREDIT MEMO CANCELLED'
8835  THEN 
8836 
8837    --
8838    XLA_AE_LINES_PKG.SetNewLine;
8839 
8840    p_balance_type_code          := l_balance_type_code;
8841    -- set the flag so later we will know whether the gain loss line needs to be created
8842    
8843    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8844      p_actual_flag :='A';
8845    END IF;
8846 
8847    --
8848    -- bulk performance
8849    --
8850    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8851                                       p_header_num   => 0); -- 4262811
8852    --
8853    -- set accounting line options
8854    --
8855    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8856            p_natural_side_code          => 'C'
8857          , p_gain_or_loss_flag          => 'N'
8858          , p_gl_transfer_mode_code      => 'S'
8859          , p_acct_entry_type_code       => 'A'
8860          , p_switch_side_flag           => 'N'
8861          , p_merge_duplicate_code       => 'N'
8862          );
8863    --
8864    l_acc_rev_natural_side_code := 'D';  -- 4262811
8865    -- 
8866    --
8867    -- set accounting line type info
8868    --
8869    xla_ae_lines_pkg.SetAcctLineType
8870       (p_component_type             => l_component_type
8871       ,p_event_type_code            => l_event_type_code
8872       ,p_line_definition_owner_code => l_line_definition_owner_code
8873       ,p_line_definition_code       => l_line_definition_code
8874       ,p_accounting_line_code       => l_component_code
8875       ,p_accounting_line_type_code  => l_component_type_code
8876       ,p_accounting_line_appl_id    => l_component_appl_id
8877       ,p_amb_context_code           => l_amb_context_code
8878       ,p_entity_code                => l_entity_code
8879       ,p_event_class_code           => l_event_class_code);
8880    --
8881    -- set accounting class
8882    --
8883    xla_ae_lines_pkg.SetAcctClass(
8884            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
8885          , p_ae_header_id           => l_ae_header_id
8886          );
8887 
8888    --
8889    -- set rounding class
8890    --
8891    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8892                       'ACCOUNTSPAYABLE';
8893 
8894    --
8895    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8896    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8897    --
8898    -- bulk performance
8899    --
8900    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8901 
8902    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8903       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8904 
8905    -- 4955764
8906    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8907       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8908 
8909    -- 4458381 Public Sector Enh
8910    
8911    --
8912    -- set accounting attributes for the line type
8913    --
8914    l_entered_amt_idx := 23;
8915    l_accted_amt_idx  := 25;
8916    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8917    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8918    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
8919    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
8920    l_rec_acct_attrs.array_num_value(2)  := 
8921 xla_ae_sources_pkg.GetSystemSourceNum(
8922    p_source_code           => 'XLA_EVENT_APPL_ID'
8923  , p_source_type_code      => 'Y'
8924  , p_source_application_id =>  602
8925 );
8926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
8927    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
8928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
8929    l_rec_acct_attrs.array_char_value(4)  := 
8930 xla_ae_sources_pkg.GetSystemSourceChar(
8931    p_source_code           => 'XLA_ENTITY_CODE'
8932  , p_source_type_code      => 'Y'
8933  , p_source_application_id =>  602
8934 );
8935    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
8936    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
8937    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
8938    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
8939    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
8940    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
8941    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8942    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
8943    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
8944    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
8945    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
8949    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
8946    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
8947    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8948    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
8950    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
8951    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
8952    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
8953    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
8954    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
8955    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
8956    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
8957    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
8958    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
8959    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
8960    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
8961    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
8962    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
8963    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
8964    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
8965    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
8966    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
8967    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
8968    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
8969    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
8970    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
8971    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
8972    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
8973    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
8974    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
8975    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
8976    l_rec_acct_attrs.array_num_value(25)  := p_source_56;
8977    l_rec_acct_attrs.array_acct_attr_code(26) := 'MULTIPERIOD_END_DATE';
8978    l_rec_acct_attrs.array_date_value(26)  := p_source_39;
8979    l_rec_acct_attrs.array_acct_attr_code(27) := 'MULTIPERIOD_OPTION';
8980    l_rec_acct_attrs.array_char_value(27)  := p_source_40;
8981    l_rec_acct_attrs.array_acct_attr_code(28) := 'MULTIPERIOD_START_DATE';
8982    l_rec_acct_attrs.array_date_value(28)  := p_source_41;
8983    l_rec_acct_attrs.array_acct_attr_code(29) := 'OVERRIDE_ACCTD_AMT_FLAG';
8984    l_rec_acct_attrs.array_char_value(29)  := p_source_42;
8985    l_rec_acct_attrs.array_acct_attr_code(30) := 'PARTY_TYPE';
8986    l_rec_acct_attrs.array_char_value(30)  := p_source_45;
8987    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
8988    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_46);
8989    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
8990    l_rec_acct_attrs.array_char_value(32)  := p_source_17;
8991    l_rec_acct_attrs.array_acct_attr_code(33) := 'STATISTICAL_AMOUNT';
8992    l_rec_acct_attrs.array_num_value(33)  := p_source_47;
8993    l_rec_acct_attrs.array_acct_attr_code(34) := 'TAX_LINE_REF_ID';
8994    l_rec_acct_attrs.array_num_value(34)  := p_source_48;
8995    l_rec_acct_attrs.array_acct_attr_code(35) := 'TAX_REC_NREC_DIST_REF_ID';
8996    l_rec_acct_attrs.array_num_value(35)  := p_source_49;
8997    l_rec_acct_attrs.array_acct_attr_code(36) := 'TAX_SUMMARY_LINE_REF_ID';
8998    l_rec_acct_attrs.array_num_value(36)  := p_source_50;
8999    l_rec_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
9000    l_rec_acct_attrs.array_num_value(37)  := p_source_51;
9001    l_rec_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
9002    l_rec_acct_attrs.array_num_value(38)  := p_source_52;
9003 
9004    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9005    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9006 
9007    ---------------------------------------------------------------------------------------------------------------
9008    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9009    ---------------------------------------------------------------------------------------------------------------
9010    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9011 
9012    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9013    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9014 
9015    IF xla_accounting_cache_pkg.GetValueChar
9016          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9017          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9018    AND l_bflow_method_code = 'PRIOR_ENTRY'
9019 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9020    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9021          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9022        )
9023    THEN
9024          xla_ae_lines_pkg.BflowUpgEntry
9025            (p_business_method_code    => l_bflow_method_code
9026            ,p_business_class_code     => l_bflow_class_code
9027            ,p_balance_type            => l_balance_type_code);
9028    ELSE
9029       NULL;
9030 XLA_AE_LINES_PKG.business_flow_validation(
9034    END IF;
9031                                 p_business_method_code     => l_bflow_method_code
9032                                ,p_business_class_code      => l_bflow_class_code
9033                                ,p_inherit_description_flag => l_inherit_desc_flag);
9035 
9036    --
9037    -- call analytical criteria
9038    --
9039    -- Inherited Analytical Criteria for business flow method of Prior Entry.
9040    --
9041    -- call description
9042    --
9043    -- No description or it is inherited.
9044    --
9045    -- call ADRs
9046    -- Bug 4922099
9047    --
9048    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9049         (NVL(l_actual_upg_option, 'N') = 'O') OR
9050         (NVL(l_enc_upg_option, 'N') = 'O')
9051       )
9052    THEN
9053    NULL;
9054    --
9055    --
9056    
9057    --
9058    --
9059    END IF;
9060    --
9061    -- Bug 4922099
9062    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9063           (NVL(l_enc_upg_option, 'N') = 'O')
9064         ) AND
9065         (l_bflow_method_code = 'PRIOR_ENTRY')
9066       )
9067    THEN
9068       IF
9069       --
9070       1 = 1
9071       --
9072       THEN
9073       xla_accounting_err_pkg.build_message
9074                                     (p_appli_s_name            => 'XLA'
9075                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9076                                     ,p_token_1                 => 'LINE_NUMBER'
9077                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9078                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9079                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9080                                                                              l_component_type
9081                                                                             ,l_component_code
9082                                                                             ,l_component_type_code
9083                                                                             ,l_component_appl_id
9084                                                                             ,l_amb_context_code
9085                                                                             ,l_entity_code
9086                                                                             ,l_event_class_code
9087                                                                            )
9088                                     ,p_token_3                 => 'OWNER'
9089                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9090                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9091                                                                           ,p_lookup_code    => l_component_type_code
9092                                                                          )
9093                                     ,p_token_4                 => 'PRODUCT_NAME'
9094                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9095                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9096                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9097                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9098                                     ,p_ae_header_id            =>  NULL
9099                                        );
9100 
9101         IF (C_LEVEL_ERROR>= g_log_level) THEN
9102                  trace
9103                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9104                       ,p_level    => C_LEVEL_ERROR
9105                       ,p_module   => l_log_module);
9106         END IF;
9107       END IF;
9108    END IF;
9109    --
9110    --
9111    ------------------------------------------------------------------------------------------------
9112    -- 4219869 Business Flow
9113    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9114    -- Prior Entry.  Currently, the following code is always generated.
9115    ------------------------------------------------------------------------------------------------
9116    -- No ValidateCurrentLine for business flow method of Prior Entry
9117 
9118    ------------------------------------------------------------------------------------
9119    -- 4219869 Business Flow
9120    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9121    ------------------------------------------------------------------------------------
9122    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9123 
9124    ----------------------------------------------------------------------------------
9125    -- 4219869 Business Flow
9126    -- Update journal entry status -- Need to generate this within IF <condition>
9127    ----------------------------------------------------------------------------------
9128    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9129          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9130          ,p_balance_type_code => l_balance_type_code
9131          );
9132 
9133    -------------------------------------------------------------------------------------------
9134    -- 4262811 - Generate the Accrual Reversal lines
9138                               (g_array_event(p_event_id).array_value_num('header_index'));
9135    -------------------------------------------------------------------------------------------
9136    BEGIN
9137       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9139       IF l_acc_rev_flag IS NULL THEN
9140          l_acc_rev_flag := 'N';
9141       END IF;
9142    EXCEPTION
9143       WHEN OTHERS THEN
9144          l_acc_rev_flag := 'N';
9145    END;
9146    --
9147    IF (l_acc_rev_flag = 'Y') THEN
9148 
9149        -- 4645092  ------------------------------------------------------------------------------
9150        -- To allow MPA report to determine if it should generate report process
9151        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9152        ------------------------------------------------------------------------------------------
9153 
9154        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9155        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9156    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9157    -- call ADRs
9158    -- Bug 4922099
9159    --
9160    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9161         (NVL(l_actual_upg_option, 'N') = 'O') OR
9162         (NVL(l_enc_upg_option, 'N') = 'O')
9163       )
9164    THEN
9165    NULL;
9166    --
9167    --
9168    
9169    --
9170    --
9171    END IF;
9172 
9173        --
9174        -- Update the line information that should be overwritten
9175        --
9176        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9177                                          p_header_num   => 1);
9178        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9179 
9180        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9181 
9182        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9183           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9184        END IF;
9185 
9186       --
9187       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9188       --
9189       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9190           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9191       ELSE
9192           ---------------------------------------------------------------------------------------------------
9193           -- 4262811a Switch Sign
9194           ---------------------------------------------------------------------------------------------------
9195           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9196           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9197                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9198           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9199                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9200           -- 5132302
9201           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9202                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9203 
9204       END IF;
9205 
9206       -- 4955764
9207       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9209 
9210 
9211       XLA_AE_LINES_PKG.ValidateCurrentLine;
9212       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9213 
9214       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9215                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9216                ,p_balance_type_code => l_balance_type_code);
9217 
9218    END IF;
9219 
9220    -----------------------------------------------------------------------------------------
9221    -- 4262811 Multiperiod Accounting
9222    -----------------------------------------------------------------------------------------
9223      -- No MPA option is assigned.
9224 
9225 
9226 END IF;
9227 END IF;
9228 --
9229 
9230 --
9231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9232    trace
9233       (p_msg      => 'END of AcctLineType_25'
9234       ,p_level    => C_LEVEL_PROCEDURE
9235       ,p_module   => l_log_module);
9236 END IF;
9237 --
9238 EXCEPTION
9239   WHEN xla_exceptions_pkg.application_exception THEN
9240       RAISE;
9241   WHEN OTHERS THEN
9242        xla_exceptions_pkg.raise_message
9243            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_25');
9244 END AcctLineType_25;
9245 --
9246 
9247 ---------------------------------------
9248 --
9249 -- PRIVATE FUNCTION
9250 --         AcctLineType_26
9251 --
9252 ---------------------------------------
9253 PROCEDURE AcctLineType_26 (
9254   p_application_id        IN NUMBER
9255  ,p_event_id              IN NUMBER
9256  ,p_calculate_acctd_flag  IN VARCHAR2
9257  ,p_calculate_g_l_flag    IN VARCHAR2
9258  ,p_actual_flag           IN OUT VARCHAR2
9262 --Invoice Distribution Description
9259  ,p_balance_type_code     OUT VARCHAR2
9260  ,p_gain_or_loss_ref      OUT VARCHAR2
9261  
9263  , p_source_1            IN VARCHAR2
9264 --Invoice Distribution Account
9265  , p_source_2            IN NUMBER
9266 --Federal Fund Category
9267  , p_source_4            IN VARCHAR2
9268 --Federal Fund Expired Status
9269  , p_source_5            IN VARCHAR2
9270 --Federal Fund Category Description
9271  , p_source_6            IN VARCHAR2
9272 --Invoice Distribution Type
9273  , p_source_8            IN VARCHAR2
9274  , p_source_8_meaning    IN VARCHAR2
9275 --Federal Prior Year Flag
9276  , p_source_9            IN VARCHAR2
9277 --Invoice Type
9278  , p_source_13            IN VARCHAR2
9279  , p_source_13_meaning    IN VARCHAR2
9280 --Accounting Reversal Indicator
9281  , p_source_15            IN VARCHAR2
9282 --Distribution Link Type
9283  , p_source_17            IN VARCHAR2
9284 --Allocation to Main Distribution Identifier
9285  , p_source_19            IN NUMBER
9286 --Invoice Identifier
9287  , p_source_20            IN NUMBER
9288 --Business Flow Accounts Payable Application Identifier
9289  , p_source_21            IN NUMBER
9290 --Business Flow Invoice Distribution Type
9291  , p_source_22            IN VARCHAR2
9292 --Business Flow Invoice Entity Code
9293  , p_source_23            IN VARCHAR2
9294 --Business Flow Invoice Distribution Identifier
9295  , p_source_24            IN NUMBER
9296 --Business Flow Invoice Identifier
9297  , p_source_25            IN NUMBER
9298 --Invoice Distribution Identifier
9299  , p_source_26            IN NUMBER
9300 --Payables Encumbrance Upgrade Credit Account
9301  , p_source_27            IN NUMBER
9302 --Payables Encumbrance Upgrade Credit Amount
9303  , p_source_28            IN NUMBER
9304 --Invoice Currency Code
9305  , p_source_29            IN VARCHAR2
9306 --Payables Encumbrance Upgrade Credit Base Amount
9307  , p_source_30            IN NUMBER
9308 --Payables Encumbrance Upgrade Debit Account
9309  , p_source_31            IN NUMBER
9310 --Payables Encumbrance Upgrade Debit Amount
9311  , p_source_32            IN NUMBER
9312 --Payables Encumbrance Upgrade Debit Base Amount
9313  , p_source_33            IN NUMBER
9314 --Payables Encumbrance Upgrade Option
9315  , p_source_34            IN VARCHAR2
9316 --Invoice Exchange Date
9317  , p_source_36            IN DATE
9318 --Invoice Exchange Rate
9319  , p_source_37            IN NUMBER
9320 --Invoice Exchange Rate Type
9321  , p_source_38            IN VARCHAR2
9322 --Deferred Accounting End Date
9323  , p_source_39            IN DATE
9324 --Deferred Accounting Option
9325  , p_source_40            IN VARCHAR2
9326 --Deferred Accounting Start Date
9327  , p_source_41            IN DATE
9328 --Override Accounted Amount Indicator
9329  , p_source_42            IN VARCHAR2
9330  , p_source_42_meaning    IN VARCHAR2
9331 --Invoice Supplier Identifier
9332  , p_source_43            IN NUMBER
9333 --Invoice Supplier Site Identifier
9334  , p_source_44            IN NUMBER
9335 --Third Party Type
9336  , p_source_45            IN VARCHAR2
9337 --Parent Reversal Identifier
9338  , p_source_46            IN NUMBER
9339 --Invoice Distribution Statistical Amount
9340  , p_source_47            IN NUMBER
9341 --Invoice Distribution Tax Line Identifier
9342  , p_source_48            IN NUMBER
9343 --Invoice Distribution Tax Distribution Identifier from Tax
9344  , p_source_49            IN NUMBER
9345 --Invoice Distribution Summary Tax Line Identifier
9346  , p_source_50            IN NUMBER
9347 --Payables Upgrade Credit Encumbrance Type Identifier
9348  , p_source_51            IN NUMBER
9349 --Payables Upgrade Debit Encumbrance Type Identifier
9350  , p_source_52            IN NUMBER
9351 --Invoice Distribution Amount
9352  , p_source_55            IN NUMBER
9353 --Invoice Distribution Ledger Amount
9354  , p_source_56            IN NUMBER
9355 )
9356 IS
9357 
9358 l_component_type              VARCHAR2(80);
9359 l_component_code              VARCHAR2(30);
9360 l_component_type_code         VARCHAR2(1);
9361 l_component_appl_id           INTEGER;
9362 l_amb_context_code            VARCHAR2(30);
9363 l_entity_code                 VARCHAR2(30);
9364 l_event_class_code            VARCHAR2(30);
9365 l_ae_header_id                NUMBER;
9366 l_event_type_code             VARCHAR2(30);
9367 l_line_definition_code        VARCHAR2(30);
9368 l_line_definition_owner_code  VARCHAR2(1);
9369 --
9370 -- adr variables
9371 l_segment                     VARCHAR2(30);
9372 l_ccid                        NUMBER;
9373 l_adr_transaction_coa_id      NUMBER;
9374 l_adr_accounting_coa_id       NUMBER;
9375 l_adr_flexfield_segment_code  VARCHAR2(30);
9376 l_adr_flex_value_set_id       NUMBER;
9377 l_adr_value_type_code         VARCHAR2(30);
9378 l_adr_value_combination_id    NUMBER;
9379 l_adr_value_segment_code      VARCHAR2(30);
9380 
9381 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9382 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9383 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9384 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9385 
9386 -- 4262811 Variables ------------------------------------------------------------------------------------------
9387 l_entered_amt_idx             NUMBER;
9388 l_accted_amt_idx              NUMBER;
9389 l_acc_rev_flag                VARCHAR2(1);
9390 l_accrual_line_num            NUMBER;
9394 l_num_entries                 NUMBER;
9391 l_tmp_amt                     NUMBER;
9392 l_acc_rev_natural_side_code   VARCHAR2(1);
9393 
9395 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9396 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9397 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9398 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9399 l_recog_line_1                NUMBER;
9400 l_recog_line_2                NUMBER;
9401 
9402 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9403 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9404 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9405 
9406 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9407 
9408 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9409 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9410 
9411 ---------------------------------------------------------------------------------------------------------------
9412 
9413 
9414 --
9415 -- bulk performance
9416 --
9417 l_balance_type_code           VARCHAR2(1);
9418 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9419 l_log_module                  VARCHAR2(240);
9420 
9421 --
9422 -- Upgrade strategy
9423 --
9424 l_actual_upg_option           VARCHAR2(1);
9425 l_enc_upg_option           VARCHAR2(1);
9426 
9427 --
9428 BEGIN
9429 --
9430 IF g_log_enabled THEN
9431       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
9432 END IF;
9433 --
9434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9435 
9436       trace
9437          (p_msg      => 'BEGIN of AcctLineType_26'
9438          ,p_level    => C_LEVEL_PROCEDURE
9439          ,p_module   => l_log_module);
9440 
9441 END IF;
9442 --
9443 l_component_type             := 'AMB_JLT';
9444 l_component_code             := 'FV_AP_CREDIT_MEMOS_EXP_CR';
9445 l_component_type_code        := 'S';
9446 l_component_appl_id          :=  200;
9447 l_amb_context_code           := 'DEFAULT';
9448 l_entity_code                := 'AP_INVOICES';
9449 l_event_class_code           := 'CREDIT MEMOS';
9450 l_event_type_code            := 'CREDIT MEMOS_ALL';
9451 l_line_definition_owner_code := 'S';
9452 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
9453 --
9454 l_balance_type_code          := 'A';
9455 l_segment                     := NULL;
9456 l_ccid                        := NULL;
9457 l_adr_transaction_coa_id      := NULL;
9458 l_adr_accounting_coa_id       := NULL;
9459 l_adr_flexfield_segment_code  := NULL;
9460 l_adr_flex_value_set_id       := NULL;
9461 l_adr_value_type_code         := NULL;
9462 l_adr_value_combination_id    := NULL;
9463 l_adr_value_segment_code      := NULL;
9464 
9465 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9466 l_bflow_class_code           := '';    -- 4219869 Business Flow
9467 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9468 l_budgetary_control_flag     := 'Y';
9469 
9470 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9471 l_bflow_applied_to_amt       := NULL; -- 5132302
9472 l_entered_amt_idx            := NULL;          -- 4262811
9473 l_accted_amt_idx             := NULL;          -- 4262811
9474 l_acc_rev_flag               := NULL;          -- 4262811
9475 l_accrual_line_num           := NULL;          -- 4262811
9476 l_tmp_amt                    := NULL;          -- 4262811
9477 --
9478  
9479 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9480     l_balance_type_code <> 'B' THEN
9481 IF NVL(p_source_13,'
9482 ') =  'CREDIT' AND 
9483 (NVL(p_source_8,'
9484 ') =  'ITEM' OR 
9485 NVL(p_source_8,'
9486 ') =  'MISCELLANEOUS' OR 
9487 NVL(p_source_8,'
9488 ') =  'FREIGHT' OR 
9489 NVL(p_source_8,'
9490 ') =  'IPV' OR 
9491 NVL(p_source_8,'
9492 ') =  'ACCRUAL') AND 
9493 (NVL(p_source_9,'
9494 ') =  'N' OR 
9495 (NVL(p_source_9,'
9496 ') =  'Y' AND 
9497 NVL(p_source_8,'
9498 ') <>  'IPV')
9499 ) THEN 
9500 
9501    --
9502    XLA_AE_LINES_PKG.SetNewLine;
9503 
9504    p_balance_type_code          := l_balance_type_code;
9505    -- set the flag so later we will know whether the gain loss line needs to be created
9506    
9507    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9508      p_actual_flag :='A';
9509    END IF;
9510 
9511    --
9512    -- bulk performance
9513    --
9514    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9515                                       p_header_num   => 0); -- 4262811
9516    --
9517    -- set accounting line options
9518    --
9519    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9520            p_natural_side_code          => 'D'
9521          , p_gain_or_loss_flag          => 'N'
9522          , p_gl_transfer_mode_code      => 'S'
9523          , p_acct_entry_type_code       => 'A'
9524          , p_switch_side_flag           => 'N'
9525          , p_merge_duplicate_code       => 'N'
9526          );
9527    --
9528    l_acc_rev_natural_side_code := 'C';  -- 4262811
9529    -- 
9530    --
9531    -- set accounting line type info
9532    --
9533    xla_ae_lines_pkg.SetAcctLineType
9537       ,p_line_definition_code       => l_line_definition_code
9534       (p_component_type             => l_component_type
9535       ,p_event_type_code            => l_event_type_code
9536       ,p_line_definition_owner_code => l_line_definition_owner_code
9538       ,p_accounting_line_code       => l_component_code
9539       ,p_accounting_line_type_code  => l_component_type_code
9540       ,p_accounting_line_appl_id    => l_component_appl_id
9541       ,p_amb_context_code           => l_amb_context_code
9542       ,p_entity_code                => l_entity_code
9543       ,p_event_class_code           => l_event_class_code);
9544    --
9545    -- set accounting class
9546    --
9547    xla_ae_lines_pkg.SetAcctClass(
9548            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
9549          , p_ae_header_id           => l_ae_header_id
9550          );
9551 
9552    --
9553    -- set rounding class
9554    --
9555    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9556                       'ACCOUNTSPAYABLE';
9557 
9558    --
9559    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9560    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9561    --
9562    -- bulk performance
9563    --
9564    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9565 
9566    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9567       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9568 
9569    -- 4955764
9570    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9571       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9572 
9573    -- 4458381 Public Sector Enh
9574    
9575    --
9576    -- set accounting attributes for the line type
9577    --
9578    l_entered_amt_idx := 23;
9579    l_accted_amt_idx  := 28;
9580    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9581    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9582    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
9583    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
9584    l_rec_acct_attrs.array_num_value(2)  := 
9585 xla_ae_sources_pkg.GetSystemSourceNum(
9586    p_source_code           => 'XLA_EVENT_APPL_ID'
9587  , p_source_type_code      => 'Y'
9588  , p_source_application_id =>  602
9589 );
9590    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
9591    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
9592    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
9593    l_rec_acct_attrs.array_char_value(4)  := 
9594 xla_ae_sources_pkg.GetSystemSourceChar(
9595    p_source_code           => 'XLA_ENTITY_CODE'
9596  , p_source_type_code      => 'Y'
9597  , p_source_application_id =>  602
9598 );
9599    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
9600    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
9601    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
9602    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
9603    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
9604    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
9605    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9606    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
9607    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
9608    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
9609    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
9610    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
9611    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9612    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
9613    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
9614    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
9615    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
9616    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
9617    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
9618    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
9619    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
9620    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
9621    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
9622    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
9623    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
9624    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
9625    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
9626    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
9627    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
9628    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
9629    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
9630    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
9631    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
9632    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
9633    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
9634    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
9635    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
9636    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
9640    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
9637    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
9638    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
9639    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
9641    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
9642    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
9643    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
9644    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
9645    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
9646    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
9647    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
9648    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
9649    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
9650    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
9651    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
9652    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
9653    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
9654    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
9655    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
9656    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
9657    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
9658    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
9659    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
9660    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
9661    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
9662    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
9663    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
9664    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
9665    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
9666    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
9667    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
9668    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
9669    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
9670    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
9671    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
9672    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
9673    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
9674    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
9675    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
9676    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
9677 
9678    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9679    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9680 
9681    ---------------------------------------------------------------------------------------------------------------
9682    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9683    ---------------------------------------------------------------------------------------------------------------
9684    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9685 
9686    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9687    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9688 
9689    IF xla_accounting_cache_pkg.GetValueChar
9690          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9691          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9692    AND l_bflow_method_code = 'PRIOR_ENTRY'
9693 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9694    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9695          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9696        )
9697    THEN
9698          xla_ae_lines_pkg.BflowUpgEntry
9699            (p_business_method_code    => l_bflow_method_code
9700            ,p_business_class_code     => l_bflow_class_code
9701            ,p_balance_type            => l_balance_type_code);
9702    ELSE
9703       NULL;
9704 -- No business flow processing for business flow method of NONE.
9705    END IF;
9706 
9707    --
9708    -- call analytical criteria
9709    --
9710    
9711    --
9712    -- call description
9713    --
9714    
9715 xla_ae_lines_pkg.SetLineDescription(
9716    p_ae_header_id => l_ae_header_id
9717   ,p_description  => Description_2 (
9718      p_application_id         => p_application_id
9719    , p_ae_header_id           => l_ae_header_id 
9720 , p_source_1 => p_source_1
9721    )
9722 );
9723 
9724 
9725    --
9726    -- call ADRs
9727    -- Bug 4922099
9728    --
9729    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9730         (NVL(l_actual_upg_option, 'N') = 'O') OR
9731         (NVL(l_enc_upg_option, 'N') = 'O')
9732       )
9733    THEN
9734    NULL;
9735    --
9736    --
9737    
9738   l_ccid := AcctDerRule_3(
9739            p_application_id           => p_application_id
9740          , p_ae_header_id             => l_ae_header_id 
9741 , p_source_2 => p_source_2
9742          , x_transaction_coa_id       => l_adr_transaction_coa_id
9743          , x_accounting_coa_id        => l_adr_accounting_coa_id
9744          , x_value_type_code          => l_adr_value_type_code
9748    xla_ae_lines_pkg.set_ccid(
9745          , p_side                     => 'NA'
9746    );
9747 
9749     p_code_combination_id          => l_ccid
9750   , p_value_type_code              => l_adr_value_type_code
9751   , p_transaction_coa_id           => l_adr_transaction_coa_id
9752   , p_accounting_coa_id            => l_adr_accounting_coa_id
9753   , p_adr_code                     => 'AP_INVOICE_DIST'
9754   , p_adr_type_code                => 'S'
9755   , p_component_type               => l_component_type
9756   , p_component_code               => l_component_code
9757   , p_component_type_code          => l_component_type_code
9758   , p_component_appl_id            => l_component_appl_id
9759   , p_amb_context_code             => l_amb_context_code
9760   , p_side                         => 'NA'
9761   );
9762 
9763 
9764    l_segment := AcctDerRule_8(
9765            p_application_id           => p_application_id
9766          , p_ae_header_id             => l_ae_header_id 
9767 , p_source_4 => p_source_4
9768 , p_source_5 => p_source_5
9769 , p_source_6 => p_source_6
9770          , x_transaction_coa_id       => l_adr_transaction_coa_id
9771          , x_accounting_coa_id        => l_adr_accounting_coa_id
9772          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
9773          , x_flex_value_set_id        => l_adr_flex_value_set_id
9774          , x_value_type_code          => l_adr_value_type_code
9775          , x_value_combination_id     => l_adr_value_combination_id
9776          , x_value_segment_code       => l_adr_value_segment_code
9777          , p_side                     => 'NA'
9778          , p_override_seg_flag        => 'Y'
9779    );
9780 
9781    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
9782 
9783       xla_ae_lines_pkg.set_segment(
9784           p_to_segment_code         => 'GL_ACCOUNT'
9785         , p_segment_value           => l_segment
9786         , p_from_segment_code       => l_adr_value_segment_code
9787         , p_from_combination_id     => l_adr_value_combination_id
9788         , p_value_type_code         => l_adr_value_type_code
9789         , p_transaction_coa_id      => l_adr_transaction_coa_id
9790         , p_accounting_coa_id       => l_adr_accounting_coa_id
9791         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
9792         , p_flex_value_set_id       => l_adr_flex_value_set_id
9793         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
9794         , p_adr_type_code           => 'S'
9795         , p_component_type          => l_component_type
9796         , p_component_code          => l_component_code
9797         , p_component_type_code     => l_component_type_code
9798         , p_component_appl_id       => l_component_appl_id
9799         , p_amb_context_code        => l_amb_context_code
9800         , p_entity_code             => 'AP_INVOICES'
9801         , p_event_class_code        => 'CREDIT MEMOS'
9802         , p_side                    => 'NA'
9803         );
9804 
9805   END IF;
9806 
9807    --
9808    --
9809    END IF;
9810    --
9811    -- Bug 4922099
9812    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9813           (NVL(l_enc_upg_option, 'N') = 'O')
9814         ) AND
9815         (l_bflow_method_code = 'PRIOR_ENTRY')
9816       )
9817    THEN
9818       IF
9819       --
9820       1 = 2
9821       --
9822       THEN
9823       xla_accounting_err_pkg.build_message
9824                                     (p_appli_s_name            => 'XLA'
9825                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9826                                     ,p_token_1                 => 'LINE_NUMBER'
9827                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9828                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9829                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9830                                                                              l_component_type
9831                                                                             ,l_component_code
9832                                                                             ,l_component_type_code
9833                                                                             ,l_component_appl_id
9834                                                                             ,l_amb_context_code
9835                                                                             ,l_entity_code
9836                                                                             ,l_event_class_code
9837                                                                            )
9838                                     ,p_token_3                 => 'OWNER'
9839                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9840                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9841                                                                           ,p_lookup_code    => l_component_type_code
9842                                                                          )
9843                                     ,p_token_4                 => 'PRODUCT_NAME'
9844                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9845                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9849                                        );
9846                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9847                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9848                                     ,p_ae_header_id            =>  NULL
9850 
9851         IF (C_LEVEL_ERROR>= g_log_level) THEN
9852                  trace
9853                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9854                       ,p_level    => C_LEVEL_ERROR
9855                       ,p_module   => l_log_module);
9856         END IF;
9857       END IF;
9858    END IF;
9859    --
9860    --
9861    ------------------------------------------------------------------------------------------------
9862    -- 4219869 Business Flow
9863    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9864    -- Prior Entry.  Currently, the following code is always generated.
9865    ------------------------------------------------------------------------------------------------
9866    XLA_AE_LINES_PKG.ValidateCurrentLine;
9867 
9868    ------------------------------------------------------------------------------------
9869    -- 4219869 Business Flow
9870    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9871    ------------------------------------------------------------------------------------
9872    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9873 
9874    ----------------------------------------------------------------------------------
9875    -- 4219869 Business Flow
9876    -- Update journal entry status -- Need to generate this within IF <condition>
9877    ----------------------------------------------------------------------------------
9878    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9879          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9880          ,p_balance_type_code => l_balance_type_code
9881          );
9882 
9883    -------------------------------------------------------------------------------------------
9884    -- 4262811 - Generate the Accrual Reversal lines
9885    -------------------------------------------------------------------------------------------
9886    BEGIN
9887       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9888                               (g_array_event(p_event_id).array_value_num('header_index'));
9889       IF l_acc_rev_flag IS NULL THEN
9890          l_acc_rev_flag := 'N';
9891       END IF;
9892    EXCEPTION
9893       WHEN OTHERS THEN
9894          l_acc_rev_flag := 'N';
9895    END;
9896    --
9897    IF (l_acc_rev_flag = 'Y') THEN
9898 
9899        -- 4645092  ------------------------------------------------------------------------------
9900        -- To allow MPA report to determine if it should generate report process
9901        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9902        ------------------------------------------------------------------------------------------
9903 
9904        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9905        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9906    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9907    -- call ADRs
9908    -- Bug 4922099
9909    --
9910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9911         (NVL(l_actual_upg_option, 'N') = 'O') OR
9912         (NVL(l_enc_upg_option, 'N') = 'O')
9913       )
9914    THEN
9915    NULL;
9916    --
9917    --
9918    
9919   l_ccid := AcctDerRule_3(
9920            p_application_id           => p_application_id
9921          , p_ae_header_id             => l_ae_header_id 
9922 , p_source_2 => p_source_2
9923          , x_transaction_coa_id       => l_adr_transaction_coa_id
9924          , x_accounting_coa_id        => l_adr_accounting_coa_id
9925          , x_value_type_code          => l_adr_value_type_code
9926          , p_side                     => 'NA'
9927    );
9928 
9929    xla_ae_lines_pkg.set_ccid(
9930     p_code_combination_id          => l_ccid
9931   , p_value_type_code              => l_adr_value_type_code
9932   , p_transaction_coa_id           => l_adr_transaction_coa_id
9933   , p_accounting_coa_id            => l_adr_accounting_coa_id
9934   , p_adr_code                     => 'AP_INVOICE_DIST'
9935   , p_adr_type_code                => 'S'
9936   , p_component_type               => l_component_type
9937   , p_component_code               => l_component_code
9938   , p_component_type_code          => l_component_type_code
9939   , p_component_appl_id            => l_component_appl_id
9940   , p_amb_context_code             => l_amb_context_code
9941   , p_side                         => 'NA'
9942   );
9943 
9944 
9945    l_segment := AcctDerRule_8(
9946            p_application_id           => p_application_id
9947          , p_ae_header_id             => l_ae_header_id 
9948 , p_source_4 => p_source_4
9949 , p_source_5 => p_source_5
9950 , p_source_6 => p_source_6
9951          , x_transaction_coa_id       => l_adr_transaction_coa_id
9952          , x_accounting_coa_id        => l_adr_accounting_coa_id
9953          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
9954          , x_flex_value_set_id        => l_adr_flex_value_set_id
9955          , x_value_type_code          => l_adr_value_type_code
9956          , x_value_combination_id     => l_adr_value_combination_id
9957          , x_value_segment_code       => l_adr_value_segment_code
9961 
9958          , p_side                     => 'NA'
9959          , p_override_seg_flag        => 'Y'
9960    );
9962    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
9963 
9964       xla_ae_lines_pkg.set_segment(
9965           p_to_segment_code         => 'GL_ACCOUNT'
9966         , p_segment_value           => l_segment
9967         , p_from_segment_code       => l_adr_value_segment_code
9968         , p_from_combination_id     => l_adr_value_combination_id
9969         , p_value_type_code         => l_adr_value_type_code
9970         , p_transaction_coa_id      => l_adr_transaction_coa_id
9971         , p_accounting_coa_id       => l_adr_accounting_coa_id
9972         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
9973         , p_flex_value_set_id       => l_adr_flex_value_set_id
9974         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
9975         , p_adr_type_code           => 'S'
9976         , p_component_type          => l_component_type
9977         , p_component_code          => l_component_code
9978         , p_component_type_code     => l_component_type_code
9979         , p_component_appl_id       => l_component_appl_id
9980         , p_amb_context_code        => l_amb_context_code
9981         , p_entity_code             => 'AP_INVOICES'
9982         , p_event_class_code        => 'CREDIT MEMOS'
9983         , p_side                    => 'NA'
9984         );
9985 
9986   END IF;
9987 
9988    --
9989    --
9990    END IF;
9991 
9992        --
9993        -- Update the line information that should be overwritten
9994        --
9995        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9996                                          p_header_num   => 1);
9997        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9998 
9999        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10000 
10001        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10002           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10003        END IF;
10004 
10005       --
10006       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10007       --
10008       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10009           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10010       ELSE
10011           ---------------------------------------------------------------------------------------------------
10012           -- 4262811a Switch Sign
10013           ---------------------------------------------------------------------------------------------------
10014           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10015           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10016                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10017           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10018                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10019           -- 5132302
10020           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10021                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10022 
10023       END IF;
10024 
10025       -- 4955764
10026       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10027       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10028 
10029 
10030       XLA_AE_LINES_PKG.ValidateCurrentLine;
10031       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10032 
10033       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10034                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10035                ,p_balance_type_code => l_balance_type_code);
10036 
10037    END IF;
10038 
10039    -----------------------------------------------------------------------------------------
10040    -- 4262811 Multiperiod Accounting
10041    -----------------------------------------------------------------------------------------
10042      -- No MPA option is assigned.
10043 
10044 
10045 END IF;
10046 END IF;
10047 --
10048 
10049 --
10050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10051    trace
10052       (p_msg      => 'END of AcctLineType_26'
10053       ,p_level    => C_LEVEL_PROCEDURE
10054       ,p_module   => l_log_module);
10055 END IF;
10056 --
10057 EXCEPTION
10058   WHEN xla_exceptions_pkg.application_exception THEN
10059       RAISE;
10060   WHEN OTHERS THEN
10061        xla_exceptions_pkg.raise_message
10062            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_26');
10063 END AcctLineType_26;
10064 --
10065 
10066 ---------------------------------------
10067 --
10068 -- PRIVATE FUNCTION
10069 --         AcctLineType_27
10070 --
10071 ---------------------------------------
10072 PROCEDURE AcctLineType_27 (
10073   p_application_id        IN NUMBER
10074  ,p_event_id              IN NUMBER
10075  ,p_calculate_acctd_flag  IN VARCHAR2
10076  ,p_calculate_g_l_flag    IN VARCHAR2
10077  ,p_actual_flag           IN OUT VARCHAR2
10081 --Invoice Distribution Description
10078  ,p_balance_type_code     OUT VARCHAR2
10079  ,p_gain_or_loss_ref      OUT VARCHAR2
10080  
10082  , p_source_1            IN VARCHAR2
10083 --Invoice Distribution Account
10084  , p_source_2            IN NUMBER
10085 --Payment Status Flag of the Invoice
10086  , p_source_7            IN VARCHAR2
10087 --Invoice Distribution Type
10088  , p_source_8            IN VARCHAR2
10089  , p_source_8_meaning    IN VARCHAR2
10090 --Federal Prior Year Flag
10091  , p_source_9            IN VARCHAR2
10092 --Invoice Distribution Encumbrance Amount
10093  , p_source_10            IN NUMBER
10094 --Accrue on Receipt Option
10095  , p_source_11            IN VARCHAR2
10096  , p_source_11_meaning    IN VARCHAR2
10097 --Invoice Type
10098  , p_source_13            IN VARCHAR2
10099  , p_source_13_meaning    IN VARCHAR2
10100 --Accounting Reversal Indicator
10101  , p_source_15            IN VARCHAR2
10102 --Distribution Link Type
10103  , p_source_17            IN VARCHAR2
10104 --Allocation to Main Distribution Identifier
10105  , p_source_19            IN NUMBER
10106 --Invoice Identifier
10107  , p_source_20            IN NUMBER
10108 --Business Flow Accounts Payable Application Identifier
10109  , p_source_21            IN NUMBER
10110 --Business Flow Invoice Distribution Type
10111  , p_source_22            IN VARCHAR2
10112 --Business Flow Invoice Entity Code
10113  , p_source_23            IN VARCHAR2
10114 --Business Flow Invoice Distribution Identifier
10115  , p_source_24            IN NUMBER
10116 --Business Flow Invoice Identifier
10117  , p_source_25            IN NUMBER
10118 --Invoice Distribution Identifier
10119  , p_source_26            IN NUMBER
10120 --Payables Encumbrance Upgrade Credit Account
10121  , p_source_27            IN NUMBER
10122 --Payables Encumbrance Upgrade Credit Amount
10123  , p_source_28            IN NUMBER
10124 --Invoice Currency Code
10125  , p_source_29            IN VARCHAR2
10126 --Payables Encumbrance Upgrade Credit Base Amount
10127  , p_source_30            IN NUMBER
10128 --Payables Encumbrance Upgrade Debit Account
10129  , p_source_31            IN NUMBER
10130 --Payables Encumbrance Upgrade Debit Amount
10131  , p_source_32            IN NUMBER
10132 --Payables Encumbrance Upgrade Debit Base Amount
10133  , p_source_33            IN NUMBER
10134 --Payables Encumbrance Upgrade Option
10135  , p_source_34            IN VARCHAR2
10136 --Invoice Exchange Date
10137  , p_source_36            IN DATE
10138 --Invoice Exchange Rate
10139  , p_source_37            IN NUMBER
10140 --Invoice Exchange Rate Type
10141  , p_source_38            IN VARCHAR2
10142 --Deferred Accounting End Date
10143  , p_source_39            IN DATE
10144 --Deferred Accounting Option
10145  , p_source_40            IN VARCHAR2
10146 --Deferred Accounting Start Date
10147  , p_source_41            IN DATE
10148 --Override Accounted Amount Indicator
10149  , p_source_42            IN VARCHAR2
10150  , p_source_42_meaning    IN VARCHAR2
10151 --Invoice Supplier Identifier
10152  , p_source_43            IN NUMBER
10153 --Invoice Supplier Site Identifier
10154  , p_source_44            IN NUMBER
10155 --Third Party Type
10156  , p_source_45            IN VARCHAR2
10157 --Parent Reversal Identifier
10158  , p_source_46            IN NUMBER
10159 --Invoice Distribution Statistical Amount
10160  , p_source_47            IN NUMBER
10161 --Invoice Distribution Tax Line Identifier
10162  , p_source_48            IN NUMBER
10163 --Invoice Distribution Tax Distribution Identifier from Tax
10164  , p_source_49            IN NUMBER
10165 --Invoice Distribution Summary Tax Line Identifier
10166  , p_source_50            IN NUMBER
10167 --Payables Upgrade Credit Encumbrance Type Identifier
10168  , p_source_51            IN NUMBER
10169 --Payables Upgrade Debit Encumbrance Type Identifier
10170  , p_source_52            IN NUMBER
10171 --Invoice Distribution Amount
10172  , p_source_55            IN NUMBER
10173 --Invoice Distribution Ledger Amount
10174  , p_source_56            IN NUMBER
10175 )
10176 IS
10177 
10178 l_component_type              VARCHAR2(80);
10179 l_component_code              VARCHAR2(30);
10180 l_component_type_code         VARCHAR2(1);
10181 l_component_appl_id           INTEGER;
10182 l_amb_context_code            VARCHAR2(30);
10183 l_entity_code                 VARCHAR2(30);
10184 l_event_class_code            VARCHAR2(30);
10185 l_ae_header_id                NUMBER;
10186 l_event_type_code             VARCHAR2(30);
10187 l_line_definition_code        VARCHAR2(30);
10188 l_line_definition_owner_code  VARCHAR2(1);
10189 --
10190 -- adr variables
10191 l_segment                     VARCHAR2(30);
10192 l_ccid                        NUMBER;
10193 l_adr_transaction_coa_id      NUMBER;
10194 l_adr_accounting_coa_id       NUMBER;
10195 l_adr_flexfield_segment_code  VARCHAR2(30);
10196 l_adr_flex_value_set_id       NUMBER;
10197 l_adr_value_type_code         VARCHAR2(30);
10198 l_adr_value_combination_id    NUMBER;
10199 l_adr_value_segment_code      VARCHAR2(30);
10200 
10201 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10202 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10203 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10204 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10205 
10206 -- 4262811 Variables ------------------------------------------------------------------------------------------
10210 l_accrual_line_num            NUMBER;
10207 l_entered_amt_idx             NUMBER;
10208 l_accted_amt_idx              NUMBER;
10209 l_acc_rev_flag                VARCHAR2(1);
10211 l_tmp_amt                     NUMBER;
10212 l_acc_rev_natural_side_code   VARCHAR2(1);
10213 
10214 l_num_entries                 NUMBER;
10215 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10216 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10217 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10218 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10219 l_recog_line_1                NUMBER;
10220 l_recog_line_2                NUMBER;
10221 
10222 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10223 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10224 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10225 
10226 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10227 
10228 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10229 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10230 
10231 ---------------------------------------------------------------------------------------------------------------
10232 
10233 
10234 --
10235 -- bulk performance
10236 --
10237 l_balance_type_code           VARCHAR2(1);
10238 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10239 l_log_module                  VARCHAR2(240);
10240 
10241 --
10242 -- Upgrade strategy
10243 --
10244 l_actual_upg_option           VARCHAR2(1);
10245 l_enc_upg_option           VARCHAR2(1);
10246 
10247 --
10248 BEGIN
10249 --
10250 IF g_log_enabled THEN
10251       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
10252 END IF;
10253 --
10254 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10255 
10256       trace
10257          (p_msg      => 'BEGIN of AcctLineType_27'
10258          ,p_level    => C_LEVEL_PROCEDURE
10259          ,p_module   => l_log_module);
10260 
10261 END IF;
10262 --
10263 l_component_type             := 'AMB_JLT';
10264 l_component_code             := 'FV_AP_CREDIT_MEMOS_EXP_DR';
10265 l_component_type_code        := 'S';
10266 l_component_appl_id          :=  200;
10267 l_amb_context_code           := 'DEFAULT';
10268 l_entity_code                := 'AP_INVOICES';
10269 l_event_class_code           := 'CREDIT MEMOS';
10270 l_event_type_code            := 'CREDIT MEMOS_ALL';
10271 l_line_definition_owner_code := 'S';
10272 l_line_definition_code       := 'FV_AP_ACCRUAL_CREDITMEMOS_ALL';
10273 --
10274 l_balance_type_code          := 'A';
10275 l_segment                     := NULL;
10276 l_ccid                        := NULL;
10277 l_adr_transaction_coa_id      := NULL;
10278 l_adr_accounting_coa_id       := NULL;
10279 l_adr_flexfield_segment_code  := NULL;
10280 l_adr_flex_value_set_id       := NULL;
10281 l_adr_value_type_code         := NULL;
10282 l_adr_value_combination_id    := NULL;
10283 l_adr_value_segment_code      := NULL;
10284 
10285 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10286 l_bflow_class_code           := '';    -- 4219869 Business Flow
10287 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10288 l_budgetary_control_flag     := 'Y';
10289 
10290 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10291 l_bflow_applied_to_amt       := NULL; -- 5132302
10292 l_entered_amt_idx            := NULL;          -- 4262811
10293 l_accted_amt_idx             := NULL;          -- 4262811
10294 l_acc_rev_flag               := NULL;          -- 4262811
10295 l_accrual_line_num           := NULL;          -- 4262811
10296 l_tmp_amt                    := NULL;          -- 4262811
10297 --
10298  
10299 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10300     l_balance_type_code <> 'B' THEN
10301 IF NVL(p_source_13,'
10302 ') =  'CREDIT' AND 
10303 (NVL(p_source_8,'
10304 ') =  'ITEM' OR 
10305 NVL(p_source_8,'
10306 ') =  'MISCELLANEOUS' OR 
10307 NVL(p_source_8,'
10308 ') =  'FREIGHT' OR 
10309 NVL(p_source_8,'
10310 ') =  'IPV' OR 
10311 NVL(p_source_8,'
10312 ') =  'ACCRUAL') AND 
10313 (NVL(p_source_9,'
10314 ') =  'N' OR 
10315 (NVL(p_source_9,'
10316 ') =  'Y' AND 
10317 NVL(p_source_8,'
10318 ') <>  'IPV')
10319 ) THEN 
10320 
10321    --
10322    XLA_AE_LINES_PKG.SetNewLine;
10323 
10324    p_balance_type_code          := l_balance_type_code;
10325    -- set the flag so later we will know whether the gain loss line needs to be created
10326    
10327    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10328      p_actual_flag :='A';
10329    END IF;
10330 
10331    --
10332    -- bulk performance
10333    --
10334    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10335                                       p_header_num   => 0); -- 4262811
10336    --
10337    -- set accounting line options
10338    --
10339    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10340            p_natural_side_code          => 'C'
10341          , p_gain_or_loss_flag          => 'N'
10342          , p_gl_transfer_mode_code      => 'S'
10343          , p_acct_entry_type_code       => 'A'
10344          , p_switch_side_flag           => 'N'
10348    l_acc_rev_natural_side_code := 'D';  -- 4262811
10345          , p_merge_duplicate_code       => 'N'
10346          );
10347    --
10349    -- 
10350    --
10351    -- set accounting line type info
10352    --
10353    xla_ae_lines_pkg.SetAcctLineType
10354       (p_component_type             => l_component_type
10355       ,p_event_type_code            => l_event_type_code
10356       ,p_line_definition_owner_code => l_line_definition_owner_code
10357       ,p_line_definition_code       => l_line_definition_code
10358       ,p_accounting_line_code       => l_component_code
10359       ,p_accounting_line_type_code  => l_component_type_code
10360       ,p_accounting_line_appl_id    => l_component_appl_id
10361       ,p_amb_context_code           => l_amb_context_code
10362       ,p_entity_code                => l_entity_code
10363       ,p_event_class_code           => l_event_class_code);
10364    --
10365    -- set accounting class
10366    --
10367    xla_ae_lines_pkg.SetAcctClass(
10368            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
10369          , p_ae_header_id           => l_ae_header_id
10370          );
10371 
10372    --
10373    -- set rounding class
10374    --
10375    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10376                       'ACCOUNTSPAYABLE';
10377 
10378    --
10379    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10380    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10381    --
10382    -- bulk performance
10383    --
10384    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10385 
10386    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10387       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10388 
10389    -- 4955764
10390    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10391       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10392 
10393    -- 4458381 Public Sector Enh
10394    
10395    --
10396    -- set accounting attributes for the line type
10397    --
10398    l_entered_amt_idx := 23;
10399    l_accted_amt_idx  := 28;
10400    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10401    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10402    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
10403    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
10404    l_rec_acct_attrs.array_num_value(2)  := 
10405 xla_ae_sources_pkg.GetSystemSourceNum(
10406    p_source_code           => 'XLA_EVENT_APPL_ID'
10407  , p_source_type_code      => 'Y'
10408  , p_source_application_id =>  602
10409 );
10410    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
10411    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
10412    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
10413    l_rec_acct_attrs.array_char_value(4)  := 
10414 xla_ae_sources_pkg.GetSystemSourceChar(
10415    p_source_code           => 'XLA_ENTITY_CODE'
10416  , p_source_type_code      => 'Y'
10417  , p_source_application_id =>  602
10418 );
10419    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
10420    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
10421    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
10422    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
10423    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
10424    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
10425    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10426    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
10427    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
10428    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
10429    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
10430    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
10431    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10432    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
10433    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
10434    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
10435    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
10436    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
10437    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
10438    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
10439    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
10440    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
10441    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
10442    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
10443    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
10444    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
10445    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
10446    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
10447    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
10448    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
10449    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
10453    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
10450    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
10451    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
10452    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
10454    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
10455    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
10456    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
10457    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
10458    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
10459    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
10460    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
10461    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
10462    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
10463    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
10464    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
10465    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
10466    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
10467    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
10468    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
10469    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
10470    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
10471    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
10472    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
10473    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
10474    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
10475    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
10476    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
10477    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
10478    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
10479    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
10480    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
10481    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
10482    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
10483    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
10484    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
10485    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
10486    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
10487    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
10488    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
10489    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
10490    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
10491    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
10492    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
10493    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
10494    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
10495    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
10496    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
10497 
10498    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10499    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10500 
10501    ---------------------------------------------------------------------------------------------------------------
10502    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10503    ---------------------------------------------------------------------------------------------------------------
10504    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10505 
10506    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10507    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10508 
10509    IF xla_accounting_cache_pkg.GetValueChar
10510          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10511          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10512    AND l_bflow_method_code = 'PRIOR_ENTRY'
10513 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10514    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10515          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10516        )
10517    THEN
10518          xla_ae_lines_pkg.BflowUpgEntry
10519            (p_business_method_code    => l_bflow_method_code
10520            ,p_business_class_code     => l_bflow_class_code
10521            ,p_balance_type            => l_balance_type_code);
10522    ELSE
10523       NULL;
10524 -- No business flow processing for business flow method of NONE.
10525    END IF;
10526 
10527    --
10528    -- call analytical criteria
10529    --
10530    
10531    --
10532    -- call description
10533    --
10534    
10535 xla_ae_lines_pkg.SetLineDescription(
10536    p_ae_header_id => l_ae_header_id
10537   ,p_description  => Description_2 (
10538      p_application_id         => p_application_id
10539    , p_ae_header_id           => l_ae_header_id 
10540 , p_source_1 => p_source_1
10541    )
10542 );
10543 
10544 
10545    --
10546    -- call ADRs
10547    -- Bug 4922099
10548    --
10549    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10550         (NVL(l_actual_upg_option, 'N') = 'O') OR
10554    NULL;
10551         (NVL(l_enc_upg_option, 'N') = 'O')
10552       )
10553    THEN
10555    --
10556    --
10557    
10558   l_ccid := AcctDerRule_3(
10559            p_application_id           => p_application_id
10560          , p_ae_header_id             => l_ae_header_id 
10561 , p_source_2 => p_source_2
10562          , x_transaction_coa_id       => l_adr_transaction_coa_id
10563          , x_accounting_coa_id        => l_adr_accounting_coa_id
10564          , x_value_type_code          => l_adr_value_type_code
10565          , p_side                     => 'NA'
10566    );
10567 
10568    xla_ae_lines_pkg.set_ccid(
10569     p_code_combination_id          => l_ccid
10570   , p_value_type_code              => l_adr_value_type_code
10571   , p_transaction_coa_id           => l_adr_transaction_coa_id
10572   , p_accounting_coa_id            => l_adr_accounting_coa_id
10573   , p_adr_code                     => 'AP_INVOICE_DIST'
10574   , p_adr_type_code                => 'S'
10575   , p_component_type               => l_component_type
10576   , p_component_code               => l_component_code
10577   , p_component_type_code          => l_component_type_code
10578   , p_component_appl_id            => l_component_appl_id
10579   , p_amb_context_code             => l_amb_context_code
10580   , p_side                         => 'NA'
10581   );
10582 
10583 
10584    l_segment := AcctDerRule_12(
10585            p_application_id           => p_application_id
10586          , p_ae_header_id             => l_ae_header_id 
10587 , p_source_7 => p_source_7
10588 , p_source_8 => p_source_8
10589 , p_source_8_meaning => p_source_8_meaning
10590 , p_source_9 => p_source_9
10591 , p_source_10 => p_source_10
10592 , p_source_11 => p_source_11
10593 , p_source_11_meaning => p_source_11_meaning
10594          , x_transaction_coa_id       => l_adr_transaction_coa_id
10595          , x_accounting_coa_id        => l_adr_accounting_coa_id
10596          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10597          , x_flex_value_set_id        => l_adr_flex_value_set_id
10598          , x_value_type_code          => l_adr_value_type_code
10599          , x_value_combination_id     => l_adr_value_combination_id
10600          , x_value_segment_code       => l_adr_value_segment_code
10601          , p_side                     => 'NA'
10602          , p_override_seg_flag        => 'Y'
10603    );
10604 
10605    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10606 
10607       xla_ae_lines_pkg.set_segment(
10608           p_to_segment_code         => 'GL_ACCOUNT'
10609         , p_segment_value           => l_segment
10610         , p_from_segment_code       => l_adr_value_segment_code
10611         , p_from_combination_id     => l_adr_value_combination_id
10612         , p_value_type_code         => l_adr_value_type_code
10613         , p_transaction_coa_id      => l_adr_transaction_coa_id
10614         , p_accounting_coa_id       => l_adr_accounting_coa_id
10615         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10616         , p_flex_value_set_id       => l_adr_flex_value_set_id
10617         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
10618         , p_adr_type_code           => 'S'
10619         , p_component_type          => l_component_type
10620         , p_component_code          => l_component_code
10621         , p_component_type_code     => l_component_type_code
10622         , p_component_appl_id       => l_component_appl_id
10623         , p_amb_context_code        => l_amb_context_code
10624         , p_entity_code             => 'AP_INVOICES'
10625         , p_event_class_code        => 'CREDIT MEMOS'
10626         , p_side                    => 'NA'
10627         );
10628 
10629   END IF;
10630 
10631    --
10632    --
10633    END IF;
10634    --
10635    -- Bug 4922099
10636    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10637           (NVL(l_enc_upg_option, 'N') = 'O')
10638         ) AND
10639         (l_bflow_method_code = 'PRIOR_ENTRY')
10640       )
10641    THEN
10642       IF
10643       --
10644       1 = 2
10645       --
10646       THEN
10647       xla_accounting_err_pkg.build_message
10648                                     (p_appli_s_name            => 'XLA'
10649                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10650                                     ,p_token_1                 => 'LINE_NUMBER'
10651                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10652                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10653                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10654                                                                              l_component_type
10655                                                                             ,l_component_code
10656                                                                             ,l_component_type_code
10657                                                                             ,l_component_appl_id
10658                                                                             ,l_amb_context_code
10659                                                                             ,l_entity_code
10660                                                                             ,l_event_class_code
10661                                                                            )
10665                                                                           ,p_lookup_code    => l_component_type_code
10662                                     ,p_token_3                 => 'OWNER'
10663                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10664                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10666                                                                          )
10667                                     ,p_token_4                 => 'PRODUCT_NAME'
10668                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10669                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10670                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10671                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10672                                     ,p_ae_header_id            =>  NULL
10673                                        );
10674 
10675         IF (C_LEVEL_ERROR>= g_log_level) THEN
10676                  trace
10677                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10678                       ,p_level    => C_LEVEL_ERROR
10679                       ,p_module   => l_log_module);
10680         END IF;
10681       END IF;
10682    END IF;
10683    --
10684    --
10685    ------------------------------------------------------------------------------------------------
10686    -- 4219869 Business Flow
10687    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10688    -- Prior Entry.  Currently, the following code is always generated.
10689    ------------------------------------------------------------------------------------------------
10690    XLA_AE_LINES_PKG.ValidateCurrentLine;
10691 
10692    ------------------------------------------------------------------------------------
10693    -- 4219869 Business Flow
10694    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10695    ------------------------------------------------------------------------------------
10696    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10697 
10698    ----------------------------------------------------------------------------------
10699    -- 4219869 Business Flow
10700    -- Update journal entry status -- Need to generate this within IF <condition>
10701    ----------------------------------------------------------------------------------
10702    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10703          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10704          ,p_balance_type_code => l_balance_type_code
10705          );
10706 
10707    -------------------------------------------------------------------------------------------
10708    -- 4262811 - Generate the Accrual Reversal lines
10709    -------------------------------------------------------------------------------------------
10710    BEGIN
10711       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10712                               (g_array_event(p_event_id).array_value_num('header_index'));
10713       IF l_acc_rev_flag IS NULL THEN
10714          l_acc_rev_flag := 'N';
10715       END IF;
10716    EXCEPTION
10717       WHEN OTHERS THEN
10718          l_acc_rev_flag := 'N';
10719    END;
10720    --
10721    IF (l_acc_rev_flag = 'Y') THEN
10722 
10723        -- 4645092  ------------------------------------------------------------------------------
10724        -- To allow MPA report to determine if it should generate report process
10725        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10726        ------------------------------------------------------------------------------------------
10727 
10728        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10729        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10730    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10731    -- call ADRs
10732    -- Bug 4922099
10733    --
10734    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10735         (NVL(l_actual_upg_option, 'N') = 'O') OR
10736         (NVL(l_enc_upg_option, 'N') = 'O')
10737       )
10738    THEN
10739    NULL;
10740    --
10741    --
10742    
10743   l_ccid := AcctDerRule_3(
10744            p_application_id           => p_application_id
10745          , p_ae_header_id             => l_ae_header_id 
10746 , p_source_2 => p_source_2
10747          , x_transaction_coa_id       => l_adr_transaction_coa_id
10748          , x_accounting_coa_id        => l_adr_accounting_coa_id
10749          , x_value_type_code          => l_adr_value_type_code
10750          , p_side                     => 'NA'
10751    );
10752 
10753    xla_ae_lines_pkg.set_ccid(
10754     p_code_combination_id          => l_ccid
10755   , p_value_type_code              => l_adr_value_type_code
10756   , p_transaction_coa_id           => l_adr_transaction_coa_id
10757   , p_accounting_coa_id            => l_adr_accounting_coa_id
10758   , p_adr_code                     => 'AP_INVOICE_DIST'
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
10768 
10765   , p_side                         => 'NA'
10766   );
10767 
10769    l_segment := AcctDerRule_12(
10770            p_application_id           => p_application_id
10771          , p_ae_header_id             => l_ae_header_id 
10772 , p_source_7 => p_source_7
10773 , p_source_8 => p_source_8
10774 , p_source_8_meaning => p_source_8_meaning
10775 , p_source_9 => p_source_9
10776 , p_source_10 => p_source_10
10777 , p_source_11 => p_source_11
10778 , p_source_11_meaning => p_source_11_meaning
10779          , x_transaction_coa_id       => l_adr_transaction_coa_id
10780          , x_accounting_coa_id        => l_adr_accounting_coa_id
10781          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10782          , x_flex_value_set_id        => l_adr_flex_value_set_id
10783          , x_value_type_code          => l_adr_value_type_code
10784          , x_value_combination_id     => l_adr_value_combination_id
10785          , x_value_segment_code       => l_adr_value_segment_code
10786          , p_side                     => 'NA'
10787          , p_override_seg_flag        => 'Y'
10788    );
10789 
10790    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10791 
10792       xla_ae_lines_pkg.set_segment(
10793           p_to_segment_code         => 'GL_ACCOUNT'
10794         , p_segment_value           => l_segment
10795         , p_from_segment_code       => l_adr_value_segment_code
10796         , p_from_combination_id     => l_adr_value_combination_id
10797         , p_value_type_code         => l_adr_value_type_code
10798         , p_transaction_coa_id      => l_adr_transaction_coa_id
10799         , p_accounting_coa_id       => l_adr_accounting_coa_id
10800         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10801         , p_flex_value_set_id       => l_adr_flex_value_set_id
10802         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
10803         , p_adr_type_code           => 'S'
10804         , p_component_type          => l_component_type
10805         , p_component_code          => l_component_code
10806         , p_component_type_code     => l_component_type_code
10807         , p_component_appl_id       => l_component_appl_id
10808         , p_amb_context_code        => l_amb_context_code
10809         , p_entity_code             => 'AP_INVOICES'
10810         , p_event_class_code        => 'CREDIT MEMOS'
10811         , p_side                    => 'NA'
10812         );
10813 
10814   END IF;
10815 
10816    --
10817    --
10818    END IF;
10819 
10820        --
10821        -- Update the line information that should be overwritten
10822        --
10823        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10824                                          p_header_num   => 1);
10825        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10826 
10827        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10828 
10829        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10830           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10831        END IF;
10832 
10833       --
10834       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10835       --
10836       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10837           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10838       ELSE
10839           ---------------------------------------------------------------------------------------------------
10840           -- 4262811a Switch Sign
10841           ---------------------------------------------------------------------------------------------------
10842           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10843           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10844                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10845           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10846                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10847           -- 5132302
10848           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10849                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10850 
10851       END IF;
10852 
10853       -- 4955764
10854       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10855       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10856 
10857 
10858       XLA_AE_LINES_PKG.ValidateCurrentLine;
10859       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10860 
10861       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10862                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10863                ,p_balance_type_code => l_balance_type_code);
10864 
10865    END IF;
10866 
10867    -----------------------------------------------------------------------------------------
10868    -- 4262811 Multiperiod Accounting
10869    -----------------------------------------------------------------------------------------
10870      -- No MPA option is assigned.
10871 
10872 
10873 END IF;
10874 END IF;
10875 --
10876 
10877 --
10878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10882       ,p_module   => l_log_module);
10879    trace
10880       (p_msg      => 'END of AcctLineType_27'
10881       ,p_level    => C_LEVEL_PROCEDURE
10883 END IF;
10884 --
10885 EXCEPTION
10886   WHEN xla_exceptions_pkg.application_exception THEN
10887       RAISE;
10888   WHEN OTHERS THEN
10889        xla_exceptions_pkg.raise_message
10890            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_27');
10891 END AcctLineType_27;
10892 --
10893 
10894 ---------------------------------------
10895 --
10896 -- PRIVATE FUNCTION
10897 --         AcctLineType_28
10898 --
10899 ---------------------------------------
10900 PROCEDURE AcctLineType_28 (
10901   p_application_id        IN NUMBER
10902  ,p_event_id              IN NUMBER
10903  ,p_calculate_acctd_flag  IN VARCHAR2
10904  ,p_calculate_g_l_flag    IN VARCHAR2
10905  ,p_actual_flag           IN OUT VARCHAR2
10906  ,p_balance_type_code     OUT VARCHAR2
10907  ,p_gain_or_loss_ref      OUT VARCHAR2
10908  
10909 --Invoice Distribution Description
10910  , p_source_1            IN VARCHAR2
10911 --Invoice Distribution Account
10912  , p_source_2            IN NUMBER
10913 --Federal Fund Category
10914  , p_source_4            IN VARCHAR2
10915 --Federal Fund Expired Status
10916  , p_source_5            IN VARCHAR2
10917 --Federal Fund Category Description
10918  , p_source_6            IN VARCHAR2
10919 --Invoice Distribution Type
10920  , p_source_8            IN VARCHAR2
10921  , p_source_8_meaning    IN VARCHAR2
10922 --Invoice Type
10923  , p_source_13            IN VARCHAR2
10924  , p_source_13_meaning    IN VARCHAR2
10925 --Accounting Reversal Indicator
10926  , p_source_15            IN VARCHAR2
10927 --Distribution Link Type
10928  , p_source_17            IN VARCHAR2
10929 --Allocation to Main Distribution Identifier
10930  , p_source_19            IN NUMBER
10931 --Invoice Identifier
10932  , p_source_20            IN NUMBER
10933 --Business Flow Accounts Payable Application Identifier
10934  , p_source_21            IN NUMBER
10935 --Business Flow Invoice Distribution Type
10936  , p_source_22            IN VARCHAR2
10937 --Business Flow Invoice Entity Code
10938  , p_source_23            IN VARCHAR2
10939 --Business Flow Invoice Distribution Identifier
10940  , p_source_24            IN NUMBER
10941 --Business Flow Invoice Identifier
10942  , p_source_25            IN NUMBER
10943 --Invoice Distribution Identifier
10944  , p_source_26            IN NUMBER
10945 --Payables Encumbrance Upgrade Credit Account
10946  , p_source_27            IN NUMBER
10947 --Payables Encumbrance Upgrade Credit Amount
10948  , p_source_28            IN NUMBER
10949 --Invoice Currency Code
10950  , p_source_29            IN VARCHAR2
10951 --Payables Encumbrance Upgrade Credit Base Amount
10952  , p_source_30            IN NUMBER
10953 --Payables Encumbrance Upgrade Debit Account
10954  , p_source_31            IN NUMBER
10955 --Payables Encumbrance Upgrade Debit Amount
10956  , p_source_32            IN NUMBER
10957 --Payables Encumbrance Upgrade Debit Base Amount
10958  , p_source_33            IN NUMBER
10959 --Payables Encumbrance Upgrade Option
10960  , p_source_34            IN VARCHAR2
10961 --Invoice Exchange Date
10962  , p_source_36            IN DATE
10963 --Invoice Exchange Rate
10964  , p_source_37            IN NUMBER
10965 --Invoice Exchange Rate Type
10966  , p_source_38            IN VARCHAR2
10967 --Deferred Accounting End Date
10968  , p_source_39            IN DATE
10969 --Deferred Accounting Option
10970  , p_source_40            IN VARCHAR2
10971 --Deferred Accounting Start Date
10972  , p_source_41            IN DATE
10973 --Override Accounted Amount Indicator
10974  , p_source_42            IN VARCHAR2
10975  , p_source_42_meaning    IN VARCHAR2
10976 --Invoice Supplier Identifier
10977  , p_source_43            IN NUMBER
10978 --Invoice Supplier Site Identifier
10979  , p_source_44            IN NUMBER
10980 --Third Party Type
10981  , p_source_45            IN VARCHAR2
10982 --Parent Reversal Identifier
10983  , p_source_46            IN NUMBER
10984 --Invoice Distribution Tax Line Identifier
10985  , p_source_48            IN NUMBER
10986 --Invoice Distribution Tax Distribution Identifier from Tax
10987  , p_source_49            IN NUMBER
10988 --Invoice Distribution Summary Tax Line Identifier
10989  , p_source_50            IN NUMBER
10990 --Payables Upgrade Credit Encumbrance Type Identifier
10991  , p_source_51            IN NUMBER
10992 --Payables Upgrade Debit Encumbrance Type Identifier
10993  , p_source_52            IN NUMBER
10994 --Invoice Distribution Amount
10995  , p_source_55            IN NUMBER
10996 --Invoice Distribution Ledger Amount Before Rounding
10997  , p_source_58            IN NUMBER
10998 )
10999 IS
11000 
11001 l_component_type              VARCHAR2(80);
11002 l_component_code              VARCHAR2(30);
11003 l_component_type_code         VARCHAR2(1);
11004 l_component_appl_id           INTEGER;
11005 l_amb_context_code            VARCHAR2(30);
11006 l_entity_code                 VARCHAR2(30);
11007 l_event_class_code            VARCHAR2(30);
11008 l_ae_header_id                NUMBER;
11009 l_event_type_code             VARCHAR2(30);
11010 l_line_definition_code        VARCHAR2(30);
11011 l_line_definition_owner_code  VARCHAR2(1);
11012 --
11013 -- adr variables
11014 l_segment                     VARCHAR2(30);
11018 l_adr_flexfield_segment_code  VARCHAR2(30);
11015 l_ccid                        NUMBER;
11016 l_adr_transaction_coa_id      NUMBER;
11017 l_adr_accounting_coa_id       NUMBER;
11019 l_adr_flex_value_set_id       NUMBER;
11020 l_adr_value_type_code         VARCHAR2(30);
11021 l_adr_value_combination_id    NUMBER;
11022 l_adr_value_segment_code      VARCHAR2(30);
11023 
11024 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11025 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11026 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11027 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11028 
11029 -- 4262811 Variables ------------------------------------------------------------------------------------------
11030 l_entered_amt_idx             NUMBER;
11031 l_accted_amt_idx              NUMBER;
11032 l_acc_rev_flag                VARCHAR2(1);
11033 l_accrual_line_num            NUMBER;
11034 l_tmp_amt                     NUMBER;
11035 l_acc_rev_natural_side_code   VARCHAR2(1);
11036 
11037 l_num_entries                 NUMBER;
11038 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11039 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11040 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11041 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11042 l_recog_line_1                NUMBER;
11043 l_recog_line_2                NUMBER;
11044 
11045 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11046 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11047 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11048 
11049 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11050 
11051 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11052 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11053 
11054 ---------------------------------------------------------------------------------------------------------------
11055 
11056 
11057 --
11058 -- bulk performance
11059 --
11060 l_balance_type_code           VARCHAR2(1);
11061 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11062 l_log_module                  VARCHAR2(240);
11063 
11064 --
11065 -- Upgrade strategy
11066 --
11067 l_actual_upg_option           VARCHAR2(1);
11068 l_enc_upg_option           VARCHAR2(1);
11069 
11070 --
11071 BEGIN
11072 --
11073 IF g_log_enabled THEN
11074       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
11075 END IF;
11076 --
11077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11078 
11079       trace
11080          (p_msg      => 'BEGIN of AcctLineType_28'
11081          ,p_level    => C_LEVEL_PROCEDURE
11082          ,p_module   => l_log_module);
11083 
11084 END IF;
11085 --
11086 l_component_type             := 'AMB_JLT';
11087 l_component_code             := 'FV_AP_DEBIT_MEMOS_EXP_CR';
11088 l_component_type_code        := 'S';
11089 l_component_appl_id          :=  200;
11090 l_amb_context_code           := 'DEFAULT';
11091 l_entity_code                := 'AP_INVOICES';
11092 l_event_class_code           := 'DEBIT MEMOS';
11093 l_event_type_code            := 'DEBIT MEMOS_ALL';
11094 l_line_definition_owner_code := 'S';
11095 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
11096 --
11097 l_balance_type_code          := 'A';
11098 l_segment                     := NULL;
11099 l_ccid                        := NULL;
11100 l_adr_transaction_coa_id      := NULL;
11101 l_adr_accounting_coa_id       := NULL;
11102 l_adr_flexfield_segment_code  := NULL;
11103 l_adr_flex_value_set_id       := NULL;
11104 l_adr_value_type_code         := NULL;
11105 l_adr_value_combination_id    := NULL;
11106 l_adr_value_segment_code      := NULL;
11107 
11108 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11109 l_bflow_class_code           := '';    -- 4219869 Business Flow
11110 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11111 l_budgetary_control_flag     := 'Y';
11112 
11113 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11114 l_bflow_applied_to_amt       := NULL; -- 5132302
11115 l_entered_amt_idx            := NULL;          -- 4262811
11116 l_accted_amt_idx             := NULL;          -- 4262811
11117 l_acc_rev_flag               := NULL;          -- 4262811
11118 l_accrual_line_num           := NULL;          -- 4262811
11119 l_tmp_amt                    := NULL;          -- 4262811
11120 --
11121  
11122 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11123     l_balance_type_code <> 'B' THEN
11124 IF NVL(p_source_13,'
11125 ') =  'DEBIT' AND 
11126 (NVL(p_source_8,'
11127 ') =  'ITEM' OR 
11128 NVL(p_source_8,'
11129 ') =  'MISCELLANEOUS' OR 
11130 NVL(p_source_8,'
11131 ') =  'FREIGHT' OR 
11132 NVL(p_source_8,'
11133 ') =  'IPV' OR 
11134 NVL(p_source_8,'
11135 ') =  'ACCRUAL')
11136  THEN 
11137 
11138    --
11139    XLA_AE_LINES_PKG.SetNewLine;
11140 
11141    p_balance_type_code          := l_balance_type_code;
11142    -- set the flag so later we will know whether the gain loss line needs to be created
11143    
11144    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11148    --
11145      p_actual_flag :='A';
11146    END IF;
11147 
11149    -- bulk performance
11150    --
11151    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11152                                       p_header_num   => 0); -- 4262811
11153    --
11154    -- set accounting line options
11155    --
11156    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11157            p_natural_side_code          => 'D'
11158          , p_gain_or_loss_flag          => 'N'
11159          , p_gl_transfer_mode_code      => 'S'
11160          , p_acct_entry_type_code       => 'A'
11161          , p_switch_side_flag           => 'N'
11162          , p_merge_duplicate_code       => 'N'
11163          );
11164    --
11165    l_acc_rev_natural_side_code := 'C';  -- 4262811
11166    -- 
11167    --
11168    -- set accounting line type info
11169    --
11170    xla_ae_lines_pkg.SetAcctLineType
11171       (p_component_type             => l_component_type
11172       ,p_event_type_code            => l_event_type_code
11173       ,p_line_definition_owner_code => l_line_definition_owner_code
11174       ,p_line_definition_code       => l_line_definition_code
11175       ,p_accounting_line_code       => l_component_code
11176       ,p_accounting_line_type_code  => l_component_type_code
11177       ,p_accounting_line_appl_id    => l_component_appl_id
11178       ,p_amb_context_code           => l_amb_context_code
11179       ,p_entity_code                => l_entity_code
11180       ,p_event_class_code           => l_event_class_code);
11181    --
11182    -- set accounting class
11183    --
11184    xla_ae_lines_pkg.SetAcctClass(
11185            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
11186          , p_ae_header_id           => l_ae_header_id
11187          );
11188 
11189    --
11190    -- set rounding class
11191    --
11192    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11193                       'ACCOUNTSPAYABLE';
11194 
11195    --
11196    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11197    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11198    --
11199    -- bulk performance
11200    --
11201    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11202 
11203    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11204       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11205 
11206    -- 4955764
11207    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11209 
11210    -- 4458381 Public Sector Enh
11211    
11212    --
11213    -- set accounting attributes for the line type
11214    --
11215    l_entered_amt_idx := 23;
11216    l_accted_amt_idx  := 28;
11217    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11218    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11219    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
11220    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
11221    l_rec_acct_attrs.array_num_value(2)  := 
11222 xla_ae_sources_pkg.GetSystemSourceNum(
11223    p_source_code           => 'XLA_EVENT_APPL_ID'
11224  , p_source_type_code      => 'Y'
11225  , p_source_application_id =>  602
11226 );
11227    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
11228    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
11229    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
11230    l_rec_acct_attrs.array_char_value(4)  := 
11231 xla_ae_sources_pkg.GetSystemSourceChar(
11232    p_source_code           => 'XLA_ENTITY_CODE'
11233  , p_source_type_code      => 'Y'
11234  , p_source_application_id =>  602
11235 );
11236    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
11237    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
11238    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
11239    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
11240    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
11241    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
11242    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11243    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
11244    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
11245    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
11246    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
11247    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
11248    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11249    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
11250    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
11251    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
11252    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
11253    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
11254    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
11255    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
11256    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
11260    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
11257    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
11258    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
11259    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
11261    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
11262    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
11263    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
11264    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
11265    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
11266    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
11267    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
11268    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
11269    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
11270    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
11271    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
11272    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
11273    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
11274    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
11275    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
11276    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
11277    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
11278    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
11279    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
11280    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
11281    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
11282    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
11283    l_rec_acct_attrs.array_num_value(28)  := p_source_58;
11284    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
11285    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
11286    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
11287    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
11288    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
11289    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
11290    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
11291    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
11292    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
11293    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
11294    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
11295    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
11296    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
11297    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
11298    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
11299    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
11300    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
11301    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
11302    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
11303    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
11304    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
11305    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
11306    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
11307    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
11308    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
11309    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
11310    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
11311    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
11312 
11313    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11314    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11315 
11316    ---------------------------------------------------------------------------------------------------------------
11317    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11318    ---------------------------------------------------------------------------------------------------------------
11319    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11320 
11321    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11322    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11323 
11324    IF xla_accounting_cache_pkg.GetValueChar
11325          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11326          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11327    AND l_bflow_method_code = 'PRIOR_ENTRY'
11328 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11329    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11330          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11331        )
11332    THEN
11333          xla_ae_lines_pkg.BflowUpgEntry
11334            (p_business_method_code    => l_bflow_method_code
11335            ,p_business_class_code     => l_bflow_class_code
11336            ,p_balance_type            => l_balance_type_code);
11337    ELSE
11338       NULL;
11339 -- No business flow processing for business flow method of NONE.
11340    END IF;
11341 
11342    --
11343    -- call analytical criteria
11344    --
11345    
11346    --
11347    -- call description
11348    --
11349    
11350 xla_ae_lines_pkg.SetLineDescription(
11351    p_ae_header_id => l_ae_header_id
11352   ,p_description  => Description_2 (
11356    )
11353      p_application_id         => p_application_id
11354    , p_ae_header_id           => l_ae_header_id 
11355 , p_source_1 => p_source_1
11357 );
11358 
11359 
11360    --
11361    -- call ADRs
11362    -- Bug 4922099
11363    --
11364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11365         (NVL(l_actual_upg_option, 'N') = 'O') OR
11366         (NVL(l_enc_upg_option, 'N') = 'O')
11367       )
11368    THEN
11369    NULL;
11370    --
11371    --
11372    
11373   l_ccid := AcctDerRule_3(
11374            p_application_id           => p_application_id
11375          , p_ae_header_id             => l_ae_header_id 
11376 , p_source_2 => p_source_2
11377          , x_transaction_coa_id       => l_adr_transaction_coa_id
11378          , x_accounting_coa_id        => l_adr_accounting_coa_id
11379          , x_value_type_code          => l_adr_value_type_code
11380          , p_side                     => 'NA'
11381    );
11382 
11383    xla_ae_lines_pkg.set_ccid(
11384     p_code_combination_id          => l_ccid
11385   , p_value_type_code              => l_adr_value_type_code
11386   , p_transaction_coa_id           => l_adr_transaction_coa_id
11387   , p_accounting_coa_id            => l_adr_accounting_coa_id
11388   , p_adr_code                     => 'AP_INVOICE_DIST'
11389   , p_adr_type_code                => 'S'
11390   , p_component_type               => l_component_type
11391   , p_component_code               => l_component_code
11392   , p_component_type_code          => l_component_type_code
11393   , p_component_appl_id            => l_component_appl_id
11394   , p_amb_context_code             => l_amb_context_code
11395   , p_side                         => 'NA'
11396   );
11397 
11398 
11399    l_segment := AcctDerRule_8(
11400            p_application_id           => p_application_id
11401          , p_ae_header_id             => l_ae_header_id 
11402 , p_source_4 => p_source_4
11403 , p_source_5 => p_source_5
11404 , p_source_6 => p_source_6
11405          , x_transaction_coa_id       => l_adr_transaction_coa_id
11406          , x_accounting_coa_id        => l_adr_accounting_coa_id
11407          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
11408          , x_flex_value_set_id        => l_adr_flex_value_set_id
11409          , x_value_type_code          => l_adr_value_type_code
11410          , x_value_combination_id     => l_adr_value_combination_id
11411          , x_value_segment_code       => l_adr_value_segment_code
11412          , p_side                     => 'NA'
11413          , p_override_seg_flag        => 'Y'
11414    );
11415 
11416    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
11417 
11418       xla_ae_lines_pkg.set_segment(
11419           p_to_segment_code         => 'GL_ACCOUNT'
11420         , p_segment_value           => l_segment
11421         , p_from_segment_code       => l_adr_value_segment_code
11422         , p_from_combination_id     => l_adr_value_combination_id
11423         , p_value_type_code         => l_adr_value_type_code
11424         , p_transaction_coa_id      => l_adr_transaction_coa_id
11425         , p_accounting_coa_id       => l_adr_accounting_coa_id
11426         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
11427         , p_flex_value_set_id       => l_adr_flex_value_set_id
11428         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
11429         , p_adr_type_code           => 'S'
11430         , p_component_type          => l_component_type
11431         , p_component_code          => l_component_code
11432         , p_component_type_code     => l_component_type_code
11433         , p_component_appl_id       => l_component_appl_id
11434         , p_amb_context_code        => l_amb_context_code
11435         , p_entity_code             => 'AP_INVOICES'
11436         , p_event_class_code        => 'DEBIT MEMOS'
11437         , p_side                    => 'NA'
11438         );
11439 
11440   END IF;
11441 
11442    --
11443    --
11444    END IF;
11445    --
11446    -- Bug 4922099
11447    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11448           (NVL(l_enc_upg_option, 'N') = 'O')
11449         ) AND
11450         (l_bflow_method_code = 'PRIOR_ENTRY')
11451       )
11452    THEN
11453       IF
11454       --
11455       1 = 2
11456       --
11457       THEN
11458       xla_accounting_err_pkg.build_message
11459                                     (p_appli_s_name            => 'XLA'
11460                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11461                                     ,p_token_1                 => 'LINE_NUMBER'
11462                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11463                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11464                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11465                                                                              l_component_type
11466                                                                             ,l_component_code
11467                                                                             ,l_component_type_code
11468                                                                             ,l_component_appl_id
11469                                                                             ,l_amb_context_code
11470                                                                             ,l_entity_code
11474                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11471                                                                             ,l_event_class_code
11472                                                                            )
11473                                     ,p_token_3                 => 'OWNER'
11475                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11476                                                                           ,p_lookup_code    => l_component_type_code
11477                                                                          )
11478                                     ,p_token_4                 => 'PRODUCT_NAME'
11479                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11480                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11481                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11482                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11483                                     ,p_ae_header_id            =>  NULL
11484                                        );
11485 
11486         IF (C_LEVEL_ERROR>= g_log_level) THEN
11487                  trace
11488                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11489                       ,p_level    => C_LEVEL_ERROR
11490                       ,p_module   => l_log_module);
11491         END IF;
11492       END IF;
11493    END IF;
11494    --
11495    --
11496    ------------------------------------------------------------------------------------------------
11497    -- 4219869 Business Flow
11498    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11499    -- Prior Entry.  Currently, the following code is always generated.
11500    ------------------------------------------------------------------------------------------------
11501    XLA_AE_LINES_PKG.ValidateCurrentLine;
11502 
11503    ------------------------------------------------------------------------------------
11504    -- 4219869 Business Flow
11505    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11506    ------------------------------------------------------------------------------------
11507    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11508 
11509    ----------------------------------------------------------------------------------
11510    -- 4219869 Business Flow
11511    -- Update journal entry status -- Need to generate this within IF <condition>
11512    ----------------------------------------------------------------------------------
11513    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11514          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11515          ,p_balance_type_code => l_balance_type_code
11516          );
11517 
11518    -------------------------------------------------------------------------------------------
11519    -- 4262811 - Generate the Accrual Reversal lines
11520    -------------------------------------------------------------------------------------------
11521    BEGIN
11522       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11523                               (g_array_event(p_event_id).array_value_num('header_index'));
11524       IF l_acc_rev_flag IS NULL THEN
11525          l_acc_rev_flag := 'N';
11526       END IF;
11527    EXCEPTION
11528       WHEN OTHERS THEN
11529          l_acc_rev_flag := 'N';
11530    END;
11531    --
11532    IF (l_acc_rev_flag = 'Y') THEN
11533 
11534        -- 4645092  ------------------------------------------------------------------------------
11535        -- To allow MPA report to determine if it should generate report process
11536        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11537        ------------------------------------------------------------------------------------------
11538 
11539        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11540        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11541    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11542    -- call ADRs
11543    -- Bug 4922099
11544    --
11545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11546         (NVL(l_actual_upg_option, 'N') = 'O') OR
11547         (NVL(l_enc_upg_option, 'N') = 'O')
11548       )
11549    THEN
11550    NULL;
11551    --
11552    --
11553    
11554   l_ccid := AcctDerRule_3(
11555            p_application_id           => p_application_id
11556          , p_ae_header_id             => l_ae_header_id 
11557 , p_source_2 => p_source_2
11558          , x_transaction_coa_id       => l_adr_transaction_coa_id
11559          , x_accounting_coa_id        => l_adr_accounting_coa_id
11560          , x_value_type_code          => l_adr_value_type_code
11561          , p_side                     => 'NA'
11562    );
11563 
11564    xla_ae_lines_pkg.set_ccid(
11565     p_code_combination_id          => l_ccid
11566   , p_value_type_code              => l_adr_value_type_code
11567   , p_transaction_coa_id           => l_adr_transaction_coa_id
11568   , p_accounting_coa_id            => l_adr_accounting_coa_id
11569   , p_adr_code                     => 'AP_INVOICE_DIST'
11570   , p_adr_type_code                => 'S'
11571   , p_component_type               => l_component_type
11572   , p_component_code               => l_component_code
11573   , p_component_type_code          => l_component_type_code
11577   );
11574   , p_component_appl_id            => l_component_appl_id
11575   , p_amb_context_code             => l_amb_context_code
11576   , p_side                         => 'NA'
11578 
11579 
11580    l_segment := AcctDerRule_8(
11581            p_application_id           => p_application_id
11582          , p_ae_header_id             => l_ae_header_id 
11583 , p_source_4 => p_source_4
11584 , p_source_5 => p_source_5
11585 , p_source_6 => p_source_6
11586          , x_transaction_coa_id       => l_adr_transaction_coa_id
11587          , x_accounting_coa_id        => l_adr_accounting_coa_id
11588          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
11589          , x_flex_value_set_id        => l_adr_flex_value_set_id
11590          , x_value_type_code          => l_adr_value_type_code
11591          , x_value_combination_id     => l_adr_value_combination_id
11592          , x_value_segment_code       => l_adr_value_segment_code
11593          , p_side                     => 'NA'
11594          , p_override_seg_flag        => 'Y'
11595    );
11596 
11597    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
11598 
11599       xla_ae_lines_pkg.set_segment(
11600           p_to_segment_code         => 'GL_ACCOUNT'
11601         , p_segment_value           => l_segment
11602         , p_from_segment_code       => l_adr_value_segment_code
11603         , p_from_combination_id     => l_adr_value_combination_id
11604         , p_value_type_code         => l_adr_value_type_code
11605         , p_transaction_coa_id      => l_adr_transaction_coa_id
11606         , p_accounting_coa_id       => l_adr_accounting_coa_id
11607         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
11608         , p_flex_value_set_id       => l_adr_flex_value_set_id
11609         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
11610         , p_adr_type_code           => 'S'
11611         , p_component_type          => l_component_type
11612         , p_component_code          => l_component_code
11613         , p_component_type_code     => l_component_type_code
11614         , p_component_appl_id       => l_component_appl_id
11615         , p_amb_context_code        => l_amb_context_code
11616         , p_entity_code             => 'AP_INVOICES'
11617         , p_event_class_code        => 'DEBIT MEMOS'
11618         , p_side                    => 'NA'
11619         );
11620 
11621   END IF;
11622 
11623    --
11624    --
11625    END IF;
11626 
11627        --
11628        -- Update the line information that should be overwritten
11629        --
11630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11631                                          p_header_num   => 1);
11632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11633 
11634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11635 
11636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11638        END IF;
11639 
11640       --
11641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11642       --
11643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11645       ELSE
11646           ---------------------------------------------------------------------------------------------------
11647           -- 4262811a Switch Sign
11648           ---------------------------------------------------------------------------------------------------
11649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11654           -- 5132302
11655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11657 
11658       END IF;
11659 
11660       -- 4955764
11661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11663 
11664 
11665       XLA_AE_LINES_PKG.ValidateCurrentLine;
11666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11667 
11668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11670                ,p_balance_type_code => l_balance_type_code);
11671 
11672    END IF;
11673 
11674    -----------------------------------------------------------------------------------------
11675    -- 4262811 Multiperiod Accounting
11676    -----------------------------------------------------------------------------------------
11680 END IF;
11677      -- No MPA option is assigned.
11678 
11679 
11681 END IF;
11682 --
11683 
11684 --
11685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11686    trace
11687       (p_msg      => 'END of AcctLineType_28'
11688       ,p_level    => C_LEVEL_PROCEDURE
11689       ,p_module   => l_log_module);
11690 END IF;
11691 --
11692 EXCEPTION
11693   WHEN xla_exceptions_pkg.application_exception THEN
11694       RAISE;
11695   WHEN OTHERS THEN
11696        xla_exceptions_pkg.raise_message
11697            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_28');
11698 END AcctLineType_28;
11699 --
11700 
11701 ---------------------------------------
11702 --
11703 -- PRIVATE FUNCTION
11704 --         AcctLineType_29
11705 --
11706 ---------------------------------------
11707 PROCEDURE AcctLineType_29 (
11708   p_application_id        IN NUMBER
11709  ,p_event_id              IN NUMBER
11710  ,p_calculate_acctd_flag  IN VARCHAR2
11711  ,p_calculate_g_l_flag    IN VARCHAR2
11712  ,p_actual_flag           IN OUT VARCHAR2
11713  ,p_balance_type_code     OUT VARCHAR2
11714  ,p_gain_or_loss_ref      OUT VARCHAR2
11715  
11716 --Invoice Distribution Description
11717  , p_source_1            IN VARCHAR2
11718 --Invoice Distribution Account
11719  , p_source_2            IN NUMBER
11720 --Payment Status Flag of the Invoice
11721  , p_source_7            IN VARCHAR2
11722 --Invoice Distribution Type
11723  , p_source_8            IN VARCHAR2
11724  , p_source_8_meaning    IN VARCHAR2
11725 --Federal Prior Year Flag
11726  , p_source_9            IN VARCHAR2
11727 --Invoice Distribution Encumbrance Amount
11728  , p_source_10            IN NUMBER
11729 --Accrue on Receipt Option
11730  , p_source_11            IN VARCHAR2
11731  , p_source_11_meaning    IN VARCHAR2
11732 --Invoice Type
11733  , p_source_13            IN VARCHAR2
11734  , p_source_13_meaning    IN VARCHAR2
11735 --Accounting Reversal Indicator
11736  , p_source_15            IN VARCHAR2
11737 --Distribution Link Type
11738  , p_source_17            IN VARCHAR2
11739 --Allocation to Main Distribution Identifier
11740  , p_source_19            IN NUMBER
11741 --Invoice Identifier
11742  , p_source_20            IN NUMBER
11743 --Business Flow Accounts Payable Application Identifier
11744  , p_source_21            IN NUMBER
11745 --Business Flow Invoice Distribution Type
11746  , p_source_22            IN VARCHAR2
11747 --Business Flow Invoice Entity Code
11748  , p_source_23            IN VARCHAR2
11749 --Business Flow Invoice Distribution Identifier
11750  , p_source_24            IN NUMBER
11751 --Business Flow Invoice Identifier
11752  , p_source_25            IN NUMBER
11753 --Invoice Distribution Identifier
11754  , p_source_26            IN NUMBER
11755 --Payables Encumbrance Upgrade Credit Account
11756  , p_source_27            IN NUMBER
11757 --Payables Encumbrance Upgrade Credit Amount
11758  , p_source_28            IN NUMBER
11759 --Invoice Currency Code
11760  , p_source_29            IN VARCHAR2
11761 --Payables Encumbrance Upgrade Credit Base Amount
11762  , p_source_30            IN NUMBER
11763 --Payables Encumbrance Upgrade Debit Account
11764  , p_source_31            IN NUMBER
11765 --Payables Encumbrance Upgrade Debit Amount
11766  , p_source_32            IN NUMBER
11767 --Payables Encumbrance Upgrade Debit Base Amount
11768  , p_source_33            IN NUMBER
11769 --Payables Encumbrance Upgrade Option
11770  , p_source_34            IN VARCHAR2
11771 --Invoice Exchange Date
11772  , p_source_36            IN DATE
11773 --Invoice Exchange Rate
11774  , p_source_37            IN NUMBER
11775 --Invoice Exchange Rate Type
11776  , p_source_38            IN VARCHAR2
11777 --Deferred Accounting End Date
11778  , p_source_39            IN DATE
11779 --Deferred Accounting Option
11780  , p_source_40            IN VARCHAR2
11781 --Deferred Accounting Start Date
11782  , p_source_41            IN DATE
11783 --Override Accounted Amount Indicator
11784  , p_source_42            IN VARCHAR2
11785  , p_source_42_meaning    IN VARCHAR2
11786 --Invoice Supplier Identifier
11787  , p_source_43            IN NUMBER
11788 --Invoice Supplier Site Identifier
11789  , p_source_44            IN NUMBER
11790 --Third Party Type
11791  , p_source_45            IN VARCHAR2
11792 --Parent Reversal Identifier
11793  , p_source_46            IN NUMBER
11794 --Invoice Distribution Tax Line Identifier
11795  , p_source_48            IN NUMBER
11796 --Invoice Distribution Tax Distribution Identifier from Tax
11797  , p_source_49            IN NUMBER
11798 --Invoice Distribution Summary Tax Line Identifier
11799  , p_source_50            IN NUMBER
11800 --Payables Upgrade Credit Encumbrance Type Identifier
11801  , p_source_51            IN NUMBER
11802 --Payables Upgrade Debit Encumbrance Type Identifier
11803  , p_source_52            IN NUMBER
11804 --Invoice Distribution Amount
11805  , p_source_55            IN NUMBER
11806 --Invoice Distribution Ledger Amount Before Rounding
11807  , p_source_58            IN NUMBER
11808 )
11809 IS
11810 
11811 l_component_type              VARCHAR2(80);
11812 l_component_code              VARCHAR2(30);
11813 l_component_type_code         VARCHAR2(1);
11814 l_component_appl_id           INTEGER;
11815 l_amb_context_code            VARCHAR2(30);
11819 l_event_type_code             VARCHAR2(30);
11816 l_entity_code                 VARCHAR2(30);
11817 l_event_class_code            VARCHAR2(30);
11818 l_ae_header_id                NUMBER;
11820 l_line_definition_code        VARCHAR2(30);
11821 l_line_definition_owner_code  VARCHAR2(1);
11822 --
11823 -- adr variables
11824 l_segment                     VARCHAR2(30);
11825 l_ccid                        NUMBER;
11826 l_adr_transaction_coa_id      NUMBER;
11827 l_adr_accounting_coa_id       NUMBER;
11828 l_adr_flexfield_segment_code  VARCHAR2(30);
11829 l_adr_flex_value_set_id       NUMBER;
11830 l_adr_value_type_code         VARCHAR2(30);
11831 l_adr_value_combination_id    NUMBER;
11832 l_adr_value_segment_code      VARCHAR2(30);
11833 
11834 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11835 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11836 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11837 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11838 
11839 -- 4262811 Variables ------------------------------------------------------------------------------------------
11840 l_entered_amt_idx             NUMBER;
11841 l_accted_amt_idx              NUMBER;
11842 l_acc_rev_flag                VARCHAR2(1);
11843 l_accrual_line_num            NUMBER;
11844 l_tmp_amt                     NUMBER;
11845 l_acc_rev_natural_side_code   VARCHAR2(1);
11846 
11847 l_num_entries                 NUMBER;
11848 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11849 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11850 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11851 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11852 l_recog_line_1                NUMBER;
11853 l_recog_line_2                NUMBER;
11854 
11855 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11856 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11857 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11858 
11859 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11860 
11861 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11862 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11863 
11864 ---------------------------------------------------------------------------------------------------------------
11865 
11866 
11867 --
11868 -- bulk performance
11869 --
11870 l_balance_type_code           VARCHAR2(1);
11871 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11872 l_log_module                  VARCHAR2(240);
11873 
11874 --
11875 -- Upgrade strategy
11876 --
11877 l_actual_upg_option           VARCHAR2(1);
11878 l_enc_upg_option           VARCHAR2(1);
11879 
11880 --
11881 BEGIN
11882 --
11883 IF g_log_enabled THEN
11884       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
11885 END IF;
11886 --
11887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11888 
11889       trace
11890          (p_msg      => 'BEGIN of AcctLineType_29'
11891          ,p_level    => C_LEVEL_PROCEDURE
11892          ,p_module   => l_log_module);
11893 
11894 END IF;
11895 --
11896 l_component_type             := 'AMB_JLT';
11897 l_component_code             := 'FV_AP_DEBIT_MEMOS_EXP_DR';
11898 l_component_type_code        := 'S';
11899 l_component_appl_id          :=  200;
11900 l_amb_context_code           := 'DEFAULT';
11901 l_entity_code                := 'AP_INVOICES';
11902 l_event_class_code           := 'DEBIT MEMOS';
11903 l_event_type_code            := 'DEBIT MEMOS_ALL';
11904 l_line_definition_owner_code := 'S';
11905 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
11906 --
11907 l_balance_type_code          := 'A';
11908 l_segment                     := NULL;
11909 l_ccid                        := NULL;
11910 l_adr_transaction_coa_id      := NULL;
11911 l_adr_accounting_coa_id       := NULL;
11912 l_adr_flexfield_segment_code  := NULL;
11913 l_adr_flex_value_set_id       := NULL;
11914 l_adr_value_type_code         := NULL;
11915 l_adr_value_combination_id    := NULL;
11916 l_adr_value_segment_code      := NULL;
11917 
11918 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11919 l_bflow_class_code           := '';    -- 4219869 Business Flow
11920 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11921 l_budgetary_control_flag     := 'Y';
11922 
11923 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11924 l_bflow_applied_to_amt       := NULL; -- 5132302
11925 l_entered_amt_idx            := NULL;          -- 4262811
11926 l_accted_amt_idx             := NULL;          -- 4262811
11927 l_acc_rev_flag               := NULL;          -- 4262811
11928 l_accrual_line_num           := NULL;          -- 4262811
11929 l_tmp_amt                    := NULL;          -- 4262811
11930 --
11931  
11932 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11933     l_balance_type_code <> 'B' THEN
11934 IF NVL(p_source_13,'
11935 ') =  'DEBIT' AND 
11936 (NVL(p_source_8,'
11937 ') =  'ITEM' OR 
11938 NVL(p_source_8,'
11939 ') =  'MISCELLANEOUS' OR 
11940 NVL(p_source_8,'
11941 ') =  'FREIGHT' OR 
11942 NVL(p_source_8,'
11943 ') =  'IPV' OR 
11944 NVL(p_source_8,'
11945 ') =  'ACCRUAL')
11946  THEN 
11950 
11947 
11948    --
11949    XLA_AE_LINES_PKG.SetNewLine;
11951    p_balance_type_code          := l_balance_type_code;
11952    -- set the flag so later we will know whether the gain loss line needs to be created
11953    
11954    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11955      p_actual_flag :='A';
11956    END IF;
11957 
11958    --
11959    -- bulk performance
11960    --
11961    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11962                                       p_header_num   => 0); -- 4262811
11963    --
11964    -- set accounting line options
11965    --
11966    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11967            p_natural_side_code          => 'C'
11968          , p_gain_or_loss_flag          => 'N'
11969          , p_gl_transfer_mode_code      => 'S'
11970          , p_acct_entry_type_code       => 'A'
11971          , p_switch_side_flag           => 'N'
11972          , p_merge_duplicate_code       => 'N'
11973          );
11974    --
11975    l_acc_rev_natural_side_code := 'D';  -- 4262811
11976    -- 
11977    --
11978    -- set accounting line type info
11979    --
11980    xla_ae_lines_pkg.SetAcctLineType
11981       (p_component_type             => l_component_type
11982       ,p_event_type_code            => l_event_type_code
11983       ,p_line_definition_owner_code => l_line_definition_owner_code
11984       ,p_line_definition_code       => l_line_definition_code
11985       ,p_accounting_line_code       => l_component_code
11986       ,p_accounting_line_type_code  => l_component_type_code
11987       ,p_accounting_line_appl_id    => l_component_appl_id
11988       ,p_amb_context_code           => l_amb_context_code
11989       ,p_entity_code                => l_entity_code
11990       ,p_event_class_code           => l_event_class_code);
11991    --
11992    -- set accounting class
11993    --
11994    xla_ae_lines_pkg.SetAcctClass(
11995            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
11996          , p_ae_header_id           => l_ae_header_id
11997          );
11998 
11999    --
12000    -- set rounding class
12001    --
12002    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12003                       'ACCOUNTSPAYABLE';
12004 
12005    --
12006    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12007    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12008    --
12009    -- bulk performance
12010    --
12011    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12012 
12013    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12014       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12015 
12016    -- 4955764
12017    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12018       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12019 
12020    -- 4458381 Public Sector Enh
12021    
12022    --
12023    -- set accounting attributes for the line type
12024    --
12025    l_entered_amt_idx := 23;
12026    l_accted_amt_idx  := 28;
12027    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12028    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12029    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
12030    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
12031    l_rec_acct_attrs.array_num_value(2)  := 
12032 xla_ae_sources_pkg.GetSystemSourceNum(
12033    p_source_code           => 'XLA_EVENT_APPL_ID'
12034  , p_source_type_code      => 'Y'
12035  , p_source_application_id =>  602
12036 );
12037    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
12038    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
12039    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
12040    l_rec_acct_attrs.array_char_value(4)  := 
12041 xla_ae_sources_pkg.GetSystemSourceChar(
12042    p_source_code           => 'XLA_ENTITY_CODE'
12043  , p_source_type_code      => 'Y'
12044  , p_source_application_id =>  602
12045 );
12046    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
12047    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
12048    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
12049    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
12050    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
12051    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
12052    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12053    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
12054    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
12055    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
12056    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
12057    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
12058    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12059    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
12060    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
12061    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
12062    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
12063    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
12067    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
12064    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
12065    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
12066    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
12068    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
12069    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
12070    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
12071    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
12072    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
12073    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
12074    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
12075    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
12076    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
12077    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
12078    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
12079    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
12080    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
12081    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
12082    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
12083    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
12084    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
12085    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
12086    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
12087    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
12088    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
12089    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
12090    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
12091    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
12092    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
12093    l_rec_acct_attrs.array_num_value(28)  := p_source_58;
12094    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
12095    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
12096    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
12097    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
12098    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
12099    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
12100    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
12101    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
12102    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
12103    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
12104    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
12105    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
12106    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
12107    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
12108    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
12109    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
12110    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
12111    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
12112    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
12113    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
12114    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
12115    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
12116    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
12117    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
12118    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
12119    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
12120    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
12121    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
12122 
12123    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12124    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12125 
12126    ---------------------------------------------------------------------------------------------------------------
12127    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12128    ---------------------------------------------------------------------------------------------------------------
12129    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12130 
12131    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12132    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12133 
12134    IF xla_accounting_cache_pkg.GetValueChar
12135          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12136          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12137    AND l_bflow_method_code = 'PRIOR_ENTRY'
12138 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12139    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12140          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12141        )
12142    THEN
12143          xla_ae_lines_pkg.BflowUpgEntry
12144            (p_business_method_code    => l_bflow_method_code
12145            ,p_business_class_code     => l_bflow_class_code
12146            ,p_balance_type            => l_balance_type_code);
12147    ELSE
12148       NULL;
12149 -- No business flow processing for business flow method of NONE.
12150    END IF;
12151 
12152    --
12156    --
12153    -- call analytical criteria
12154    --
12155    
12157    -- call description
12158    --
12159    
12160 xla_ae_lines_pkg.SetLineDescription(
12161    p_ae_header_id => l_ae_header_id
12162   ,p_description  => Description_2 (
12163      p_application_id         => p_application_id
12164    , p_ae_header_id           => l_ae_header_id 
12165 , p_source_1 => p_source_1
12166    )
12167 );
12168 
12169 
12170    --
12171    -- call ADRs
12172    -- Bug 4922099
12173    --
12174    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12175         (NVL(l_actual_upg_option, 'N') = 'O') OR
12176         (NVL(l_enc_upg_option, 'N') = 'O')
12177       )
12178    THEN
12179    NULL;
12180    --
12181    --
12182    
12183   l_ccid := AcctDerRule_3(
12184            p_application_id           => p_application_id
12185          , p_ae_header_id             => l_ae_header_id 
12186 , p_source_2 => p_source_2
12187          , x_transaction_coa_id       => l_adr_transaction_coa_id
12188          , x_accounting_coa_id        => l_adr_accounting_coa_id
12189          , x_value_type_code          => l_adr_value_type_code
12190          , p_side                     => 'NA'
12191    );
12192 
12193    xla_ae_lines_pkg.set_ccid(
12194     p_code_combination_id          => l_ccid
12195   , p_value_type_code              => l_adr_value_type_code
12196   , p_transaction_coa_id           => l_adr_transaction_coa_id
12197   , p_accounting_coa_id            => l_adr_accounting_coa_id
12198   , p_adr_code                     => 'AP_INVOICE_DIST'
12199   , p_adr_type_code                => 'S'
12200   , p_component_type               => l_component_type
12201   , p_component_code               => l_component_code
12202   , p_component_type_code          => l_component_type_code
12203   , p_component_appl_id            => l_component_appl_id
12204   , p_amb_context_code             => l_amb_context_code
12205   , p_side                         => 'NA'
12206   );
12207 
12208 
12209    l_segment := AcctDerRule_12(
12210            p_application_id           => p_application_id
12211          , p_ae_header_id             => l_ae_header_id 
12212 , p_source_7 => p_source_7
12213 , p_source_8 => p_source_8
12214 , p_source_8_meaning => p_source_8_meaning
12215 , p_source_9 => p_source_9
12216 , p_source_10 => p_source_10
12217 , p_source_11 => p_source_11
12218 , p_source_11_meaning => p_source_11_meaning
12219          , x_transaction_coa_id       => l_adr_transaction_coa_id
12220          , x_accounting_coa_id        => l_adr_accounting_coa_id
12221          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12222          , x_flex_value_set_id        => l_adr_flex_value_set_id
12223          , x_value_type_code          => l_adr_value_type_code
12224          , x_value_combination_id     => l_adr_value_combination_id
12225          , x_value_segment_code       => l_adr_value_segment_code
12226          , p_side                     => 'NA'
12227          , p_override_seg_flag        => 'Y'
12228    );
12229 
12230    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12231 
12232       xla_ae_lines_pkg.set_segment(
12233           p_to_segment_code         => 'GL_ACCOUNT'
12234         , p_segment_value           => l_segment
12235         , p_from_segment_code       => l_adr_value_segment_code
12236         , p_from_combination_id     => l_adr_value_combination_id
12237         , p_value_type_code         => l_adr_value_type_code
12238         , p_transaction_coa_id      => l_adr_transaction_coa_id
12239         , p_accounting_coa_id       => l_adr_accounting_coa_id
12240         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12241         , p_flex_value_set_id       => l_adr_flex_value_set_id
12242         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
12243         , p_adr_type_code           => 'S'
12244         , p_component_type          => l_component_type
12245         , p_component_code          => l_component_code
12246         , p_component_type_code     => l_component_type_code
12247         , p_component_appl_id       => l_component_appl_id
12248         , p_amb_context_code        => l_amb_context_code
12249         , p_entity_code             => 'AP_INVOICES'
12250         , p_event_class_code        => 'DEBIT MEMOS'
12251         , p_side                    => 'NA'
12252         );
12253 
12254   END IF;
12255 
12256    --
12257    --
12258    END IF;
12259    --
12260    -- Bug 4922099
12261    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12262           (NVL(l_enc_upg_option, 'N') = 'O')
12263         ) AND
12264         (l_bflow_method_code = 'PRIOR_ENTRY')
12265       )
12266    THEN
12267       IF
12268       --
12269       1 = 2
12270       --
12271       THEN
12272       xla_accounting_err_pkg.build_message
12273                                     (p_appli_s_name            => 'XLA'
12274                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12275                                     ,p_token_1                 => 'LINE_NUMBER'
12276                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12277                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12278                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12279                                                                              l_component_type
12280                                                                             ,l_component_code
12284                                                                             ,l_entity_code
12281                                                                             ,l_component_type_code
12282                                                                             ,l_component_appl_id
12283                                                                             ,l_amb_context_code
12285                                                                             ,l_event_class_code
12286                                                                            )
12287                                     ,p_token_3                 => 'OWNER'
12288                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12289                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12290                                                                           ,p_lookup_code    => l_component_type_code
12291                                                                          )
12292                                     ,p_token_4                 => 'PRODUCT_NAME'
12293                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12294                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12295                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12296                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12297                                     ,p_ae_header_id            =>  NULL
12298                                        );
12299 
12300         IF (C_LEVEL_ERROR>= g_log_level) THEN
12301                  trace
12302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12303                       ,p_level    => C_LEVEL_ERROR
12304                       ,p_module   => l_log_module);
12305         END IF;
12306       END IF;
12307    END IF;
12308    --
12309    --
12310    ------------------------------------------------------------------------------------------------
12311    -- 4219869 Business Flow
12312    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12313    -- Prior Entry.  Currently, the following code is always generated.
12314    ------------------------------------------------------------------------------------------------
12315    XLA_AE_LINES_PKG.ValidateCurrentLine;
12316 
12317    ------------------------------------------------------------------------------------
12318    -- 4219869 Business Flow
12319    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12320    ------------------------------------------------------------------------------------
12321    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12322 
12323    ----------------------------------------------------------------------------------
12324    -- 4219869 Business Flow
12325    -- Update journal entry status -- Need to generate this within IF <condition>
12326    ----------------------------------------------------------------------------------
12327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12329          ,p_balance_type_code => l_balance_type_code
12330          );
12331 
12332    -------------------------------------------------------------------------------------------
12333    -- 4262811 - Generate the Accrual Reversal lines
12334    -------------------------------------------------------------------------------------------
12335    BEGIN
12336       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12337                               (g_array_event(p_event_id).array_value_num('header_index'));
12338       IF l_acc_rev_flag IS NULL THEN
12339          l_acc_rev_flag := 'N';
12340       END IF;
12341    EXCEPTION
12342       WHEN OTHERS THEN
12343          l_acc_rev_flag := 'N';
12344    END;
12345    --
12346    IF (l_acc_rev_flag = 'Y') THEN
12347 
12348        -- 4645092  ------------------------------------------------------------------------------
12349        -- To allow MPA report to determine if it should generate report process
12350        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12351        ------------------------------------------------------------------------------------------
12352 
12353        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12354        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12355    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12356    -- call ADRs
12357    -- Bug 4922099
12358    --
12359    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12360         (NVL(l_actual_upg_option, 'N') = 'O') OR
12361         (NVL(l_enc_upg_option, 'N') = 'O')
12362       )
12363    THEN
12364    NULL;
12365    --
12366    --
12367    
12368   l_ccid := AcctDerRule_3(
12369            p_application_id           => p_application_id
12370          , p_ae_header_id             => l_ae_header_id 
12371 , p_source_2 => p_source_2
12372          , x_transaction_coa_id       => l_adr_transaction_coa_id
12373          , x_accounting_coa_id        => l_adr_accounting_coa_id
12374          , x_value_type_code          => l_adr_value_type_code
12375          , p_side                     => 'NA'
12376    );
12377 
12381   , p_transaction_coa_id           => l_adr_transaction_coa_id
12378    xla_ae_lines_pkg.set_ccid(
12379     p_code_combination_id          => l_ccid
12380   , p_value_type_code              => l_adr_value_type_code
12382   , p_accounting_coa_id            => l_adr_accounting_coa_id
12383   , p_adr_code                     => 'AP_INVOICE_DIST'
12384   , p_adr_type_code                => 'S'
12385   , p_component_type               => l_component_type
12386   , p_component_code               => l_component_code
12387   , p_component_type_code          => l_component_type_code
12388   , p_component_appl_id            => l_component_appl_id
12389   , p_amb_context_code             => l_amb_context_code
12390   , p_side                         => 'NA'
12391   );
12392 
12393 
12394    l_segment := AcctDerRule_12(
12395            p_application_id           => p_application_id
12396          , p_ae_header_id             => l_ae_header_id 
12397 , p_source_7 => p_source_7
12398 , p_source_8 => p_source_8
12399 , p_source_8_meaning => p_source_8_meaning
12400 , p_source_9 => p_source_9
12401 , p_source_10 => p_source_10
12402 , p_source_11 => p_source_11
12403 , p_source_11_meaning => p_source_11_meaning
12404          , x_transaction_coa_id       => l_adr_transaction_coa_id
12405          , x_accounting_coa_id        => l_adr_accounting_coa_id
12406          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12407          , x_flex_value_set_id        => l_adr_flex_value_set_id
12408          , x_value_type_code          => l_adr_value_type_code
12409          , x_value_combination_id     => l_adr_value_combination_id
12410          , x_value_segment_code       => l_adr_value_segment_code
12411          , p_side                     => 'NA'
12412          , p_override_seg_flag        => 'Y'
12413    );
12414 
12415    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12416 
12417       xla_ae_lines_pkg.set_segment(
12418           p_to_segment_code         => 'GL_ACCOUNT'
12419         , p_segment_value           => l_segment
12420         , p_from_segment_code       => l_adr_value_segment_code
12421         , p_from_combination_id     => l_adr_value_combination_id
12422         , p_value_type_code         => l_adr_value_type_code
12423         , p_transaction_coa_id      => l_adr_transaction_coa_id
12424         , p_accounting_coa_id       => l_adr_accounting_coa_id
12425         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12426         , p_flex_value_set_id       => l_adr_flex_value_set_id
12427         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
12428         , p_adr_type_code           => 'S'
12429         , p_component_type          => l_component_type
12430         , p_component_code          => l_component_code
12431         , p_component_type_code     => l_component_type_code
12432         , p_component_appl_id       => l_component_appl_id
12433         , p_amb_context_code        => l_amb_context_code
12434         , p_entity_code             => 'AP_INVOICES'
12435         , p_event_class_code        => 'DEBIT MEMOS'
12436         , p_side                    => 'NA'
12437         );
12438 
12439   END IF;
12440 
12441    --
12442    --
12443    END IF;
12444 
12445        --
12446        -- Update the line information that should be overwritten
12447        --
12448        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12449                                          p_header_num   => 1);
12450        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12451 
12452        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12453 
12454        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12455           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12456        END IF;
12457 
12458       --
12459       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12460       --
12461       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12462           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12463       ELSE
12464           ---------------------------------------------------------------------------------------------------
12465           -- 4262811a Switch Sign
12466           ---------------------------------------------------------------------------------------------------
12467           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12468           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12469                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12470           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12471                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12472           -- 5132302
12473           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12474                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12475 
12476       END IF;
12477 
12478       -- 4955764
12479       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12483       XLA_AE_LINES_PKG.ValidateCurrentLine;
12480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12481 
12482 
12484       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12485 
12486       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12487                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12488                ,p_balance_type_code => l_balance_type_code);
12489 
12490    END IF;
12491 
12492    -----------------------------------------------------------------------------------------
12493    -- 4262811 Multiperiod Accounting
12494    -----------------------------------------------------------------------------------------
12495      -- No MPA option is assigned.
12496 
12497 
12498 END IF;
12499 END IF;
12500 --
12501 
12502 --
12503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12504    trace
12505       (p_msg      => 'END of AcctLineType_29'
12506       ,p_level    => C_LEVEL_PROCEDURE
12507       ,p_module   => l_log_module);
12508 END IF;
12509 --
12510 EXCEPTION
12511   WHEN xla_exceptions_pkg.application_exception THEN
12512       RAISE;
12513   WHEN OTHERS THEN
12514        xla_exceptions_pkg.raise_message
12515            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_29');
12516 END AcctLineType_29;
12517 --
12518 
12519 ---------------------------------------
12520 --
12521 -- PRIVATE FUNCTION
12522 --         AcctLineType_30
12523 --
12524 ---------------------------------------
12525 PROCEDURE AcctLineType_30 (
12526   p_application_id        IN NUMBER
12527  ,p_event_id              IN NUMBER
12528  ,p_calculate_acctd_flag  IN VARCHAR2
12529  ,p_calculate_g_l_flag    IN VARCHAR2
12530  ,p_actual_flag           IN OUT VARCHAR2
12531  ,p_balance_type_code     OUT VARCHAR2
12532  ,p_gain_or_loss_ref      OUT VARCHAR2
12533  
12534 --Invoice Distribution Description
12535  , p_source_1            IN VARCHAR2
12536 --Invoice Distribution Account
12537  , p_source_2            IN NUMBER
12538 --Payment Status Flag of the Invoice
12539  , p_source_7            IN VARCHAR2
12540 --Invoice Distribution Type
12541  , p_source_8            IN VARCHAR2
12542  , p_source_8_meaning    IN VARCHAR2
12543 --Federal Prior Year Flag
12544  , p_source_9            IN VARCHAR2
12545 --Invoice Distribution Encumbrance Amount
12546  , p_source_10            IN NUMBER
12547 --Accrue on Receipt Option
12548  , p_source_11            IN VARCHAR2
12549  , p_source_11_meaning    IN VARCHAR2
12550 --Purchase Order Distribution Identifier
12551  , p_source_12            IN NUMBER
12552 --Invoice Type
12553  , p_source_13            IN VARCHAR2
12554  , p_source_13_meaning    IN VARCHAR2
12555 --Accounting Reversal Indicator
12556  , p_source_15            IN VARCHAR2
12557 --Distribution Link Type
12558  , p_source_17            IN VARCHAR2
12559 --Allocation to Main Distribution Identifier
12560  , p_source_19            IN NUMBER
12561 --Invoice Identifier
12562  , p_source_20            IN NUMBER
12563 --Business Flow Accounts Payable Application Identifier
12564  , p_source_21            IN NUMBER
12565 --Business Flow Invoice Distribution Type
12566  , p_source_22            IN VARCHAR2
12567 --Business Flow Invoice Entity Code
12568  , p_source_23            IN VARCHAR2
12569 --Business Flow Invoice Distribution Identifier
12570  , p_source_24            IN NUMBER
12571 --Business Flow Invoice Identifier
12572  , p_source_25            IN NUMBER
12573 --Invoice Distribution Identifier
12574  , p_source_26            IN NUMBER
12575 --Payables Encumbrance Upgrade Credit Account
12576  , p_source_27            IN NUMBER
12577 --Payables Encumbrance Upgrade Credit Amount
12578  , p_source_28            IN NUMBER
12579 --Invoice Currency Code
12580  , p_source_29            IN VARCHAR2
12581 --Payables Encumbrance Upgrade Credit Base Amount
12582  , p_source_30            IN NUMBER
12583 --Payables Encumbrance Upgrade Debit Account
12584  , p_source_31            IN NUMBER
12585 --Payables Encumbrance Upgrade Debit Amount
12586  , p_source_32            IN NUMBER
12587 --Payables Encumbrance Upgrade Debit Base Amount
12588  , p_source_33            IN NUMBER
12589 --Payables Encumbrance Upgrade Option
12590  , p_source_34            IN VARCHAR2
12591 --Invoice Exchange Date
12592  , p_source_36            IN DATE
12593 --Invoice Exchange Rate
12594  , p_source_37            IN NUMBER
12595 --Invoice Exchange Rate Type
12596  , p_source_38            IN VARCHAR2
12597 --Deferred Accounting End Date
12598  , p_source_39            IN DATE
12599 --Deferred Accounting Option
12600  , p_source_40            IN VARCHAR2
12601 --Deferred Accounting Start Date
12602  , p_source_41            IN DATE
12603 --Override Accounted Amount Indicator
12604  , p_source_42            IN VARCHAR2
12605  , p_source_42_meaning    IN VARCHAR2
12606 --Invoice Supplier Identifier
12607  , p_source_43            IN NUMBER
12608 --Invoice Supplier Site Identifier
12609  , p_source_44            IN NUMBER
12610 --Third Party Type
12611  , p_source_45            IN VARCHAR2
12612 --Parent Reversal Identifier
12613  , p_source_46            IN NUMBER
12614 --Invoice Distribution Statistical Amount
12615  , p_source_47            IN NUMBER
12616 --Invoice Distribution Tax Line Identifier
12620 --Invoice Distribution Summary Tax Line Identifier
12617  , p_source_48            IN NUMBER
12618 --Invoice Distribution Tax Distribution Identifier from Tax
12619  , p_source_49            IN NUMBER
12621  , p_source_50            IN NUMBER
12622 --Payables Upgrade Credit Encumbrance Type Identifier
12623  , p_source_51            IN NUMBER
12624 --Payables Upgrade Debit Encumbrance Type Identifier
12625  , p_source_52            IN NUMBER
12626 --Invoice Distribution Encumbrance Ledger Amount
12627  , p_source_53            IN NUMBER
12628 --Invoice Distribution Amount
12629  , p_source_55            IN NUMBER
12630 )
12631 IS
12632 
12633 l_component_type              VARCHAR2(80);
12634 l_component_code              VARCHAR2(30);
12635 l_component_type_code         VARCHAR2(1);
12636 l_component_appl_id           INTEGER;
12637 l_amb_context_code            VARCHAR2(30);
12638 l_entity_code                 VARCHAR2(30);
12639 l_event_class_code            VARCHAR2(30);
12640 l_ae_header_id                NUMBER;
12641 l_event_type_code             VARCHAR2(30);
12642 l_line_definition_code        VARCHAR2(30);
12643 l_line_definition_owner_code  VARCHAR2(1);
12644 --
12645 -- adr variables
12646 l_segment                     VARCHAR2(30);
12647 l_ccid                        NUMBER;
12648 l_adr_transaction_coa_id      NUMBER;
12649 l_adr_accounting_coa_id       NUMBER;
12650 l_adr_flexfield_segment_code  VARCHAR2(30);
12651 l_adr_flex_value_set_id       NUMBER;
12652 l_adr_value_type_code         VARCHAR2(30);
12653 l_adr_value_combination_id    NUMBER;
12654 l_adr_value_segment_code      VARCHAR2(30);
12655 
12656 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12657 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12658 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12659 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12660 
12661 -- 4262811 Variables ------------------------------------------------------------------------------------------
12662 l_entered_amt_idx             NUMBER;
12663 l_accted_amt_idx              NUMBER;
12664 l_acc_rev_flag                VARCHAR2(1);
12665 l_accrual_line_num            NUMBER;
12666 l_tmp_amt                     NUMBER;
12667 l_acc_rev_natural_side_code   VARCHAR2(1);
12668 
12669 l_num_entries                 NUMBER;
12670 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12671 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12672 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12673 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12674 l_recog_line_1                NUMBER;
12675 l_recog_line_2                NUMBER;
12676 
12677 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12678 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12679 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12680 
12681 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12682 
12683 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12684 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12685 
12686 ---------------------------------------------------------------------------------------------------------------
12687 
12688 
12689 --
12690 -- bulk performance
12691 --
12692 l_balance_type_code           VARCHAR2(1);
12693 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12694 l_log_module                  VARCHAR2(240);
12695 
12696 --
12697 -- Upgrade strategy
12698 --
12699 l_actual_upg_option           VARCHAR2(1);
12700 l_enc_upg_option           VARCHAR2(1);
12701 
12702 --
12703 BEGIN
12704 --
12705 IF g_log_enabled THEN
12706       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
12707 END IF;
12708 --
12709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12710 
12711       trace
12712          (p_msg      => 'BEGIN of AcctLineType_30'
12713          ,p_level    => C_LEVEL_PROCEDURE
12714          ,p_module   => l_log_module);
12715 
12716 END IF;
12717 --
12718 l_component_type             := 'AMB_JLT';
12719 l_component_code             := 'FV_AP_DIRECT_EXP_INVOICE_CR';
12720 l_component_type_code        := 'S';
12721 l_component_appl_id          :=  200;
12722 l_amb_context_code           := 'DEFAULT';
12723 l_entity_code                := 'AP_INVOICES';
12724 l_event_class_code           := 'INVOICES';
12725 l_event_type_code            := 'INVOICES_ALL';
12726 l_line_definition_owner_code := 'S';
12727 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
12728 --
12729 l_balance_type_code          := 'A';
12730 l_segment                     := NULL;
12731 l_ccid                        := NULL;
12732 l_adr_transaction_coa_id      := NULL;
12733 l_adr_accounting_coa_id       := NULL;
12734 l_adr_flexfield_segment_code  := NULL;
12735 l_adr_flex_value_set_id       := NULL;
12736 l_adr_value_type_code         := NULL;
12737 l_adr_value_combination_id    := NULL;
12738 l_adr_value_segment_code      := NULL;
12739 
12740 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12741 l_bflow_class_code           := '';    -- 4219869 Business Flow
12742 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12743 l_budgetary_control_flag     := 'Y';
12744 
12745 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12749 l_acc_rev_flag               := NULL;          -- 4262811
12746 l_bflow_applied_to_amt       := NULL; -- 5132302
12747 l_entered_amt_idx            := NULL;          -- 4262811
12748 l_accted_amt_idx             := NULL;          -- 4262811
12750 l_accrual_line_num           := NULL;          -- 4262811
12751 l_tmp_amt                    := NULL;          -- 4262811
12752 --
12753  
12754 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12755     l_balance_type_code <> 'B' THEN
12756 IF (NVL(p_source_13,'
12757 ') =  'STANDARD' OR 
12758 NVL(p_source_13,'
12759 ') =  'MIXED' OR 
12760 NVL(p_source_13,'
12761 ') =  'INTEREST' OR 
12762 NVL(p_source_13,'
12763 ') =  'EXPENSE REPORT') AND 
12764 (NVL(p_source_8,'
12765 ') =  'ITEM' OR 
12766 NVL(p_source_8,'
12767 ') =  'FREIGHT' OR 
12768 NVL(p_source_8,'
12769 ') =  'MISCELLANEOUS' OR 
12770 NVL(p_source_8,'
12771 ') =  'ACCRUAL') AND 
12772 (NVL(p_source_9,'
12773 ') =  'N' OR 
12774 (p_source_12 IS NOT NULL AND 
12775 NVL(p_source_9,'
12776 ') =  'Y')
12777 ) AND NVL(p_source_11,'
12778 ') <>  'Y'
12779  THEN 
12780 
12781    --
12782    XLA_AE_LINES_PKG.SetNewLine;
12783 
12784    p_balance_type_code          := l_balance_type_code;
12785    -- set the flag so later we will know whether the gain loss line needs to be created
12786    
12787    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12788      p_actual_flag :='A';
12789    END IF;
12790 
12791    --
12792    -- bulk performance
12793    --
12794    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12795                                       p_header_num   => 0); -- 4262811
12796    --
12797    -- set accounting line options
12798    --
12799    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12800            p_natural_side_code          => 'C'
12801          , p_gain_or_loss_flag          => 'N'
12802          , p_gl_transfer_mode_code      => 'S'
12803          , p_acct_entry_type_code       => 'A'
12804          , p_switch_side_flag           => 'Y'
12805          , p_merge_duplicate_code       => 'N'
12806          );
12807    --
12808    l_acc_rev_natural_side_code := 'D';  -- 4262811
12809    -- 
12810    --
12811    -- set accounting line type info
12812    --
12813    xla_ae_lines_pkg.SetAcctLineType
12814       (p_component_type             => l_component_type
12815       ,p_event_type_code            => l_event_type_code
12816       ,p_line_definition_owner_code => l_line_definition_owner_code
12817       ,p_line_definition_code       => l_line_definition_code
12818       ,p_accounting_line_code       => l_component_code
12819       ,p_accounting_line_type_code  => l_component_type_code
12820       ,p_accounting_line_appl_id    => l_component_appl_id
12821       ,p_amb_context_code           => l_amb_context_code
12822       ,p_entity_code                => l_entity_code
12823       ,p_event_class_code           => l_event_class_code);
12824    --
12825    -- set accounting class
12826    --
12827    xla_ae_lines_pkg.SetAcctClass(
12828            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
12829          , p_ae_header_id           => l_ae_header_id
12830          );
12831 
12832    --
12833    -- set rounding class
12834    --
12835    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12836                       'ACCOUNTSPAYABLE';
12837 
12838    --
12839    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12840    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12841    --
12842    -- bulk performance
12843    --
12844    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12845 
12846    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12847       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12848 
12849    -- 4955764
12850    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12852 
12853    -- 4458381 Public Sector Enh
12854    
12855    --
12856    -- set accounting attributes for the line type
12857    --
12858    l_entered_amt_idx := 24;
12859    l_accted_amt_idx  := 29;
12860    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
12861    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12862    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
12863    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
12864    l_rec_acct_attrs.array_num_value(2)  := 
12865 xla_ae_sources_pkg.GetSystemSourceNum(
12866    p_source_code           => 'XLA_EVENT_APPL_ID'
12867  , p_source_type_code      => 'Y'
12868  , p_source_application_id =>  602
12869 );
12870    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
12871    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
12872    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
12873    l_rec_acct_attrs.array_char_value(4)  := 
12874 xla_ae_sources_pkg.GetSystemSourceChar(
12875    p_source_code           => 'XLA_ENTITY_CODE'
12876  , p_source_type_code      => 'Y'
12877  , p_source_application_id =>  602
12878 );
12882    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
12879    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
12880    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
12881    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
12883    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
12884    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
12885    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
12886    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
12887    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12888    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
12889    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
12890    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
12891    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
12892    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
12893    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12894    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
12895    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
12896    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
12897    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
12898    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
12899    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
12900    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
12901    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
12902    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
12903    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
12904    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
12905    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
12906    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
12907    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
12908    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
12909    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
12910    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
12911    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
12912    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
12913    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
12914    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
12915    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
12916    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
12917    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
12918    l_rec_acct_attrs.array_num_value(24)  := p_source_10;
12919    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
12920    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
12921    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
12922    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
12923    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
12924    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
12925    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
12926    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
12927    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
12928    l_rec_acct_attrs.array_num_value(29)  := p_source_53;
12929    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
12930    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
12931    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
12932    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
12933    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
12934    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
12935    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
12936    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
12937    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
12938    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
12939    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
12940    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
12941    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
12942    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
12943    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
12944    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
12945    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
12946    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
12947    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
12948    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
12949    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
12950    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
12951    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
12952    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
12953    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
12954    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
12955    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
12956    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
12957    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
12958    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
12959 
12960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12962 
12966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12963    ---------------------------------------------------------------------------------------------------------------
12964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12965    ---------------------------------------------------------------------------------------------------------------
12967 
12968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12970 
12971    IF xla_accounting_cache_pkg.GetValueChar
12972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12974    AND l_bflow_method_code = 'PRIOR_ENTRY'
12975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12978        )
12979    THEN
12980          xla_ae_lines_pkg.BflowUpgEntry
12981            (p_business_method_code    => l_bflow_method_code
12982            ,p_business_class_code     => l_bflow_class_code
12983            ,p_balance_type            => l_balance_type_code);
12984    ELSE
12985       NULL;
12986 -- No business flow processing for business flow method of NONE.
12987    END IF;
12988 
12989    --
12990    -- call analytical criteria
12991    --
12992    
12993    --
12994    -- call description
12995    --
12996    
12997 xla_ae_lines_pkg.SetLineDescription(
12998    p_ae_header_id => l_ae_header_id
12999   ,p_description  => Description_2 (
13000      p_application_id         => p_application_id
13001    , p_ae_header_id           => l_ae_header_id 
13002 , p_source_1 => p_source_1
13003    )
13004 );
13005 
13006 
13007    --
13008    -- call ADRs
13009    -- Bug 4922099
13010    --
13011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13012         (NVL(l_actual_upg_option, 'N') = 'O') OR
13013         (NVL(l_enc_upg_option, 'N') = 'O')
13014       )
13015    THEN
13016    NULL;
13017    --
13018    --
13019    
13020   l_ccid := AcctDerRule_3(
13021            p_application_id           => p_application_id
13022          , p_ae_header_id             => l_ae_header_id 
13023 , p_source_2 => p_source_2
13024          , x_transaction_coa_id       => l_adr_transaction_coa_id
13025          , x_accounting_coa_id        => l_adr_accounting_coa_id
13026          , x_value_type_code          => l_adr_value_type_code
13027          , p_side                     => 'NA'
13028    );
13029 
13030    xla_ae_lines_pkg.set_ccid(
13031     p_code_combination_id          => l_ccid
13032   , p_value_type_code              => l_adr_value_type_code
13033   , p_transaction_coa_id           => l_adr_transaction_coa_id
13034   , p_accounting_coa_id            => l_adr_accounting_coa_id
13035   , p_adr_code                     => 'AP_INVOICE_DIST'
13036   , p_adr_type_code                => 'S'
13037   , p_component_type               => l_component_type
13038   , p_component_code               => l_component_code
13039   , p_component_type_code          => l_component_type_code
13040   , p_component_appl_id            => l_component_appl_id
13041   , p_amb_context_code             => l_amb_context_code
13042   , p_side                         => 'NA'
13043   );
13044 
13045 
13046    l_segment := AcctDerRule_12(
13047            p_application_id           => p_application_id
13048          , p_ae_header_id             => l_ae_header_id 
13049 , p_source_7 => p_source_7
13050 , p_source_8 => p_source_8
13051 , p_source_8_meaning => p_source_8_meaning
13052 , p_source_9 => p_source_9
13053 , p_source_10 => p_source_10
13054 , p_source_11 => p_source_11
13055 , p_source_11_meaning => p_source_11_meaning
13056          , x_transaction_coa_id       => l_adr_transaction_coa_id
13057          , x_accounting_coa_id        => l_adr_accounting_coa_id
13058          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13059          , x_flex_value_set_id        => l_adr_flex_value_set_id
13060          , x_value_type_code          => l_adr_value_type_code
13061          , x_value_combination_id     => l_adr_value_combination_id
13062          , x_value_segment_code       => l_adr_value_segment_code
13063          , p_side                     => 'NA'
13064          , p_override_seg_flag        => 'Y'
13065    );
13066 
13067    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13068 
13069       xla_ae_lines_pkg.set_segment(
13070           p_to_segment_code         => 'GL_ACCOUNT'
13071         , p_segment_value           => l_segment
13072         , p_from_segment_code       => l_adr_value_segment_code
13073         , p_from_combination_id     => l_adr_value_combination_id
13074         , p_value_type_code         => l_adr_value_type_code
13075         , p_transaction_coa_id      => l_adr_transaction_coa_id
13076         , p_accounting_coa_id       => l_adr_accounting_coa_id
13077         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13078         , p_flex_value_set_id       => l_adr_flex_value_set_id
13079         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
13080         , p_adr_type_code           => 'S'
13084         , p_component_appl_id       => l_component_appl_id
13081         , p_component_type          => l_component_type
13082         , p_component_code          => l_component_code
13083         , p_component_type_code     => l_component_type_code
13085         , p_amb_context_code        => l_amb_context_code
13086         , p_entity_code             => 'AP_INVOICES'
13087         , p_event_class_code        => 'INVOICES'
13088         , p_side                    => 'NA'
13089         );
13090 
13091   END IF;
13092 
13093    --
13094    --
13095    END IF;
13096    --
13097    -- Bug 4922099
13098    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13099           (NVL(l_enc_upg_option, 'N') = 'O')
13100         ) AND
13101         (l_bflow_method_code = 'PRIOR_ENTRY')
13102       )
13103    THEN
13104       IF
13105       --
13106       1 = 2
13107       --
13108       THEN
13109       xla_accounting_err_pkg.build_message
13110                                     (p_appli_s_name            => 'XLA'
13111                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13112                                     ,p_token_1                 => 'LINE_NUMBER'
13113                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13114                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13115                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13116                                                                              l_component_type
13117                                                                             ,l_component_code
13118                                                                             ,l_component_type_code
13119                                                                             ,l_component_appl_id
13120                                                                             ,l_amb_context_code
13121                                                                             ,l_entity_code
13122                                                                             ,l_event_class_code
13123                                                                            )
13124                                     ,p_token_3                 => 'OWNER'
13125                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13126                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13127                                                                           ,p_lookup_code    => l_component_type_code
13128                                                                          )
13129                                     ,p_token_4                 => 'PRODUCT_NAME'
13130                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13131                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13132                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13133                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13134                                     ,p_ae_header_id            =>  NULL
13135                                        );
13136 
13137         IF (C_LEVEL_ERROR>= g_log_level) THEN
13138                  trace
13139                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13140                       ,p_level    => C_LEVEL_ERROR
13141                       ,p_module   => l_log_module);
13142         END IF;
13143       END IF;
13144    END IF;
13145    --
13146    --
13147    ------------------------------------------------------------------------------------------------
13148    -- 4219869 Business Flow
13149    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13150    -- Prior Entry.  Currently, the following code is always generated.
13151    ------------------------------------------------------------------------------------------------
13152    XLA_AE_LINES_PKG.ValidateCurrentLine;
13153 
13154    ------------------------------------------------------------------------------------
13155    -- 4219869 Business Flow
13156    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13157    ------------------------------------------------------------------------------------
13158    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13159 
13160    ----------------------------------------------------------------------------------
13161    -- 4219869 Business Flow
13162    -- Update journal entry status -- Need to generate this within IF <condition>
13163    ----------------------------------------------------------------------------------
13164    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13165          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13166          ,p_balance_type_code => l_balance_type_code
13167          );
13168 
13169    -------------------------------------------------------------------------------------------
13170    -- 4262811 - Generate the Accrual Reversal lines
13171    -------------------------------------------------------------------------------------------
13172    BEGIN
13173       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13174                               (g_array_event(p_event_id).array_value_num('header_index'));
13178    EXCEPTION
13175       IF l_acc_rev_flag IS NULL THEN
13176          l_acc_rev_flag := 'N';
13177       END IF;
13179       WHEN OTHERS THEN
13180          l_acc_rev_flag := 'N';
13181    END;
13182    --
13183    IF (l_acc_rev_flag = 'Y') THEN
13184 
13185        -- 4645092  ------------------------------------------------------------------------------
13186        -- To allow MPA report to determine if it should generate report process
13187        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13188        ------------------------------------------------------------------------------------------
13189 
13190        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13191        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13192    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13193    -- call ADRs
13194    -- Bug 4922099
13195    --
13196    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13197         (NVL(l_actual_upg_option, 'N') = 'O') OR
13198         (NVL(l_enc_upg_option, 'N') = 'O')
13199       )
13200    THEN
13201    NULL;
13202    --
13203    --
13204    
13205   l_ccid := AcctDerRule_3(
13206            p_application_id           => p_application_id
13207          , p_ae_header_id             => l_ae_header_id 
13208 , p_source_2 => p_source_2
13209          , x_transaction_coa_id       => l_adr_transaction_coa_id
13210          , x_accounting_coa_id        => l_adr_accounting_coa_id
13211          , x_value_type_code          => l_adr_value_type_code
13212          , p_side                     => 'NA'
13213    );
13214 
13215    xla_ae_lines_pkg.set_ccid(
13216     p_code_combination_id          => l_ccid
13217   , p_value_type_code              => l_adr_value_type_code
13218   , p_transaction_coa_id           => l_adr_transaction_coa_id
13219   , p_accounting_coa_id            => l_adr_accounting_coa_id
13220   , p_adr_code                     => 'AP_INVOICE_DIST'
13221   , p_adr_type_code                => 'S'
13222   , p_component_type               => l_component_type
13223   , p_component_code               => l_component_code
13224   , p_component_type_code          => l_component_type_code
13225   , p_component_appl_id            => l_component_appl_id
13226   , p_amb_context_code             => l_amb_context_code
13227   , p_side                         => 'NA'
13228   );
13229 
13230 
13231    l_segment := AcctDerRule_12(
13232            p_application_id           => p_application_id
13233          , p_ae_header_id             => l_ae_header_id 
13234 , p_source_7 => p_source_7
13235 , p_source_8 => p_source_8
13236 , p_source_8_meaning => p_source_8_meaning
13237 , p_source_9 => p_source_9
13238 , p_source_10 => p_source_10
13239 , p_source_11 => p_source_11
13240 , p_source_11_meaning => p_source_11_meaning
13241          , x_transaction_coa_id       => l_adr_transaction_coa_id
13242          , x_accounting_coa_id        => l_adr_accounting_coa_id
13243          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13244          , x_flex_value_set_id        => l_adr_flex_value_set_id
13245          , x_value_type_code          => l_adr_value_type_code
13246          , x_value_combination_id     => l_adr_value_combination_id
13247          , x_value_segment_code       => l_adr_value_segment_code
13248          , p_side                     => 'NA'
13249          , p_override_seg_flag        => 'Y'
13250    );
13251 
13252    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13253 
13254       xla_ae_lines_pkg.set_segment(
13255           p_to_segment_code         => 'GL_ACCOUNT'
13256         , p_segment_value           => l_segment
13257         , p_from_segment_code       => l_adr_value_segment_code
13258         , p_from_combination_id     => l_adr_value_combination_id
13259         , p_value_type_code         => l_adr_value_type_code
13260         , p_transaction_coa_id      => l_adr_transaction_coa_id
13261         , p_accounting_coa_id       => l_adr_accounting_coa_id
13262         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13263         , p_flex_value_set_id       => l_adr_flex_value_set_id
13264         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
13265         , p_adr_type_code           => 'S'
13266         , p_component_type          => l_component_type
13267         , p_component_code          => l_component_code
13268         , p_component_type_code     => l_component_type_code
13269         , p_component_appl_id       => l_component_appl_id
13270         , p_amb_context_code        => l_amb_context_code
13271         , p_entity_code             => 'AP_INVOICES'
13272         , p_event_class_code        => 'INVOICES'
13273         , p_side                    => 'NA'
13274         );
13275 
13276   END IF;
13277 
13278    --
13279    --
13280    END IF;
13281 
13282        --
13283        -- Update the line information that should be overwritten
13284        --
13285        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13286                                          p_header_num   => 1);
13287        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13288 
13289        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13290 
13291        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13292           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13296       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13293        END IF;
13294 
13295       --
13297       --
13298       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13299           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13300       ELSE
13301           ---------------------------------------------------------------------------------------------------
13302           -- 4262811a Switch Sign
13303           ---------------------------------------------------------------------------------------------------
13304           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13305           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13306                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13307           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13308                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13309           -- 5132302
13310           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13311                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13312 
13313       END IF;
13314 
13315       -- 4955764
13316       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13317       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13318 
13319 
13320       XLA_AE_LINES_PKG.ValidateCurrentLine;
13321       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13322 
13323       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13324                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13325                ,p_balance_type_code => l_balance_type_code);
13326 
13327    END IF;
13328 
13329    -----------------------------------------------------------------------------------------
13330    -- 4262811 Multiperiod Accounting
13331    -----------------------------------------------------------------------------------------
13332      -- No MPA option is assigned.
13333 
13334 
13335 END IF;
13336 END IF;
13337 --
13338 
13339 --
13340 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13341    trace
13342       (p_msg      => 'END of AcctLineType_30'
13343       ,p_level    => C_LEVEL_PROCEDURE
13344       ,p_module   => l_log_module);
13345 END IF;
13346 --
13347 EXCEPTION
13348   WHEN xla_exceptions_pkg.application_exception THEN
13349       RAISE;
13350   WHEN OTHERS THEN
13351        xla_exceptions_pkg.raise_message
13352            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_30');
13353 END AcctLineType_30;
13354 --
13355 
13356 ---------------------------------------
13357 --
13358 -- PRIVATE FUNCTION
13359 --         AcctLineType_31
13360 --
13361 ---------------------------------------
13362 PROCEDURE AcctLineType_31 (
13363   p_application_id        IN NUMBER
13364  ,p_event_id              IN NUMBER
13365  ,p_calculate_acctd_flag  IN VARCHAR2
13366  ,p_calculate_g_l_flag    IN VARCHAR2
13367  ,p_actual_flag           IN OUT VARCHAR2
13368  ,p_balance_type_code     OUT VARCHAR2
13369  ,p_gain_or_loss_ref      OUT VARCHAR2
13370  
13371 --Invoice Distribution Description
13372  , p_source_1            IN VARCHAR2
13373 --Invoice Distribution Account
13374  , p_source_2            IN NUMBER
13375 --Federal Fund Category
13376  , p_source_4            IN VARCHAR2
13377 --Federal Fund Expired Status
13378  , p_source_5            IN VARCHAR2
13379 --Federal Fund Category Description
13380  , p_source_6            IN VARCHAR2
13381 --Invoice Distribution Type
13382  , p_source_8            IN VARCHAR2
13383  , p_source_8_meaning    IN VARCHAR2
13384 --Federal Prior Year Flag
13385  , p_source_9            IN VARCHAR2
13386 --Invoice Distribution Encumbrance Amount
13387  , p_source_10            IN NUMBER
13388 --Accrue on Receipt Option
13389  , p_source_11            IN VARCHAR2
13390  , p_source_11_meaning    IN VARCHAR2
13391 --Purchase Order Distribution Identifier
13392  , p_source_12            IN NUMBER
13393 --Invoice Type
13394  , p_source_13            IN VARCHAR2
13395  , p_source_13_meaning    IN VARCHAR2
13396 --Accounting Reversal Indicator
13397  , p_source_15            IN VARCHAR2
13398 --Distribution Link Type
13399  , p_source_17            IN VARCHAR2
13400 --Allocation to Main Distribution Identifier
13401  , p_source_19            IN NUMBER
13402 --Invoice Identifier
13403  , p_source_20            IN NUMBER
13404 --Business Flow Accounts Payable Application Identifier
13405  , p_source_21            IN NUMBER
13406 --Business Flow Invoice Distribution Type
13407  , p_source_22            IN VARCHAR2
13408 --Business Flow Invoice Entity Code
13409  , p_source_23            IN VARCHAR2
13410 --Business Flow Invoice Distribution Identifier
13411  , p_source_24            IN NUMBER
13412 --Business Flow Invoice Identifier
13413  , p_source_25            IN NUMBER
13414 --Invoice Distribution Identifier
13415  , p_source_26            IN NUMBER
13416 --Payables Encumbrance Upgrade Credit Account
13417  , p_source_27            IN NUMBER
13418 --Payables Encumbrance Upgrade Credit Amount
13419  , p_source_28            IN NUMBER
13420 --Invoice Currency Code
13424 --Payables Encumbrance Upgrade Debit Account
13421  , p_source_29            IN VARCHAR2
13422 --Payables Encumbrance Upgrade Credit Base Amount
13423  , p_source_30            IN NUMBER
13425  , p_source_31            IN NUMBER
13426 --Payables Encumbrance Upgrade Debit Amount
13427  , p_source_32            IN NUMBER
13428 --Payables Encumbrance Upgrade Debit Base Amount
13429  , p_source_33            IN NUMBER
13430 --Payables Encumbrance Upgrade Option
13431  , p_source_34            IN VARCHAR2
13432 --Invoice Exchange Date
13433  , p_source_36            IN DATE
13434 --Invoice Exchange Rate
13435  , p_source_37            IN NUMBER
13436 --Invoice Exchange Rate Type
13437  , p_source_38            IN VARCHAR2
13438 --Deferred Accounting End Date
13439  , p_source_39            IN DATE
13440 --Deferred Accounting Option
13441  , p_source_40            IN VARCHAR2
13442 --Deferred Accounting Start Date
13443  , p_source_41            IN DATE
13444 --Override Accounted Amount Indicator
13445  , p_source_42            IN VARCHAR2
13446  , p_source_42_meaning    IN VARCHAR2
13447 --Invoice Supplier Identifier
13448  , p_source_43            IN NUMBER
13449 --Invoice Supplier Site Identifier
13450  , p_source_44            IN NUMBER
13451 --Third Party Type
13452  , p_source_45            IN VARCHAR2
13453 --Parent Reversal Identifier
13454  , p_source_46            IN NUMBER
13455 --Invoice Distribution Statistical Amount
13456  , p_source_47            IN NUMBER
13457 --Invoice Distribution Tax Line Identifier
13458  , p_source_48            IN NUMBER
13459 --Invoice Distribution Tax Distribution Identifier from Tax
13460  , p_source_49            IN NUMBER
13461 --Invoice Distribution Summary Tax Line Identifier
13462  , p_source_50            IN NUMBER
13463 --Payables Upgrade Credit Encumbrance Type Identifier
13464  , p_source_51            IN NUMBER
13465 --Payables Upgrade Debit Encumbrance Type Identifier
13466  , p_source_52            IN NUMBER
13467 --Invoice Distribution Encumbrance Ledger Amount
13468  , p_source_53            IN NUMBER
13469 --Invoice Distribution Amount
13470  , p_source_55            IN NUMBER
13471 )
13472 IS
13473 
13474 l_component_type              VARCHAR2(80);
13475 l_component_code              VARCHAR2(30);
13476 l_component_type_code         VARCHAR2(1);
13477 l_component_appl_id           INTEGER;
13478 l_amb_context_code            VARCHAR2(30);
13479 l_entity_code                 VARCHAR2(30);
13480 l_event_class_code            VARCHAR2(30);
13481 l_ae_header_id                NUMBER;
13482 l_event_type_code             VARCHAR2(30);
13483 l_line_definition_code        VARCHAR2(30);
13484 l_line_definition_owner_code  VARCHAR2(1);
13485 --
13486 -- adr variables
13487 l_segment                     VARCHAR2(30);
13488 l_ccid                        NUMBER;
13489 l_adr_transaction_coa_id      NUMBER;
13490 l_adr_accounting_coa_id       NUMBER;
13491 l_adr_flexfield_segment_code  VARCHAR2(30);
13492 l_adr_flex_value_set_id       NUMBER;
13493 l_adr_value_type_code         VARCHAR2(30);
13494 l_adr_value_combination_id    NUMBER;
13495 l_adr_value_segment_code      VARCHAR2(30);
13496 
13497 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13498 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13499 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13500 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13501 
13502 -- 4262811 Variables ------------------------------------------------------------------------------------------
13503 l_entered_amt_idx             NUMBER;
13504 l_accted_amt_idx              NUMBER;
13505 l_acc_rev_flag                VARCHAR2(1);
13506 l_accrual_line_num            NUMBER;
13507 l_tmp_amt                     NUMBER;
13508 l_acc_rev_natural_side_code   VARCHAR2(1);
13509 
13510 l_num_entries                 NUMBER;
13511 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13512 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13513 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13514 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13515 l_recog_line_1                NUMBER;
13516 l_recog_line_2                NUMBER;
13517 
13518 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13519 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13520 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13521 
13522 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13523 
13524 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13525 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13526 
13527 ---------------------------------------------------------------------------------------------------------------
13528 
13529 
13530 --
13531 -- bulk performance
13532 --
13533 l_balance_type_code           VARCHAR2(1);
13534 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13535 l_log_module                  VARCHAR2(240);
13536 
13537 --
13538 -- Upgrade strategy
13539 --
13540 l_actual_upg_option           VARCHAR2(1);
13541 l_enc_upg_option           VARCHAR2(1);
13542 
13543 --
13544 BEGIN
13545 --
13546 IF g_log_enabled THEN
13550 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13547       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
13548 END IF;
13549 --
13551 
13552       trace
13553          (p_msg      => 'BEGIN of AcctLineType_31'
13554          ,p_level    => C_LEVEL_PROCEDURE
13555          ,p_module   => l_log_module);
13556 
13557 END IF;
13558 --
13559 l_component_type             := 'AMB_JLT';
13560 l_component_code             := 'FV_AP_DIRECT_EXP_INVOICE_DR';
13561 l_component_type_code        := 'S';
13562 l_component_appl_id          :=  200;
13563 l_amb_context_code           := 'DEFAULT';
13564 l_entity_code                := 'AP_INVOICES';
13565 l_event_class_code           := 'INVOICES';
13566 l_event_type_code            := 'INVOICES_ALL';
13567 l_line_definition_owner_code := 'S';
13568 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
13569 --
13570 l_balance_type_code          := 'A';
13571 l_segment                     := NULL;
13572 l_ccid                        := NULL;
13573 l_adr_transaction_coa_id      := NULL;
13574 l_adr_accounting_coa_id       := NULL;
13575 l_adr_flexfield_segment_code  := NULL;
13576 l_adr_flex_value_set_id       := NULL;
13577 l_adr_value_type_code         := NULL;
13578 l_adr_value_combination_id    := NULL;
13579 l_adr_value_segment_code      := NULL;
13580 
13581 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13582 l_bflow_class_code           := '';    -- 4219869 Business Flow
13583 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13584 l_budgetary_control_flag     := 'Y';
13585 
13586 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13587 l_bflow_applied_to_amt       := NULL; -- 5132302
13588 l_entered_amt_idx            := NULL;          -- 4262811
13589 l_accted_amt_idx             := NULL;          -- 4262811
13590 l_acc_rev_flag               := NULL;          -- 4262811
13591 l_accrual_line_num           := NULL;          -- 4262811
13592 l_tmp_amt                    := NULL;          -- 4262811
13593 --
13594  
13595 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13596     l_balance_type_code <> 'B' THEN
13597 IF (NVL(p_source_13,'
13598 ') =  'STANDARD' OR 
13599 NVL(p_source_13,'
13600 ') =  'MIXED' OR 
13601 NVL(p_source_13,'
13602 ') =  'INTEREST' OR 
13603 NVL(p_source_13,'
13604 ') =  'EXPENSE REPORT') AND 
13605 (NVL(p_source_8,'
13606 ') =  'ITEM' OR 
13607 NVL(p_source_8,'
13608 ') =  'FREIGHT' OR 
13609 NVL(p_source_8,'
13610 ') =  'MISCELLANEOUS' OR 
13611 NVL(p_source_8,'
13612 ') =  'ACCRUAL') AND 
13613 (NVL(p_source_9,'
13614 ') =  'N' OR 
13615 (p_source_12 IS NOT NULL AND 
13616 NVL(p_source_9,'
13617 ') =  'Y')
13618 ) AND NVL(p_source_11,'
13619 ') <>  'Y'
13620  THEN 
13621 
13622    --
13623    XLA_AE_LINES_PKG.SetNewLine;
13624 
13625    p_balance_type_code          := l_balance_type_code;
13626    -- set the flag so later we will know whether the gain loss line needs to be created
13627    
13628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13629      p_actual_flag :='A';
13630    END IF;
13631 
13632    --
13633    -- bulk performance
13634    --
13635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13636                                       p_header_num   => 0); -- 4262811
13637    --
13638    -- set accounting line options
13639    --
13640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13641            p_natural_side_code          => 'D'
13642          , p_gain_or_loss_flag          => 'N'
13643          , p_gl_transfer_mode_code      => 'S'
13644          , p_acct_entry_type_code       => 'A'
13645          , p_switch_side_flag           => 'Y'
13646          , p_merge_duplicate_code       => 'N'
13647          );
13648    --
13649    l_acc_rev_natural_side_code := 'C';  -- 4262811
13650    -- 
13651    --
13652    -- set accounting line type info
13653    --
13654    xla_ae_lines_pkg.SetAcctLineType
13655       (p_component_type             => l_component_type
13656       ,p_event_type_code            => l_event_type_code
13657       ,p_line_definition_owner_code => l_line_definition_owner_code
13658       ,p_line_definition_code       => l_line_definition_code
13659       ,p_accounting_line_code       => l_component_code
13660       ,p_accounting_line_type_code  => l_component_type_code
13661       ,p_accounting_line_appl_id    => l_component_appl_id
13662       ,p_amb_context_code           => l_amb_context_code
13663       ,p_entity_code                => l_entity_code
13664       ,p_event_class_code           => l_event_class_code);
13665    --
13666    -- set accounting class
13667    --
13668    xla_ae_lines_pkg.SetAcctClass(
13669            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
13670          , p_ae_header_id           => l_ae_header_id
13671          );
13672 
13673    --
13674    -- set rounding class
13675    --
13676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13677                       'ACCOUNTSPAYABLE';
13678 
13679    --
13680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13682    --
13683    -- bulk performance
13684    --
13685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13689 
13686 
13687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13690    -- 4955764
13691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13693 
13694    -- 4458381 Public Sector Enh
13695    
13696    --
13697    -- set accounting attributes for the line type
13698    --
13699    l_entered_amt_idx := 24;
13700    l_accted_amt_idx  := 29;
13701    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
13702    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13703    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
13704    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
13705    l_rec_acct_attrs.array_num_value(2)  := 
13706 xla_ae_sources_pkg.GetSystemSourceNum(
13707    p_source_code           => 'XLA_EVENT_APPL_ID'
13708  , p_source_type_code      => 'Y'
13709  , p_source_application_id =>  602
13710 );
13711    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
13712    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
13713    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
13714    l_rec_acct_attrs.array_char_value(4)  := 
13715 xla_ae_sources_pkg.GetSystemSourceChar(
13716    p_source_code           => 'XLA_ENTITY_CODE'
13717  , p_source_type_code      => 'Y'
13718  , p_source_application_id =>  602
13719 );
13720    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
13721    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
13722    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
13723    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
13724    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
13725    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
13726    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
13727    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
13728    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13729    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
13730    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
13731    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
13732    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
13733    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
13734    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13735    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
13736    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
13737    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
13738    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
13739    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
13740    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
13741    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
13742    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
13743    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
13744    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
13745    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
13746    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
13747    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
13748    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
13749    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
13750    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
13751    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
13752    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
13753    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
13754    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
13755    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
13756    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
13757    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
13758    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
13759    l_rec_acct_attrs.array_num_value(24)  := p_source_10;
13760    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
13761    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
13762    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
13763    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
13764    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
13765    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
13766    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
13767    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
13768    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
13769    l_rec_acct_attrs.array_num_value(29)  := p_source_53;
13770    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
13771    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
13772    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
13773    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
13774    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
13775    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
13776    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
13777    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
13778    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
13782    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
13779    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
13780    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
13781    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
13783    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
13784    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
13785    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
13786    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
13787    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
13788    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
13789    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
13790    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
13791    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
13792    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
13793    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
13794    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
13795    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
13796    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
13797    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
13798    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
13799    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
13800 
13801    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13802    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13803 
13804    ---------------------------------------------------------------------------------------------------------------
13805    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13806    ---------------------------------------------------------------------------------------------------------------
13807    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13808 
13809    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13810    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13811 
13812    IF xla_accounting_cache_pkg.GetValueChar
13813          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13814          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13815    AND l_bflow_method_code = 'PRIOR_ENTRY'
13816 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13817    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13818          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13819        )
13820    THEN
13821          xla_ae_lines_pkg.BflowUpgEntry
13822            (p_business_method_code    => l_bflow_method_code
13823            ,p_business_class_code     => l_bflow_class_code
13824            ,p_balance_type            => l_balance_type_code);
13825    ELSE
13826       NULL;
13827 -- No business flow processing for business flow method of NONE.
13828    END IF;
13829 
13830    --
13831    -- call analytical criteria
13832    --
13833    
13834    --
13835    -- call description
13836    --
13837    
13838 xla_ae_lines_pkg.SetLineDescription(
13839    p_ae_header_id => l_ae_header_id
13840   ,p_description  => Description_2 (
13841      p_application_id         => p_application_id
13842    , p_ae_header_id           => l_ae_header_id 
13843 , p_source_1 => p_source_1
13844    )
13845 );
13846 
13847 
13848    --
13849    -- call ADRs
13850    -- Bug 4922099
13851    --
13852    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13853         (NVL(l_actual_upg_option, 'N') = 'O') OR
13854         (NVL(l_enc_upg_option, 'N') = 'O')
13855       )
13856    THEN
13857    NULL;
13858    --
13859    --
13860    
13861   l_ccid := AcctDerRule_3(
13862            p_application_id           => p_application_id
13863          , p_ae_header_id             => l_ae_header_id 
13864 , p_source_2 => p_source_2
13865          , x_transaction_coa_id       => l_adr_transaction_coa_id
13866          , x_accounting_coa_id        => l_adr_accounting_coa_id
13867          , x_value_type_code          => l_adr_value_type_code
13868          , p_side                     => 'NA'
13869    );
13870 
13871    xla_ae_lines_pkg.set_ccid(
13872     p_code_combination_id          => l_ccid
13873   , p_value_type_code              => l_adr_value_type_code
13874   , p_transaction_coa_id           => l_adr_transaction_coa_id
13875   , p_accounting_coa_id            => l_adr_accounting_coa_id
13876   , p_adr_code                     => 'AP_INVOICE_DIST'
13877   , p_adr_type_code                => 'S'
13878   , p_component_type               => l_component_type
13879   , p_component_code               => l_component_code
13880   , p_component_type_code          => l_component_type_code
13881   , p_component_appl_id            => l_component_appl_id
13882   , p_amb_context_code             => l_amb_context_code
13883   , p_side                         => 'NA'
13884   );
13885 
13886 
13887    l_segment := AcctDerRule_8(
13888            p_application_id           => p_application_id
13889          , p_ae_header_id             => l_ae_header_id 
13890 , p_source_4 => p_source_4
13891 , p_source_5 => p_source_5
13892 , p_source_6 => p_source_6
13896          , x_flex_value_set_id        => l_adr_flex_value_set_id
13893          , x_transaction_coa_id       => l_adr_transaction_coa_id
13894          , x_accounting_coa_id        => l_adr_accounting_coa_id
13895          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13897          , x_value_type_code          => l_adr_value_type_code
13898          , x_value_combination_id     => l_adr_value_combination_id
13899          , x_value_segment_code       => l_adr_value_segment_code
13900          , p_side                     => 'NA'
13901          , p_override_seg_flag        => 'Y'
13902    );
13903 
13904    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13905 
13906       xla_ae_lines_pkg.set_segment(
13907           p_to_segment_code         => 'GL_ACCOUNT'
13908         , p_segment_value           => l_segment
13909         , p_from_segment_code       => l_adr_value_segment_code
13910         , p_from_combination_id     => l_adr_value_combination_id
13911         , p_value_type_code         => l_adr_value_type_code
13912         , p_transaction_coa_id      => l_adr_transaction_coa_id
13913         , p_accounting_coa_id       => l_adr_accounting_coa_id
13914         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13915         , p_flex_value_set_id       => l_adr_flex_value_set_id
13916         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
13917         , p_adr_type_code           => 'S'
13918         , p_component_type          => l_component_type
13919         , p_component_code          => l_component_code
13920         , p_component_type_code     => l_component_type_code
13921         , p_component_appl_id       => l_component_appl_id
13922         , p_amb_context_code        => l_amb_context_code
13923         , p_entity_code             => 'AP_INVOICES'
13924         , p_event_class_code        => 'INVOICES'
13925         , p_side                    => 'NA'
13926         );
13927 
13928   END IF;
13929 
13930    --
13931    --
13932    END IF;
13933    --
13934    -- Bug 4922099
13935    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13936           (NVL(l_enc_upg_option, 'N') = 'O')
13937         ) AND
13938         (l_bflow_method_code = 'PRIOR_ENTRY')
13939       )
13940    THEN
13941       IF
13942       --
13943       1 = 2
13944       --
13945       THEN
13946       xla_accounting_err_pkg.build_message
13947                                     (p_appli_s_name            => 'XLA'
13948                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13949                                     ,p_token_1                 => 'LINE_NUMBER'
13950                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13951                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13952                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13953                                                                              l_component_type
13954                                                                             ,l_component_code
13955                                                                             ,l_component_type_code
13956                                                                             ,l_component_appl_id
13957                                                                             ,l_amb_context_code
13958                                                                             ,l_entity_code
13959                                                                             ,l_event_class_code
13960                                                                            )
13961                                     ,p_token_3                 => 'OWNER'
13962                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13963                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13964                                                                           ,p_lookup_code    => l_component_type_code
13965                                                                          )
13966                                     ,p_token_4                 => 'PRODUCT_NAME'
13967                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13968                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13969                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13970                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13971                                     ,p_ae_header_id            =>  NULL
13972                                        );
13973 
13974         IF (C_LEVEL_ERROR>= g_log_level) THEN
13975                  trace
13976                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13977                       ,p_level    => C_LEVEL_ERROR
13978                       ,p_module   => l_log_module);
13979         END IF;
13980       END IF;
13981    END IF;
13982    --
13983    --
13984    ------------------------------------------------------------------------------------------------
13985    -- 4219869 Business Flow
13986    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13987    -- Prior Entry.  Currently, the following code is always generated.
13991    ------------------------------------------------------------------------------------
13988    ------------------------------------------------------------------------------------------------
13989    XLA_AE_LINES_PKG.ValidateCurrentLine;
13990 
13992    -- 4219869 Business Flow
13993    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13994    ------------------------------------------------------------------------------------
13995    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13996 
13997    ----------------------------------------------------------------------------------
13998    -- 4219869 Business Flow
13999    -- Update journal entry status -- Need to generate this within IF <condition>
14000    ----------------------------------------------------------------------------------
14001    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14002          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14003          ,p_balance_type_code => l_balance_type_code
14004          );
14005 
14006    -------------------------------------------------------------------------------------------
14007    -- 4262811 - Generate the Accrual Reversal lines
14008    -------------------------------------------------------------------------------------------
14009    BEGIN
14010       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14011                               (g_array_event(p_event_id).array_value_num('header_index'));
14012       IF l_acc_rev_flag IS NULL THEN
14013          l_acc_rev_flag := 'N';
14014       END IF;
14015    EXCEPTION
14016       WHEN OTHERS THEN
14017          l_acc_rev_flag := 'N';
14018    END;
14019    --
14020    IF (l_acc_rev_flag = 'Y') THEN
14021 
14022        -- 4645092  ------------------------------------------------------------------------------
14023        -- To allow MPA report to determine if it should generate report process
14024        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14025        ------------------------------------------------------------------------------------------
14026 
14027        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14028        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14029    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14030    -- call ADRs
14031    -- Bug 4922099
14032    --
14033    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14034         (NVL(l_actual_upg_option, 'N') = 'O') OR
14035         (NVL(l_enc_upg_option, 'N') = 'O')
14036       )
14037    THEN
14038    NULL;
14039    --
14040    --
14041    
14042   l_ccid := AcctDerRule_3(
14043            p_application_id           => p_application_id
14044          , p_ae_header_id             => l_ae_header_id 
14045 , p_source_2 => p_source_2
14046          , x_transaction_coa_id       => l_adr_transaction_coa_id
14047          , x_accounting_coa_id        => l_adr_accounting_coa_id
14048          , x_value_type_code          => l_adr_value_type_code
14049          , p_side                     => 'NA'
14050    );
14051 
14052    xla_ae_lines_pkg.set_ccid(
14053     p_code_combination_id          => l_ccid
14054   , p_value_type_code              => l_adr_value_type_code
14055   , p_transaction_coa_id           => l_adr_transaction_coa_id
14056   , p_accounting_coa_id            => l_adr_accounting_coa_id
14057   , p_adr_code                     => 'AP_INVOICE_DIST'
14058   , p_adr_type_code                => 'S'
14059   , p_component_type               => l_component_type
14060   , p_component_code               => l_component_code
14061   , p_component_type_code          => l_component_type_code
14062   , p_component_appl_id            => l_component_appl_id
14063   , p_amb_context_code             => l_amb_context_code
14064   , p_side                         => 'NA'
14065   );
14066 
14067 
14068    l_segment := AcctDerRule_8(
14069            p_application_id           => p_application_id
14070          , p_ae_header_id             => l_ae_header_id 
14071 , p_source_4 => p_source_4
14072 , p_source_5 => p_source_5
14073 , p_source_6 => p_source_6
14074          , x_transaction_coa_id       => l_adr_transaction_coa_id
14075          , x_accounting_coa_id        => l_adr_accounting_coa_id
14076          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
14077          , x_flex_value_set_id        => l_adr_flex_value_set_id
14078          , x_value_type_code          => l_adr_value_type_code
14079          , x_value_combination_id     => l_adr_value_combination_id
14080          , x_value_segment_code       => l_adr_value_segment_code
14081          , p_side                     => 'NA'
14082          , p_override_seg_flag        => 'Y'
14083    );
14084 
14085    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
14086 
14087       xla_ae_lines_pkg.set_segment(
14088           p_to_segment_code         => 'GL_ACCOUNT'
14089         , p_segment_value           => l_segment
14090         , p_from_segment_code       => l_adr_value_segment_code
14091         , p_from_combination_id     => l_adr_value_combination_id
14092         , p_value_type_code         => l_adr_value_type_code
14093         , p_transaction_coa_id      => l_adr_transaction_coa_id
14094         , p_accounting_coa_id       => l_adr_accounting_coa_id
14095         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
14096         , p_flex_value_set_id       => l_adr_flex_value_set_id
14097         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
14098         , p_adr_type_code           => 'S'
14099         , p_component_type          => l_component_type
14103         , p_amb_context_code        => l_amb_context_code
14100         , p_component_code          => l_component_code
14101         , p_component_type_code     => l_component_type_code
14102         , p_component_appl_id       => l_component_appl_id
14104         , p_entity_code             => 'AP_INVOICES'
14105         , p_event_class_code        => 'INVOICES'
14106         , p_side                    => 'NA'
14107         );
14108 
14109   END IF;
14110 
14111    --
14112    --
14113    END IF;
14114 
14115        --
14116        -- Update the line information that should be overwritten
14117        --
14118        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14119                                          p_header_num   => 1);
14120        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14121 
14122        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14123 
14124        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14125           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14126        END IF;
14127 
14128       --
14129       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14130       --
14131       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14132           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14133       ELSE
14134           ---------------------------------------------------------------------------------------------------
14135           -- 4262811a Switch Sign
14136           ---------------------------------------------------------------------------------------------------
14137           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14138           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14139                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14140           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14141                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14142           -- 5132302
14143           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14144                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14145 
14146       END IF;
14147 
14148       -- 4955764
14149       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14150       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14151 
14152 
14153       XLA_AE_LINES_PKG.ValidateCurrentLine;
14154       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14155 
14156       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14157                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14158                ,p_balance_type_code => l_balance_type_code);
14159 
14160    END IF;
14161 
14162    -----------------------------------------------------------------------------------------
14163    -- 4262811 Multiperiod Accounting
14164    -----------------------------------------------------------------------------------------
14165      -- No MPA option is assigned.
14166 
14167 
14168 END IF;
14169 END IF;
14170 --
14171 
14172 --
14173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14174    trace
14175       (p_msg      => 'END of AcctLineType_31'
14176       ,p_level    => C_LEVEL_PROCEDURE
14177       ,p_module   => l_log_module);
14178 END IF;
14179 --
14180 EXCEPTION
14181   WHEN xla_exceptions_pkg.application_exception THEN
14182       RAISE;
14183   WHEN OTHERS THEN
14184        xla_exceptions_pkg.raise_message
14185            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_31');
14186 END AcctLineType_31;
14187 --
14188 
14189 ---------------------------------------
14190 --
14191 -- PRIVATE FUNCTION
14192 --         AcctLineType_32
14193 --
14194 ---------------------------------------
14195 PROCEDURE AcctLineType_32 (
14196   p_application_id        IN NUMBER
14197  ,p_event_id              IN NUMBER
14198  ,p_calculate_acctd_flag  IN VARCHAR2
14199  ,p_calculate_g_l_flag    IN VARCHAR2
14200  ,p_actual_flag           IN OUT VARCHAR2
14201  ,p_balance_type_code     OUT VARCHAR2
14202  ,p_gain_or_loss_ref      OUT VARCHAR2
14203  
14204 --Invoice Distribution Description
14205  , p_source_1            IN VARCHAR2
14206 --Invoice Distribution Account
14207  , p_source_2            IN NUMBER
14208 --Federal Anticipation
14209  , p_source_3            IN VARCHAR2
14210 --Invoice Distribution Type
14211  , p_source_8            IN VARCHAR2
14212  , p_source_8_meaning    IN VARCHAR2
14213 --Federal Prior Year Flag
14214  , p_source_9            IN VARCHAR2
14215 --Invoice Type
14216  , p_source_13            IN VARCHAR2
14217  , p_source_13_meaning    IN VARCHAR2
14218 --Federal Adjustment Type
14219  , p_source_14            IN VARCHAR2
14220 --Accounting Reversal Indicator
14221  , p_source_15            IN VARCHAR2
14222 --Distribution Link Type
14223  , p_source_17            IN VARCHAR2
14224 --Allocation to Main Distribution Identifier
14225  , p_source_19            IN NUMBER
14226 --Invoice Identifier
14230 --Business Flow Invoice Distribution Type
14227  , p_source_20            IN NUMBER
14228 --Business Flow Accounts Payable Application Identifier
14229  , p_source_21            IN NUMBER
14231  , p_source_22            IN VARCHAR2
14232 --Business Flow Invoice Entity Code
14233  , p_source_23            IN VARCHAR2
14234 --Business Flow Invoice Distribution Identifier
14235  , p_source_24            IN NUMBER
14236 --Business Flow Invoice Identifier
14237  , p_source_25            IN NUMBER
14238 --Invoice Distribution Identifier
14239  , p_source_26            IN NUMBER
14240 --Payables Encumbrance Upgrade Credit Account
14241  , p_source_27            IN NUMBER
14242 --Payables Encumbrance Upgrade Credit Amount
14243  , p_source_28            IN NUMBER
14244 --Invoice Currency Code
14245  , p_source_29            IN VARCHAR2
14246 --Payables Encumbrance Upgrade Credit Base Amount
14247  , p_source_30            IN NUMBER
14248 --Payables Encumbrance Upgrade Debit Account
14249  , p_source_31            IN NUMBER
14250 --Payables Encumbrance Upgrade Debit Amount
14251  , p_source_32            IN NUMBER
14252 --Payables Encumbrance Upgrade Debit Base Amount
14253  , p_source_33            IN NUMBER
14254 --Payables Encumbrance Upgrade Option
14255  , p_source_34            IN VARCHAR2
14256 --Federal Anticipated Amt
14257  , p_source_35            IN NUMBER
14258 --Invoice Exchange Date
14259  , p_source_36            IN DATE
14260 --Invoice Exchange Rate
14261  , p_source_37            IN NUMBER
14262 --Invoice Exchange Rate Type
14263  , p_source_38            IN VARCHAR2
14264 --Deferred Accounting End Date
14265  , p_source_39            IN DATE
14266 --Deferred Accounting Option
14267  , p_source_40            IN VARCHAR2
14268 --Deferred Accounting Start Date
14269  , p_source_41            IN DATE
14270 --Override Accounted Amount Indicator
14271  , p_source_42            IN VARCHAR2
14272  , p_source_42_meaning    IN VARCHAR2
14273 --Invoice Supplier Identifier
14274  , p_source_43            IN NUMBER
14275 --Invoice Supplier Site Identifier
14276  , p_source_44            IN NUMBER
14277 --Third Party Type
14278  , p_source_45            IN VARCHAR2
14279 --Parent Reversal Identifier
14280  , p_source_46            IN NUMBER
14281 --Invoice Distribution Tax Line Identifier
14282  , p_source_48            IN NUMBER
14283 --Invoice Distribution Tax Distribution Identifier from Tax
14284  , p_source_49            IN NUMBER
14285 --Invoice Distribution Summary Tax Line Identifier
14286  , p_source_50            IN NUMBER
14287 --Payables Upgrade Credit Encumbrance Type Identifier
14288  , p_source_51            IN NUMBER
14289 --Payables Upgrade Debit Encumbrance Type Identifier
14290  , p_source_52            IN NUMBER
14291 )
14292 IS
14293 
14294 l_component_type              VARCHAR2(80);
14295 l_component_code              VARCHAR2(30);
14296 l_component_type_code         VARCHAR2(1);
14297 l_component_appl_id           INTEGER;
14298 l_amb_context_code            VARCHAR2(30);
14299 l_entity_code                 VARCHAR2(30);
14300 l_event_class_code            VARCHAR2(30);
14301 l_ae_header_id                NUMBER;
14302 l_event_type_code             VARCHAR2(30);
14303 l_line_definition_code        VARCHAR2(30);
14304 l_line_definition_owner_code  VARCHAR2(1);
14305 --
14306 -- adr variables
14307 l_segment                     VARCHAR2(30);
14308 l_ccid                        NUMBER;
14309 l_adr_transaction_coa_id      NUMBER;
14310 l_adr_accounting_coa_id       NUMBER;
14311 l_adr_flexfield_segment_code  VARCHAR2(30);
14312 l_adr_flex_value_set_id       NUMBER;
14313 l_adr_value_type_code         VARCHAR2(30);
14314 l_adr_value_combination_id    NUMBER;
14315 l_adr_value_segment_code      VARCHAR2(30);
14316 
14317 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14318 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14319 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14320 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14321 
14322 -- 4262811 Variables ------------------------------------------------------------------------------------------
14323 l_entered_amt_idx             NUMBER;
14324 l_accted_amt_idx              NUMBER;
14325 l_acc_rev_flag                VARCHAR2(1);
14326 l_accrual_line_num            NUMBER;
14327 l_tmp_amt                     NUMBER;
14328 l_acc_rev_natural_side_code   VARCHAR2(1);
14329 
14330 l_num_entries                 NUMBER;
14331 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14332 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14333 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14334 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14335 l_recog_line_1                NUMBER;
14336 l_recog_line_2                NUMBER;
14337 
14338 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14339 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14340 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14341 
14342 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14343 
14344 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14345 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14346 
14350 --
14347 ---------------------------------------------------------------------------------------------------------------
14348 
14349 
14351 -- bulk performance
14352 --
14353 l_balance_type_code           VARCHAR2(1);
14354 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14355 l_log_module                  VARCHAR2(240);
14356 
14357 --
14358 -- Upgrade strategy
14359 --
14360 l_actual_upg_option           VARCHAR2(1);
14361 l_enc_upg_option           VARCHAR2(1);
14362 
14363 --
14364 BEGIN
14365 --
14366 IF g_log_enabled THEN
14367       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
14368 END IF;
14369 --
14370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14371 
14372       trace
14373          (p_msg      => 'BEGIN of AcctLineType_32'
14374          ,p_level    => C_LEVEL_PROCEDURE
14375          ,p_module   => l_log_module);
14376 
14377 END IF;
14378 --
14379 l_component_type             := 'AMB_JLT';
14380 l_component_code             := 'FV_AP_DM_ DWD_ANPT_PYA_CR';
14381 l_component_type_code        := 'S';
14382 l_component_appl_id          :=  200;
14383 l_amb_context_code           := 'DEFAULT';
14384 l_entity_code                := 'AP_INVOICES';
14385 l_event_class_code           := 'DEBIT MEMOS';
14386 l_event_type_code            := 'DEBIT MEMOS_ALL';
14387 l_line_definition_owner_code := 'S';
14388 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
14389 --
14390 l_balance_type_code          := 'A';
14391 l_segment                     := NULL;
14392 l_ccid                        := NULL;
14393 l_adr_transaction_coa_id      := NULL;
14394 l_adr_accounting_coa_id       := NULL;
14395 l_adr_flexfield_segment_code  := NULL;
14396 l_adr_flex_value_set_id       := NULL;
14397 l_adr_value_type_code         := NULL;
14398 l_adr_value_combination_id    := NULL;
14399 l_adr_value_segment_code      := NULL;
14400 
14401 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14402 l_bflow_class_code           := '';    -- 4219869 Business Flow
14403 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14404 l_budgetary_control_flag     := 'Y';
14405 
14406 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14407 l_bflow_applied_to_amt       := NULL; -- 5132302
14408 l_entered_amt_idx            := NULL;          -- 4262811
14409 l_accted_amt_idx             := NULL;          -- 4262811
14410 l_acc_rev_flag               := NULL;          -- 4262811
14411 l_accrual_line_num           := NULL;          -- 4262811
14412 l_tmp_amt                    := NULL;          -- 4262811
14413 --
14414  
14415 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14416     l_balance_type_code <> 'B' THEN
14417 IF NVL(p_source_13,'
14418 ') =  'DEBIT' AND 
14419 NVL(p_source_9,'
14420 ') =  'Y' AND 
14421 (NVL(p_source_8,'
14422 ') =  'ITEM' OR 
14423 NVL(p_source_8,'
14424 ') =  'ACCRUAL' OR 
14425 NVL(p_source_8,'
14426 ') =  'FREIGHT' OR 
14427 NVL(p_source_8,'
14428 ') =  'MISCELLANEOUS' OR 
14429 NVL(p_source_8,'
14430 ') =  'IPV') AND 
14431 NVL(p_source_14,'
14432 ') =  'Downward' AND 
14433 (NVL(p_source_3,'
14434 ') =  'Anticipated' OR 
14435 NVL(p_source_3,'
14436 ') =  'Partial')
14437  THEN 
14438 
14439    --
14440    XLA_AE_LINES_PKG.SetNewLine;
14441 
14442    p_balance_type_code          := l_balance_type_code;
14443    -- set the flag so later we will know whether the gain loss line needs to be created
14444    
14445    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14446      p_actual_flag :='A';
14447    END IF;
14448 
14449    --
14450    -- bulk performance
14451    --
14452    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14453                                       p_header_num   => 0); -- 4262811
14454    --
14455    -- set accounting line options
14456    --
14457    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14458            p_natural_side_code          => 'D'
14459          , p_gain_or_loss_flag          => 'N'
14460          , p_gl_transfer_mode_code      => 'S'
14461          , p_acct_entry_type_code       => 'A'
14462          , p_switch_side_flag           => 'N'
14463          , p_merge_duplicate_code       => 'N'
14464          );
14465    --
14466    l_acc_rev_natural_side_code := 'C';  -- 4262811
14467    -- 
14468    --
14469    -- set accounting line type info
14470    --
14471    xla_ae_lines_pkg.SetAcctLineType
14472       (p_component_type             => l_component_type
14473       ,p_event_type_code            => l_event_type_code
14474       ,p_line_definition_owner_code => l_line_definition_owner_code
14475       ,p_line_definition_code       => l_line_definition_code
14476       ,p_accounting_line_code       => l_component_code
14477       ,p_accounting_line_type_code  => l_component_type_code
14478       ,p_accounting_line_appl_id    => l_component_appl_id
14479       ,p_amb_context_code           => l_amb_context_code
14480       ,p_entity_code                => l_entity_code
14481       ,p_event_class_code           => l_event_class_code);
14482    --
14483    -- set accounting class
14484    --
14485    xla_ae_lines_pkg.SetAcctClass(
14486            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
14487          , p_ae_header_id           => l_ae_header_id
14488          );
14489 
14490    --
14491    -- set rounding class
14492    --
14496    --
14493    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14494                       'ACCOUNTSPAYABLE';
14495 
14497    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14498    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14499    --
14500    -- bulk performance
14501    --
14502    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14503 
14504    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14505       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14506 
14507    -- 4955764
14508    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14509       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14510 
14511    -- 4458381 Public Sector Enh
14512    
14513    --
14514    -- set accounting attributes for the line type
14515    --
14516    l_entered_amt_idx := 23;
14517    l_accted_amt_idx  := 28;
14518    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14519    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
14520    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
14521    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
14522    l_rec_acct_attrs.array_num_value(2)  := 
14523 xla_ae_sources_pkg.GetSystemSourceNum(
14524    p_source_code           => 'XLA_EVENT_APPL_ID'
14525  , p_source_type_code      => 'Y'
14526  , p_source_application_id =>  602
14527 );
14528    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
14529    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
14530    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
14531    l_rec_acct_attrs.array_char_value(4)  := 
14532 xla_ae_sources_pkg.GetSystemSourceChar(
14533    p_source_code           => 'XLA_ENTITY_CODE'
14534  , p_source_type_code      => 'Y'
14535  , p_source_application_id =>  602
14536 );
14537    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
14538    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
14539    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
14540    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
14541    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
14542    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
14543    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14544    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
14545    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
14546    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
14547    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
14548    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
14549    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14550    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
14551    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
14552    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
14553    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
14554    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
14555    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
14556    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
14557    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
14558    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
14559    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
14560    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
14561    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
14562    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
14563    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
14564    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
14565    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
14566    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
14567    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
14568    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
14569    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
14570    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
14571    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
14572    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
14573    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
14574    l_rec_acct_attrs.array_num_value(23)  := p_source_35;
14575    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
14576    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
14577    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
14578    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
14579    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
14580    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
14581    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
14582    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
14583    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
14584    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
14585    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
14586    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
14590    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
14587    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
14588    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
14589    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
14591    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
14592    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
14593    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
14594    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
14595    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
14596    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
14597    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
14598    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
14599    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
14600    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
14601    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
14602    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
14603    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
14604    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
14605    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
14606    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
14607    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
14608    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
14609    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
14610    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
14611    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
14612    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
14613 
14614    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14615    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14616 
14617    ---------------------------------------------------------------------------------------------------------------
14618    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14619    ---------------------------------------------------------------------------------------------------------------
14620    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14621 
14622    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14623    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14624 
14625    IF xla_accounting_cache_pkg.GetValueChar
14626          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14627          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14628    AND l_bflow_method_code = 'PRIOR_ENTRY'
14629 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14630    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14631          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14632        )
14633    THEN
14634          xla_ae_lines_pkg.BflowUpgEntry
14635            (p_business_method_code    => l_bflow_method_code
14636            ,p_business_class_code     => l_bflow_class_code
14637            ,p_balance_type            => l_balance_type_code);
14638    ELSE
14639       NULL;
14640 -- No business flow processing for business flow method of NONE.
14641    END IF;
14642 
14643    --
14644    -- call analytical criteria
14645    --
14646    
14647    --
14648    -- call description
14649    --
14650    
14651 xla_ae_lines_pkg.SetLineDescription(
14652    p_ae_header_id => l_ae_header_id
14653   ,p_description  => Description_2 (
14654      p_application_id         => p_application_id
14655    , p_ae_header_id           => l_ae_header_id 
14656 , p_source_1 => p_source_1
14657    )
14658 );
14659 
14660 
14661    --
14662    -- call ADRs
14663    -- Bug 4922099
14664    --
14665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14666         (NVL(l_actual_upg_option, 'N') = 'O') OR
14667         (NVL(l_enc_upg_option, 'N') = 'O')
14668       )
14669    THEN
14670    NULL;
14671    --
14672    --
14673    
14674   l_ccid := AcctDerRule_3(
14675            p_application_id           => p_application_id
14676          , p_ae_header_id             => l_ae_header_id 
14677 , p_source_2 => p_source_2
14678          , x_transaction_coa_id       => l_adr_transaction_coa_id
14679          , x_accounting_coa_id        => l_adr_accounting_coa_id
14680          , x_value_type_code          => l_adr_value_type_code
14681          , p_side                     => 'NA'
14682    );
14683 
14684    xla_ae_lines_pkg.set_ccid(
14685     p_code_combination_id          => l_ccid
14686   , p_value_type_code              => l_adr_value_type_code
14687   , p_transaction_coa_id           => l_adr_transaction_coa_id
14688   , p_accounting_coa_id            => l_adr_accounting_coa_id
14689   , p_adr_code                     => 'AP_INVOICE_DIST'
14690   , p_adr_type_code                => 'S'
14691   , p_component_type               => l_component_type
14692   , p_component_code               => l_component_code
14693   , p_component_type_code          => l_component_type_code
14694   , p_component_appl_id            => l_component_appl_id
14695   , p_amb_context_code             => l_amb_context_code
14696   , p_side                         => 'NA'
14697   );
14698 
14699 
14703 , p_source_3 => p_source_3
14700    l_segment := AcctDerRule_5(
14701            p_application_id           => p_application_id
14702          , p_ae_header_id             => l_ae_header_id 
14704          , x_transaction_coa_id       => l_adr_transaction_coa_id
14705          , x_accounting_coa_id        => l_adr_accounting_coa_id
14706          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
14707          , x_flex_value_set_id        => l_adr_flex_value_set_id
14708          , x_value_type_code          => l_adr_value_type_code
14709          , x_value_combination_id     => l_adr_value_combination_id
14710          , x_value_segment_code       => l_adr_value_segment_code
14711          , p_side                     => 'NA'
14712          , p_override_seg_flag        => 'Y'
14713    );
14714 
14715    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
14716 
14717       xla_ae_lines_pkg.set_segment(
14718           p_to_segment_code         => 'GL_ACCOUNT'
14719         , p_segment_value           => l_segment
14720         , p_from_segment_code       => l_adr_value_segment_code
14721         , p_from_combination_id     => l_adr_value_combination_id
14722         , p_value_type_code         => l_adr_value_type_code
14723         , p_transaction_coa_id      => l_adr_transaction_coa_id
14724         , p_accounting_coa_id       => l_adr_accounting_coa_id
14725         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
14726         , p_flex_value_set_id       => l_adr_flex_value_set_id
14727         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
14728         , p_adr_type_code           => 'S'
14729         , p_component_type          => l_component_type
14730         , p_component_code          => l_component_code
14731         , p_component_type_code     => l_component_type_code
14732         , p_component_appl_id       => l_component_appl_id
14733         , p_amb_context_code        => l_amb_context_code
14734         , p_entity_code             => 'AP_INVOICES'
14735         , p_event_class_code        => 'DEBIT MEMOS'
14736         , p_side                    => 'NA'
14737         );
14738 
14739   END IF;
14740 
14741    --
14742    --
14743    END IF;
14744    --
14745    -- Bug 4922099
14746    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14747           (NVL(l_enc_upg_option, 'N') = 'O')
14748         ) AND
14749         (l_bflow_method_code = 'PRIOR_ENTRY')
14750       )
14751    THEN
14752       IF
14753       --
14754       1 = 2
14755       --
14756       THEN
14757       xla_accounting_err_pkg.build_message
14758                                     (p_appli_s_name            => 'XLA'
14759                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14760                                     ,p_token_1                 => 'LINE_NUMBER'
14761                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14762                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14763                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14764                                                                              l_component_type
14765                                                                             ,l_component_code
14766                                                                             ,l_component_type_code
14767                                                                             ,l_component_appl_id
14768                                                                             ,l_amb_context_code
14769                                                                             ,l_entity_code
14770                                                                             ,l_event_class_code
14771                                                                            )
14772                                     ,p_token_3                 => 'OWNER'
14773                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14774                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14775                                                                           ,p_lookup_code    => l_component_type_code
14776                                                                          )
14777                                     ,p_token_4                 => 'PRODUCT_NAME'
14778                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14779                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14780                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14781                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14782                                     ,p_ae_header_id            =>  NULL
14783                                        );
14784 
14785         IF (C_LEVEL_ERROR>= g_log_level) THEN
14786                  trace
14787                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14788                       ,p_level    => C_LEVEL_ERROR
14789                       ,p_module   => l_log_module);
14790         END IF;
14791       END IF;
14792    END IF;
14793    --
14794    --
14795    ------------------------------------------------------------------------------------------------
14796    -- 4219869 Business Flow
14797    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14801 
14798    -- Prior Entry.  Currently, the following code is always generated.
14799    ------------------------------------------------------------------------------------------------
14800    XLA_AE_LINES_PKG.ValidateCurrentLine;
14802    ------------------------------------------------------------------------------------
14803    -- 4219869 Business Flow
14804    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14805    ------------------------------------------------------------------------------------
14806    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14807 
14808    ----------------------------------------------------------------------------------
14809    -- 4219869 Business Flow
14810    -- Update journal entry status -- Need to generate this within IF <condition>
14811    ----------------------------------------------------------------------------------
14812    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14813          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14814          ,p_balance_type_code => l_balance_type_code
14815          );
14816 
14817    -------------------------------------------------------------------------------------------
14818    -- 4262811 - Generate the Accrual Reversal lines
14819    -------------------------------------------------------------------------------------------
14820    BEGIN
14821       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14822                               (g_array_event(p_event_id).array_value_num('header_index'));
14823       IF l_acc_rev_flag IS NULL THEN
14824          l_acc_rev_flag := 'N';
14825       END IF;
14826    EXCEPTION
14827       WHEN OTHERS THEN
14828          l_acc_rev_flag := 'N';
14829    END;
14830    --
14831    IF (l_acc_rev_flag = 'Y') THEN
14832 
14833        -- 4645092  ------------------------------------------------------------------------------
14834        -- To allow MPA report to determine if it should generate report process
14835        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14836        ------------------------------------------------------------------------------------------
14837 
14838        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14839        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14840    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14841    -- call ADRs
14842    -- Bug 4922099
14843    --
14844    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14845         (NVL(l_actual_upg_option, 'N') = 'O') OR
14846         (NVL(l_enc_upg_option, 'N') = 'O')
14847       )
14848    THEN
14849    NULL;
14850    --
14851    --
14852    
14853   l_ccid := AcctDerRule_3(
14854            p_application_id           => p_application_id
14855          , p_ae_header_id             => l_ae_header_id 
14856 , p_source_2 => p_source_2
14857          , x_transaction_coa_id       => l_adr_transaction_coa_id
14858          , x_accounting_coa_id        => l_adr_accounting_coa_id
14859          , x_value_type_code          => l_adr_value_type_code
14860          , p_side                     => 'NA'
14861    );
14862 
14863    xla_ae_lines_pkg.set_ccid(
14864     p_code_combination_id          => l_ccid
14865   , p_value_type_code              => l_adr_value_type_code
14866   , p_transaction_coa_id           => l_adr_transaction_coa_id
14867   , p_accounting_coa_id            => l_adr_accounting_coa_id
14868   , p_adr_code                     => 'AP_INVOICE_DIST'
14869   , p_adr_type_code                => 'S'
14870   , p_component_type               => l_component_type
14871   , p_component_code               => l_component_code
14872   , p_component_type_code          => l_component_type_code
14873   , p_component_appl_id            => l_component_appl_id
14874   , p_amb_context_code             => l_amb_context_code
14875   , p_side                         => 'NA'
14876   );
14877 
14878 
14879    l_segment := AcctDerRule_5(
14880            p_application_id           => p_application_id
14881          , p_ae_header_id             => l_ae_header_id 
14882 , p_source_3 => p_source_3
14883          , x_transaction_coa_id       => l_adr_transaction_coa_id
14884          , x_accounting_coa_id        => l_adr_accounting_coa_id
14885          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
14886          , x_flex_value_set_id        => l_adr_flex_value_set_id
14887          , x_value_type_code          => l_adr_value_type_code
14888          , x_value_combination_id     => l_adr_value_combination_id
14889          , x_value_segment_code       => l_adr_value_segment_code
14890          , p_side                     => 'NA'
14891          , p_override_seg_flag        => 'Y'
14892    );
14893 
14894    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
14895 
14896       xla_ae_lines_pkg.set_segment(
14897           p_to_segment_code         => 'GL_ACCOUNT'
14898         , p_segment_value           => l_segment
14899         , p_from_segment_code       => l_adr_value_segment_code
14900         , p_from_combination_id     => l_adr_value_combination_id
14901         , p_value_type_code         => l_adr_value_type_code
14902         , p_transaction_coa_id      => l_adr_transaction_coa_id
14903         , p_accounting_coa_id       => l_adr_accounting_coa_id
14904         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
14905         , p_flex_value_set_id       => l_adr_flex_value_set_id
14906         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
14907         , p_adr_type_code           => 'S'
14908         , p_component_type          => l_component_type
14912         , p_amb_context_code        => l_amb_context_code
14909         , p_component_code          => l_component_code
14910         , p_component_type_code     => l_component_type_code
14911         , p_component_appl_id       => l_component_appl_id
14913         , p_entity_code             => 'AP_INVOICES'
14914         , p_event_class_code        => 'DEBIT MEMOS'
14915         , p_side                    => 'NA'
14916         );
14917 
14918   END IF;
14919 
14920    --
14921    --
14922    END IF;
14923 
14924        --
14925        -- Update the line information that should be overwritten
14926        --
14927        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14928                                          p_header_num   => 1);
14929        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14930 
14931        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14932 
14933        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14934           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14935        END IF;
14936 
14937       --
14938       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14939       --
14940       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14941           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14942       ELSE
14943           ---------------------------------------------------------------------------------------------------
14944           -- 4262811a Switch Sign
14945           ---------------------------------------------------------------------------------------------------
14946           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14947           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14948                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14949           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14950                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14951           -- 5132302
14952           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14953                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14954 
14955       END IF;
14956 
14957       -- 4955764
14958       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14960 
14961 
14962       XLA_AE_LINES_PKG.ValidateCurrentLine;
14963       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14964 
14965       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14966                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14967                ,p_balance_type_code => l_balance_type_code);
14968 
14969    END IF;
14970 
14971    -----------------------------------------------------------------------------------------
14972    -- 4262811 Multiperiod Accounting
14973    -----------------------------------------------------------------------------------------
14974      -- No MPA option is assigned.
14975 
14976 
14977 END IF;
14978 END IF;
14979 --
14980 
14981 --
14982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14983    trace
14984       (p_msg      => 'END of AcctLineType_32'
14985       ,p_level    => C_LEVEL_PROCEDURE
14986       ,p_module   => l_log_module);
14987 END IF;
14988 --
14989 EXCEPTION
14990   WHEN xla_exceptions_pkg.application_exception THEN
14991       RAISE;
14992   WHEN OTHERS THEN
14993        xla_exceptions_pkg.raise_message
14994            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_32');
14995 END AcctLineType_32;
14996 --
14997 
14998 ---------------------------------------
14999 --
15000 -- PRIVATE FUNCTION
15001 --         AcctLineType_33
15002 --
15003 ---------------------------------------
15004 PROCEDURE AcctLineType_33 (
15005   p_application_id        IN NUMBER
15006  ,p_event_id              IN NUMBER
15007  ,p_calculate_acctd_flag  IN VARCHAR2
15008  ,p_calculate_g_l_flag    IN VARCHAR2
15009  ,p_actual_flag           IN OUT VARCHAR2
15010  ,p_balance_type_code     OUT VARCHAR2
15011  ,p_gain_or_loss_ref      OUT VARCHAR2
15012  
15013 --Invoice Distribution Description
15014  , p_source_1            IN VARCHAR2
15015 --Invoice Distribution Account
15016  , p_source_2            IN NUMBER
15017 --Invoice Distribution Type
15018  , p_source_8            IN VARCHAR2
15019  , p_source_8_meaning    IN VARCHAR2
15020 --Federal Prior Year Flag
15021  , p_source_9            IN VARCHAR2
15022 --Invoice Type
15023  , p_source_13            IN VARCHAR2
15024  , p_source_13_meaning    IN VARCHAR2
15025 --Federal Adjustment Type
15026  , p_source_14            IN VARCHAR2
15027 --Accounting Reversal Indicator
15028  , p_source_15            IN VARCHAR2
15029 --Distribution Link Type
15030  , p_source_17            IN VARCHAR2
15031 --Allocation to Main Distribution Identifier
15032  , p_source_19            IN NUMBER
15033 --Invoice Identifier
15037 --Business Flow Invoice Distribution Type
15034  , p_source_20            IN NUMBER
15035 --Business Flow Accounts Payable Application Identifier
15036  , p_source_21            IN NUMBER
15038  , p_source_22            IN VARCHAR2
15039 --Business Flow Invoice Entity Code
15040  , p_source_23            IN VARCHAR2
15041 --Business Flow Invoice Distribution Identifier
15042  , p_source_24            IN NUMBER
15043 --Business Flow Invoice Identifier
15044  , p_source_25            IN NUMBER
15045 --Invoice Distribution Identifier
15046  , p_source_26            IN NUMBER
15047 --Payables Encumbrance Upgrade Credit Account
15048  , p_source_27            IN NUMBER
15049 --Payables Encumbrance Upgrade Credit Amount
15050  , p_source_28            IN NUMBER
15051 --Invoice Currency Code
15052  , p_source_29            IN VARCHAR2
15053 --Payables Encumbrance Upgrade Credit Base Amount
15054  , p_source_30            IN NUMBER
15055 --Payables Encumbrance Upgrade Debit Account
15056  , p_source_31            IN NUMBER
15057 --Payables Encumbrance Upgrade Debit Amount
15058  , p_source_32            IN NUMBER
15059 --Payables Encumbrance Upgrade Debit Base Amount
15060  , p_source_33            IN NUMBER
15061 --Payables Encumbrance Upgrade Option
15062  , p_source_34            IN VARCHAR2
15063 --Federal Anticipated Amt
15064  , p_source_35            IN NUMBER
15065 --Invoice Exchange Date
15066  , p_source_36            IN DATE
15067 --Invoice Exchange Rate
15068  , p_source_37            IN NUMBER
15069 --Invoice Exchange Rate Type
15070  , p_source_38            IN VARCHAR2
15071 --Deferred Accounting End Date
15072  , p_source_39            IN DATE
15073 --Deferred Accounting Option
15074  , p_source_40            IN VARCHAR2
15075 --Deferred Accounting Start Date
15076  , p_source_41            IN DATE
15077 --Override Accounted Amount Indicator
15078  , p_source_42            IN VARCHAR2
15079  , p_source_42_meaning    IN VARCHAR2
15080 --Invoice Supplier Identifier
15081  , p_source_43            IN NUMBER
15082 --Invoice Supplier Site Identifier
15083  , p_source_44            IN NUMBER
15084 --Third Party Type
15085  , p_source_45            IN VARCHAR2
15086 --Parent Reversal Identifier
15087  , p_source_46            IN NUMBER
15088 --Invoice Distribution Tax Line Identifier
15089  , p_source_48            IN NUMBER
15090 --Invoice Distribution Tax Distribution Identifier from Tax
15091  , p_source_49            IN NUMBER
15092 --Invoice Distribution Summary Tax Line Identifier
15093  , p_source_50            IN NUMBER
15094 --Payables Upgrade Credit Encumbrance Type Identifier
15095  , p_source_51            IN NUMBER
15096 --Payables Upgrade Debit Encumbrance Type Identifier
15097  , p_source_52            IN NUMBER
15098 --Invoice Distribution Encumbrance Ledger Amount
15099  , p_source_53            IN NUMBER
15100 )
15101 IS
15102 
15103 l_component_type              VARCHAR2(80);
15104 l_component_code              VARCHAR2(30);
15105 l_component_type_code         VARCHAR2(1);
15106 l_component_appl_id           INTEGER;
15107 l_amb_context_code            VARCHAR2(30);
15108 l_entity_code                 VARCHAR2(30);
15109 l_event_class_code            VARCHAR2(30);
15110 l_ae_header_id                NUMBER;
15111 l_event_type_code             VARCHAR2(30);
15112 l_line_definition_code        VARCHAR2(30);
15113 l_line_definition_owner_code  VARCHAR2(1);
15114 --
15115 -- adr variables
15116 l_segment                     VARCHAR2(30);
15117 l_ccid                        NUMBER;
15118 l_adr_transaction_coa_id      NUMBER;
15119 l_adr_accounting_coa_id       NUMBER;
15120 l_adr_flexfield_segment_code  VARCHAR2(30);
15121 l_adr_flex_value_set_id       NUMBER;
15122 l_adr_value_type_code         VARCHAR2(30);
15123 l_adr_value_combination_id    NUMBER;
15124 l_adr_value_segment_code      VARCHAR2(30);
15125 
15126 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15127 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15128 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15129 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15130 
15131 -- 4262811 Variables ------------------------------------------------------------------------------------------
15132 l_entered_amt_idx             NUMBER;
15133 l_accted_amt_idx              NUMBER;
15134 l_acc_rev_flag                VARCHAR2(1);
15135 l_accrual_line_num            NUMBER;
15136 l_tmp_amt                     NUMBER;
15137 l_acc_rev_natural_side_code   VARCHAR2(1);
15138 
15139 l_num_entries                 NUMBER;
15140 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15141 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15142 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15143 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15144 l_recog_line_1                NUMBER;
15145 l_recog_line_2                NUMBER;
15146 
15147 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15148 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15149 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15150 
15151 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15152 
15153 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15154 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15155 
15159 --
15156 ---------------------------------------------------------------------------------------------------------------
15157 
15158 
15160 -- bulk performance
15161 --
15162 l_balance_type_code           VARCHAR2(1);
15163 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15164 l_log_module                  VARCHAR2(240);
15165 
15166 --
15167 -- Upgrade strategy
15168 --
15169 l_actual_upg_option           VARCHAR2(1);
15170 l_enc_upg_option           VARCHAR2(1);
15171 
15172 --
15173 BEGIN
15174 --
15175 IF g_log_enabled THEN
15176       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
15177 END IF;
15178 --
15179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15180 
15181       trace
15182          (p_msg      => 'BEGIN of AcctLineType_33'
15183          ,p_level    => C_LEVEL_PROCEDURE
15184          ,p_module   => l_log_module);
15185 
15186 END IF;
15187 --
15188 l_component_type             := 'AMB_JLT';
15189 l_component_code             := 'FV_AP_DM_ DWD_ANPT_PYA_DR';
15190 l_component_type_code        := 'S';
15191 l_component_appl_id          :=  200;
15192 l_amb_context_code           := 'DEFAULT';
15193 l_entity_code                := 'AP_INVOICES';
15194 l_event_class_code           := 'DEBIT MEMOS';
15195 l_event_type_code            := 'DEBIT MEMOS_ALL';
15196 l_line_definition_owner_code := 'S';
15197 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
15198 --
15199 l_balance_type_code          := 'A';
15200 l_segment                     := NULL;
15201 l_ccid                        := NULL;
15202 l_adr_transaction_coa_id      := NULL;
15203 l_adr_accounting_coa_id       := NULL;
15204 l_adr_flexfield_segment_code  := NULL;
15205 l_adr_flex_value_set_id       := NULL;
15206 l_adr_value_type_code         := NULL;
15207 l_adr_value_combination_id    := NULL;
15208 l_adr_value_segment_code      := NULL;
15209 
15210 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15211 l_bflow_class_code           := '';    -- 4219869 Business Flow
15212 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15213 l_budgetary_control_flag     := 'Y';
15214 
15215 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15216 l_bflow_applied_to_amt       := NULL; -- 5132302
15217 l_entered_amt_idx            := NULL;          -- 4262811
15218 l_accted_amt_idx             := NULL;          -- 4262811
15219 l_acc_rev_flag               := NULL;          -- 4262811
15220 l_accrual_line_num           := NULL;          -- 4262811
15221 l_tmp_amt                    := NULL;          -- 4262811
15222 --
15223  
15224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15225     l_balance_type_code <> 'B' THEN
15226 IF NVL(p_source_13,'
15227 ') =  'DEBIT' AND 
15228 NVL(p_source_9,'
15229 ') =  'Y' AND 
15230 (NVL(p_source_8,'
15231 ') =  'ITEM' OR 
15232 NVL(p_source_8,'
15233 ') =  'ACCRUAL' OR 
15234 NVL(p_source_8,'
15235 ') =  'FREIGHT' OR 
15236 NVL(p_source_8,'
15237 ') =  'MISCELLANEOUS' OR 
15238 NVL(p_source_8,'
15239 ') =  'IPV') AND 
15240 NVL(p_source_14,'
15241 ') =  'Downward'
15242  THEN 
15243 
15244    --
15245    XLA_AE_LINES_PKG.SetNewLine;
15246 
15247    p_balance_type_code          := l_balance_type_code;
15248    -- set the flag so later we will know whether the gain loss line needs to be created
15249    
15250    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15251      p_actual_flag :='A';
15252    END IF;
15253 
15254    --
15255    -- bulk performance
15256    --
15257    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15258                                       p_header_num   => 0); -- 4262811
15259    --
15260    -- set accounting line options
15261    --
15262    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15263            p_natural_side_code          => 'C'
15264          , p_gain_or_loss_flag          => 'N'
15265          , p_gl_transfer_mode_code      => 'S'
15266          , p_acct_entry_type_code       => 'A'
15267          , p_switch_side_flag           => 'N'
15268          , p_merge_duplicate_code       => 'N'
15269          );
15270    --
15271    l_acc_rev_natural_side_code := 'D';  -- 4262811
15272    -- 
15273    --
15274    -- set accounting line type info
15275    --
15276    xla_ae_lines_pkg.SetAcctLineType
15277       (p_component_type             => l_component_type
15278       ,p_event_type_code            => l_event_type_code
15279       ,p_line_definition_owner_code => l_line_definition_owner_code
15280       ,p_line_definition_code       => l_line_definition_code
15281       ,p_accounting_line_code       => l_component_code
15282       ,p_accounting_line_type_code  => l_component_type_code
15283       ,p_accounting_line_appl_id    => l_component_appl_id
15284       ,p_amb_context_code           => l_amb_context_code
15285       ,p_entity_code                => l_entity_code
15286       ,p_event_class_code           => l_event_class_code);
15287    --
15288    -- set accounting class
15289    --
15290    xla_ae_lines_pkg.SetAcctClass(
15291            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
15292          , p_ae_header_id           => l_ae_header_id
15293          );
15294 
15295    --
15296    -- set rounding class
15297    --
15301    --
15298    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15299                       'ACCOUNTSPAYABLE';
15300 
15302    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15303    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15304    --
15305    -- bulk performance
15306    --
15307    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15308 
15309    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15310       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15311 
15312    -- 4955764
15313    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15315 
15316    -- 4458381 Public Sector Enh
15317    
15318    --
15319    -- set accounting attributes for the line type
15320    --
15321    l_entered_amt_idx := 23;
15322    l_accted_amt_idx  := 28;
15323    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15324    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15325    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
15326    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
15327    l_rec_acct_attrs.array_num_value(2)  := 
15328 xla_ae_sources_pkg.GetSystemSourceNum(
15329    p_source_code           => 'XLA_EVENT_APPL_ID'
15330  , p_source_type_code      => 'Y'
15331  , p_source_application_id =>  602
15332 );
15333    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
15334    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
15335    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
15336    l_rec_acct_attrs.array_char_value(4)  := 
15337 xla_ae_sources_pkg.GetSystemSourceChar(
15338    p_source_code           => 'XLA_ENTITY_CODE'
15339  , p_source_type_code      => 'Y'
15340  , p_source_application_id =>  602
15341 );
15342    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
15343    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
15344    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
15345    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
15346    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
15347    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
15348    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15349    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
15350    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
15351    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
15352    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
15353    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
15354    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15355    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
15356    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
15357    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
15358    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
15359    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
15360    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
15361    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
15362    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
15363    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
15364    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
15365    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
15366    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
15367    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
15368    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
15369    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
15370    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
15371    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
15372    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
15373    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
15374    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
15375    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
15376    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
15377    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
15378    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
15379    l_rec_acct_attrs.array_num_value(23)  := p_source_35;
15380    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
15381    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
15382    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
15383    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
15384    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
15385    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
15386    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
15387    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
15388    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
15389    l_rec_acct_attrs.array_num_value(28)  := p_source_53;
15390    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
15391    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
15395    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
15392    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
15393    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
15394    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
15396    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
15397    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
15398    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
15399    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
15400    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
15401    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
15402    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
15403    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
15404    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
15405    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
15406    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
15407    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
15408    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
15409    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
15410    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
15411    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
15412    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
15413    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
15414    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
15415    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
15416    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
15417    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
15418 
15419    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15420    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15421 
15422    ---------------------------------------------------------------------------------------------------------------
15423    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15424    ---------------------------------------------------------------------------------------------------------------
15425    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15426 
15427    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15428    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15429 
15430    IF xla_accounting_cache_pkg.GetValueChar
15431          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15432          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15433    AND l_bflow_method_code = 'PRIOR_ENTRY'
15434 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15435    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15436          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15437        )
15438    THEN
15439          xla_ae_lines_pkg.BflowUpgEntry
15440            (p_business_method_code    => l_bflow_method_code
15441            ,p_business_class_code     => l_bflow_class_code
15442            ,p_balance_type            => l_balance_type_code);
15443    ELSE
15444       NULL;
15445 -- No business flow processing for business flow method of NONE.
15446    END IF;
15447 
15448    --
15449    -- call analytical criteria
15450    --
15451    
15452    --
15453    -- call description
15454    --
15455    
15456 xla_ae_lines_pkg.SetLineDescription(
15457    p_ae_header_id => l_ae_header_id
15458   ,p_description  => Description_2 (
15459      p_application_id         => p_application_id
15460    , p_ae_header_id           => l_ae_header_id 
15461 , p_source_1 => p_source_1
15462    )
15463 );
15464 
15465 
15466    --
15467    -- call ADRs
15468    -- Bug 4922099
15469    --
15470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15471         (NVL(l_actual_upg_option, 'N') = 'O') OR
15472         (NVL(l_enc_upg_option, 'N') = 'O')
15473       )
15474    THEN
15475    NULL;
15476    --
15477    --
15478    
15479   l_ccid := AcctDerRule_3(
15480            p_application_id           => p_application_id
15481          , p_ae_header_id             => l_ae_header_id 
15482 , p_source_2 => p_source_2
15483          , x_transaction_coa_id       => l_adr_transaction_coa_id
15484          , x_accounting_coa_id        => l_adr_accounting_coa_id
15485          , x_value_type_code          => l_adr_value_type_code
15486          , p_side                     => 'NA'
15487    );
15488 
15489    xla_ae_lines_pkg.set_ccid(
15490     p_code_combination_id          => l_ccid
15491   , p_value_type_code              => l_adr_value_type_code
15492   , p_transaction_coa_id           => l_adr_transaction_coa_id
15493   , p_accounting_coa_id            => l_adr_accounting_coa_id
15494   , p_adr_code                     => 'AP_INVOICE_DIST'
15495   , p_adr_type_code                => 'S'
15496   , p_component_type               => l_component_type
15497   , p_component_code               => l_component_code
15498   , p_component_type_code          => l_component_type_code
15499   , p_component_appl_id            => l_component_appl_id
15500   , p_amb_context_code             => l_amb_context_code
15501   , p_side                         => 'NA'
15502   );
15503 
15504 
15508          , x_transaction_coa_id       => l_adr_transaction_coa_id
15505    l_segment := AcctDerRule_13(
15506            p_application_id           => p_application_id
15507          , p_ae_header_id             => l_ae_header_id 
15509          , x_accounting_coa_id        => l_adr_accounting_coa_id
15510          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
15511          , x_flex_value_set_id        => l_adr_flex_value_set_id
15512          , x_value_type_code          => l_adr_value_type_code
15513          , x_value_combination_id     => l_adr_value_combination_id
15514          , x_value_segment_code       => l_adr_value_segment_code
15515          , p_side                     => 'NA'
15516          , p_override_seg_flag        => 'Y'
15517    );
15518 
15519    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
15520 
15521       xla_ae_lines_pkg.set_segment(
15522           p_to_segment_code         => 'GL_ACCOUNT'
15523         , p_segment_value           => l_segment
15524         , p_from_segment_code       => l_adr_value_segment_code
15525         , p_from_combination_id     => l_adr_value_combination_id
15526         , p_value_type_code         => l_adr_value_type_code
15527         , p_transaction_coa_id      => l_adr_transaction_coa_id
15528         , p_accounting_coa_id       => l_adr_accounting_coa_id
15529         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
15530         , p_flex_value_set_id       => l_adr_flex_value_set_id
15531         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
15532         , p_adr_type_code           => 'S'
15533         , p_component_type          => l_component_type
15534         , p_component_code          => l_component_code
15535         , p_component_type_code     => l_component_type_code
15536         , p_component_appl_id       => l_component_appl_id
15537         , p_amb_context_code        => l_amb_context_code
15538         , p_entity_code             => 'AP_INVOICES'
15539         , p_event_class_code        => 'DEBIT MEMOS'
15540         , p_side                    => 'NA'
15541         );
15542 
15543   END IF;
15544 
15545    --
15546    --
15547    END IF;
15548    --
15549    -- Bug 4922099
15550    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15551           (NVL(l_enc_upg_option, 'N') = 'O')
15552         ) AND
15553         (l_bflow_method_code = 'PRIOR_ENTRY')
15554       )
15555    THEN
15556       IF
15557       --
15558       1 = 2
15559       --
15560       THEN
15561       xla_accounting_err_pkg.build_message
15562                                     (p_appli_s_name            => 'XLA'
15563                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15564                                     ,p_token_1                 => 'LINE_NUMBER'
15565                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15566                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15567                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15568                                                                              l_component_type
15569                                                                             ,l_component_code
15570                                                                             ,l_component_type_code
15571                                                                             ,l_component_appl_id
15572                                                                             ,l_amb_context_code
15573                                                                             ,l_entity_code
15574                                                                             ,l_event_class_code
15575                                                                            )
15576                                     ,p_token_3                 => 'OWNER'
15577                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15578                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15579                                                                           ,p_lookup_code    => l_component_type_code
15580                                                                          )
15581                                     ,p_token_4                 => 'PRODUCT_NAME'
15582                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15583                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15584                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15585                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15586                                     ,p_ae_header_id            =>  NULL
15587                                        );
15588 
15589         IF (C_LEVEL_ERROR>= g_log_level) THEN
15590                  trace
15591                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15592                       ,p_level    => C_LEVEL_ERROR
15593                       ,p_module   => l_log_module);
15594         END IF;
15595       END IF;
15596    END IF;
15597    --
15598    --
15599    ------------------------------------------------------------------------------------------------
15600    -- 4219869 Business Flow
15601    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15602    -- Prior Entry.  Currently, the following code is always generated.
15606    ------------------------------------------------------------------------------------
15603    ------------------------------------------------------------------------------------------------
15604    XLA_AE_LINES_PKG.ValidateCurrentLine;
15605 
15607    -- 4219869 Business Flow
15608    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15609    ------------------------------------------------------------------------------------
15610    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15611 
15612    ----------------------------------------------------------------------------------
15613    -- 4219869 Business Flow
15614    -- Update journal entry status -- Need to generate this within IF <condition>
15615    ----------------------------------------------------------------------------------
15616    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15617          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15618          ,p_balance_type_code => l_balance_type_code
15619          );
15620 
15621    -------------------------------------------------------------------------------------------
15622    -- 4262811 - Generate the Accrual Reversal lines
15623    -------------------------------------------------------------------------------------------
15624    BEGIN
15625       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15626                               (g_array_event(p_event_id).array_value_num('header_index'));
15627       IF l_acc_rev_flag IS NULL THEN
15628          l_acc_rev_flag := 'N';
15629       END IF;
15630    EXCEPTION
15631       WHEN OTHERS THEN
15632          l_acc_rev_flag := 'N';
15633    END;
15634    --
15635    IF (l_acc_rev_flag = 'Y') THEN
15636 
15637        -- 4645092  ------------------------------------------------------------------------------
15638        -- To allow MPA report to determine if it should generate report process
15639        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15640        ------------------------------------------------------------------------------------------
15641 
15642        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15643        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15644    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15645    -- call ADRs
15646    -- Bug 4922099
15647    --
15648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15649         (NVL(l_actual_upg_option, 'N') = 'O') OR
15650         (NVL(l_enc_upg_option, 'N') = 'O')
15651       )
15652    THEN
15653    NULL;
15654    --
15655    --
15656    
15657   l_ccid := AcctDerRule_3(
15658            p_application_id           => p_application_id
15659          , p_ae_header_id             => l_ae_header_id 
15660 , p_source_2 => p_source_2
15661          , x_transaction_coa_id       => l_adr_transaction_coa_id
15662          , x_accounting_coa_id        => l_adr_accounting_coa_id
15663          , x_value_type_code          => l_adr_value_type_code
15664          , p_side                     => 'NA'
15665    );
15666 
15667    xla_ae_lines_pkg.set_ccid(
15668     p_code_combination_id          => l_ccid
15669   , p_value_type_code              => l_adr_value_type_code
15670   , p_transaction_coa_id           => l_adr_transaction_coa_id
15671   , p_accounting_coa_id            => l_adr_accounting_coa_id
15672   , p_adr_code                     => 'AP_INVOICE_DIST'
15673   , p_adr_type_code                => 'S'
15674   , p_component_type               => l_component_type
15675   , p_component_code               => l_component_code
15676   , p_component_type_code          => l_component_type_code
15677   , p_component_appl_id            => l_component_appl_id
15678   , p_amb_context_code             => l_amb_context_code
15679   , p_side                         => 'NA'
15680   );
15681 
15682 
15683    l_segment := AcctDerRule_13(
15684            p_application_id           => p_application_id
15685          , p_ae_header_id             => l_ae_header_id 
15686          , x_transaction_coa_id       => l_adr_transaction_coa_id
15687          , x_accounting_coa_id        => l_adr_accounting_coa_id
15688          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
15689          , x_flex_value_set_id        => l_adr_flex_value_set_id
15690          , x_value_type_code          => l_adr_value_type_code
15691          , x_value_combination_id     => l_adr_value_combination_id
15692          , x_value_segment_code       => l_adr_value_segment_code
15693          , p_side                     => 'NA'
15694          , p_override_seg_flag        => 'Y'
15695    );
15696 
15697    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
15698 
15699       xla_ae_lines_pkg.set_segment(
15700           p_to_segment_code         => 'GL_ACCOUNT'
15701         , p_segment_value           => l_segment
15702         , p_from_segment_code       => l_adr_value_segment_code
15703         , p_from_combination_id     => l_adr_value_combination_id
15704         , p_value_type_code         => l_adr_value_type_code
15705         , p_transaction_coa_id      => l_adr_transaction_coa_id
15706         , p_accounting_coa_id       => l_adr_accounting_coa_id
15707         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
15708         , p_flex_value_set_id       => l_adr_flex_value_set_id
15709         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
15710         , p_adr_type_code           => 'S'
15714         , p_component_appl_id       => l_component_appl_id
15711         , p_component_type          => l_component_type
15712         , p_component_code          => l_component_code
15713         , p_component_type_code     => l_component_type_code
15715         , p_amb_context_code        => l_amb_context_code
15716         , p_entity_code             => 'AP_INVOICES'
15717         , p_event_class_code        => 'DEBIT MEMOS'
15718         , p_side                    => 'NA'
15719         );
15720 
15721   END IF;
15722 
15723    --
15724    --
15725    END IF;
15726 
15727        --
15728        -- Update the line information that should be overwritten
15729        --
15730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15731                                          p_header_num   => 1);
15732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15733 
15734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15735 
15736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15738        END IF;
15739 
15740       --
15741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15742       --
15743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15745       ELSE
15746           ---------------------------------------------------------------------------------------------------
15747           -- 4262811a Switch Sign
15748           ---------------------------------------------------------------------------------------------------
15749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15754           -- 5132302
15755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15757 
15758       END IF;
15759 
15760       -- 4955764
15761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15763 
15764 
15765       XLA_AE_LINES_PKG.ValidateCurrentLine;
15766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15767 
15768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15770                ,p_balance_type_code => l_balance_type_code);
15771 
15772    END IF;
15773 
15774    -----------------------------------------------------------------------------------------
15775    -- 4262811 Multiperiod Accounting
15776    -----------------------------------------------------------------------------------------
15777      -- No MPA option is assigned.
15778 
15779 
15780 END IF;
15781 END IF;
15782 --
15783 
15784 --
15785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15786    trace
15787       (p_msg      => 'END of AcctLineType_33'
15788       ,p_level    => C_LEVEL_PROCEDURE
15789       ,p_module   => l_log_module);
15790 END IF;
15791 --
15792 EXCEPTION
15793   WHEN xla_exceptions_pkg.application_exception THEN
15794       RAISE;
15795   WHEN OTHERS THEN
15796        xla_exceptions_pkg.raise_message
15797            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_33');
15798 END AcctLineType_33;
15799 --
15800 
15801 ---------------------------------------
15802 --
15803 -- PRIVATE FUNCTION
15804 --         AcctLineType_34
15805 --
15806 ---------------------------------------
15807 PROCEDURE AcctLineType_34 (
15808   p_application_id        IN NUMBER
15809  ,p_event_id              IN NUMBER
15810  ,p_calculate_acctd_flag  IN VARCHAR2
15811  ,p_calculate_g_l_flag    IN VARCHAR2
15812  ,p_actual_flag           IN OUT VARCHAR2
15813  ,p_balance_type_code     OUT VARCHAR2
15814  ,p_gain_or_loss_ref      OUT VARCHAR2
15815  
15816 --Invoice Distribution Description
15817  , p_source_1            IN VARCHAR2
15818 --Invoice Distribution Account
15819  , p_source_2            IN NUMBER
15820 --Federal Anticipation
15821  , p_source_3            IN VARCHAR2
15822 --Invoice Distribution Type
15823  , p_source_8            IN VARCHAR2
15824  , p_source_8_meaning    IN VARCHAR2
15825 --Federal Prior Year Flag
15826  , p_source_9            IN VARCHAR2
15827 --Invoice Type
15828  , p_source_13            IN VARCHAR2
15829  , p_source_13_meaning    IN VARCHAR2
15830 --Federal Adjustment Type
15831  , p_source_14            IN VARCHAR2
15832 --Accounting Reversal Indicator
15833  , p_source_15            IN VARCHAR2
15834 --Distribution Link Type
15835  , p_source_17            IN VARCHAR2
15836 --Allocation to Main Distribution Identifier
15837  , p_source_19            IN NUMBER
15841  , p_source_21            IN NUMBER
15838 --Invoice Identifier
15839  , p_source_20            IN NUMBER
15840 --Business Flow Accounts Payable Application Identifier
15842 --Business Flow Invoice Distribution Type
15843  , p_source_22            IN VARCHAR2
15844 --Business Flow Invoice Entity Code
15845  , p_source_23            IN VARCHAR2
15846 --Business Flow Invoice Distribution Identifier
15847  , p_source_24            IN NUMBER
15848 --Business Flow Invoice Identifier
15849  , p_source_25            IN NUMBER
15850 --Invoice Distribution Identifier
15851  , p_source_26            IN NUMBER
15852 --Payables Encumbrance Upgrade Credit Account
15853  , p_source_27            IN NUMBER
15854 --Payables Encumbrance Upgrade Credit Amount
15855  , p_source_28            IN NUMBER
15856 --Invoice Currency Code
15857  , p_source_29            IN VARCHAR2
15858 --Payables Encumbrance Upgrade Credit Base Amount
15859  , p_source_30            IN NUMBER
15860 --Payables Encumbrance Upgrade Debit Account
15861  , p_source_31            IN NUMBER
15862 --Payables Encumbrance Upgrade Debit Amount
15863  , p_source_32            IN NUMBER
15864 --Payables Encumbrance Upgrade Debit Base Amount
15865  , p_source_33            IN NUMBER
15866 --Payables Encumbrance Upgrade Option
15867  , p_source_34            IN VARCHAR2
15868 --Invoice Exchange Date
15869  , p_source_36            IN DATE
15870 --Invoice Exchange Rate
15871  , p_source_37            IN NUMBER
15872 --Invoice Exchange Rate Type
15873  , p_source_38            IN VARCHAR2
15874 --Deferred Accounting End Date
15875  , p_source_39            IN DATE
15876 --Deferred Accounting Option
15877  , p_source_40            IN VARCHAR2
15878 --Deferred Accounting Start Date
15879  , p_source_41            IN DATE
15880 --Override Accounted Amount Indicator
15881  , p_source_42            IN VARCHAR2
15882  , p_source_42_meaning    IN VARCHAR2
15883 --Invoice Supplier Identifier
15884  , p_source_43            IN NUMBER
15885 --Invoice Supplier Site Identifier
15886  , p_source_44            IN NUMBER
15887 --Third Party Type
15888  , p_source_45            IN VARCHAR2
15889 --Parent Reversal Identifier
15890  , p_source_46            IN NUMBER
15891 --Invoice Distribution Tax Line Identifier
15892  , p_source_48            IN NUMBER
15893 --Invoice Distribution Tax Distribution Identifier from Tax
15894  , p_source_49            IN NUMBER
15895 --Invoice Distribution Summary Tax Line Identifier
15896  , p_source_50            IN NUMBER
15897 --Payables Upgrade Credit Encumbrance Type Identifier
15898  , p_source_51            IN NUMBER
15899 --Payables Upgrade Debit Encumbrance Type Identifier
15900  , p_source_52            IN NUMBER
15901 --Federal Unanticipated Amt
15902  , p_source_54            IN NUMBER
15903 )
15904 IS
15905 
15906 l_component_type              VARCHAR2(80);
15907 l_component_code              VARCHAR2(30);
15908 l_component_type_code         VARCHAR2(1);
15909 l_component_appl_id           INTEGER;
15910 l_amb_context_code            VARCHAR2(30);
15911 l_entity_code                 VARCHAR2(30);
15912 l_event_class_code            VARCHAR2(30);
15913 l_ae_header_id                NUMBER;
15914 l_event_type_code             VARCHAR2(30);
15915 l_line_definition_code        VARCHAR2(30);
15916 l_line_definition_owner_code  VARCHAR2(1);
15917 --
15918 -- adr variables
15919 l_segment                     VARCHAR2(30);
15920 l_ccid                        NUMBER;
15921 l_adr_transaction_coa_id      NUMBER;
15922 l_adr_accounting_coa_id       NUMBER;
15923 l_adr_flexfield_segment_code  VARCHAR2(30);
15924 l_adr_flex_value_set_id       NUMBER;
15925 l_adr_value_type_code         VARCHAR2(30);
15926 l_adr_value_combination_id    NUMBER;
15927 l_adr_value_segment_code      VARCHAR2(30);
15928 
15929 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15930 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15931 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15932 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15933 
15934 -- 4262811 Variables ------------------------------------------------------------------------------------------
15935 l_entered_amt_idx             NUMBER;
15936 l_accted_amt_idx              NUMBER;
15937 l_acc_rev_flag                VARCHAR2(1);
15938 l_accrual_line_num            NUMBER;
15939 l_tmp_amt                     NUMBER;
15940 l_acc_rev_natural_side_code   VARCHAR2(1);
15941 
15942 l_num_entries                 NUMBER;
15943 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15944 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15945 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15946 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15947 l_recog_line_1                NUMBER;
15948 l_recog_line_2                NUMBER;
15949 
15950 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15951 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15952 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15953 
15954 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15955 
15956 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15957 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15958 
15962 --
15959 ---------------------------------------------------------------------------------------------------------------
15960 
15961 
15963 -- bulk performance
15964 --
15965 l_balance_type_code           VARCHAR2(1);
15966 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15967 l_log_module                  VARCHAR2(240);
15968 
15969 --
15970 -- Upgrade strategy
15971 --
15972 l_actual_upg_option           VARCHAR2(1);
15973 l_enc_upg_option           VARCHAR2(1);
15974 
15975 --
15976 BEGIN
15977 --
15978 IF g_log_enabled THEN
15979       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
15980 END IF;
15981 --
15982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15983 
15984       trace
15985          (p_msg      => 'BEGIN of AcctLineType_34'
15986          ,p_level    => C_LEVEL_PROCEDURE
15987          ,p_module   => l_log_module);
15988 
15989 END IF;
15990 --
15991 l_component_type             := 'AMB_JLT';
15992 l_component_code             := 'FV_AP_DM_ DWD_UNANPT_PYA_CR';
15993 l_component_type_code        := 'S';
15994 l_component_appl_id          :=  200;
15995 l_amb_context_code           := 'DEFAULT';
15996 l_entity_code                := 'AP_INVOICES';
15997 l_event_class_code           := 'DEBIT MEMOS';
15998 l_event_type_code            := 'DEBIT MEMOS_ALL';
15999 l_line_definition_owner_code := 'S';
16000 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
16001 --
16002 l_balance_type_code          := 'A';
16003 l_segment                     := NULL;
16004 l_ccid                        := NULL;
16005 l_adr_transaction_coa_id      := NULL;
16006 l_adr_accounting_coa_id       := NULL;
16007 l_adr_flexfield_segment_code  := NULL;
16008 l_adr_flex_value_set_id       := NULL;
16009 l_adr_value_type_code         := NULL;
16010 l_adr_value_combination_id    := NULL;
16011 l_adr_value_segment_code      := NULL;
16012 
16013 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16014 l_bflow_class_code           := '';    -- 4219869 Business Flow
16015 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16016 l_budgetary_control_flag     := 'Y';
16017 
16018 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16019 l_bflow_applied_to_amt       := NULL; -- 5132302
16020 l_entered_amt_idx            := NULL;          -- 4262811
16021 l_accted_amt_idx             := NULL;          -- 4262811
16022 l_acc_rev_flag               := NULL;          -- 4262811
16023 l_accrual_line_num           := NULL;          -- 4262811
16024 l_tmp_amt                    := NULL;          -- 4262811
16025 --
16026  
16027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16028     l_balance_type_code <> 'B' THEN
16029 IF NVL(p_source_13,'
16030 ') =  'DEBIT' AND 
16031 NVL(p_source_9,'
16032 ') =  'Y' AND 
16033 (NVL(p_source_8,'
16034 ') =  'ITEM' OR 
16035 NVL(p_source_8,'
16036 ') =  'ACCRUAL' OR 
16037 NVL(p_source_8,'
16038 ') =  'FREIGHT' OR 
16039 NVL(p_source_8,'
16040 ') =  'MISCELLANEOUS' OR 
16041 NVL(p_source_8,'
16042 ') =  'IPV') AND 
16043 NVL(p_source_14,'
16044 ') =  'Downward' AND 
16045 (NVL(p_source_3,'
16046 ') =  'UnAnticipated' OR 
16047 NVL(p_source_3,'
16048 ') =  'Partial')
16049  THEN 
16050 
16051    --
16052    XLA_AE_LINES_PKG.SetNewLine;
16053 
16054    p_balance_type_code          := l_balance_type_code;
16055    -- set the flag so later we will know whether the gain loss line needs to be created
16056    
16057    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16058      p_actual_flag :='A';
16059    END IF;
16060 
16061    --
16062    -- bulk performance
16063    --
16064    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16065                                       p_header_num   => 0); -- 4262811
16066    --
16067    -- set accounting line options
16068    --
16069    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16070            p_natural_side_code          => 'D'
16071          , p_gain_or_loss_flag          => 'N'
16072          , p_gl_transfer_mode_code      => 'S'
16073          , p_acct_entry_type_code       => 'A'
16074          , p_switch_side_flag           => 'N'
16075          , p_merge_duplicate_code       => 'N'
16076          );
16077    --
16078    l_acc_rev_natural_side_code := 'C';  -- 4262811
16079    -- 
16080    --
16081    -- set accounting line type info
16082    --
16083    xla_ae_lines_pkg.SetAcctLineType
16084       (p_component_type             => l_component_type
16085       ,p_event_type_code            => l_event_type_code
16086       ,p_line_definition_owner_code => l_line_definition_owner_code
16087       ,p_line_definition_code       => l_line_definition_code
16088       ,p_accounting_line_code       => l_component_code
16089       ,p_accounting_line_type_code  => l_component_type_code
16090       ,p_accounting_line_appl_id    => l_component_appl_id
16091       ,p_amb_context_code           => l_amb_context_code
16092       ,p_entity_code                => l_entity_code
16093       ,p_event_class_code           => l_event_class_code);
16094    --
16095    -- set accounting class
16096    --
16097    xla_ae_lines_pkg.SetAcctClass(
16098            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
16099          , p_ae_header_id           => l_ae_header_id
16103    -- set rounding class
16100          );
16101 
16102    --
16104    --
16105    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16106                       'ACCOUNTSPAYABLE';
16107 
16108    --
16109    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16110    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16111    --
16112    -- bulk performance
16113    --
16114    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16115 
16116    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16117       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16118 
16119    -- 4955764
16120    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16121       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16122 
16123    -- 4458381 Public Sector Enh
16124    
16125    --
16126    -- set accounting attributes for the line type
16127    --
16128    l_entered_amt_idx := 23;
16129    l_accted_amt_idx  := 28;
16130    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16131    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16132    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
16133    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16134    l_rec_acct_attrs.array_num_value(2)  := 
16135 xla_ae_sources_pkg.GetSystemSourceNum(
16136    p_source_code           => 'XLA_EVENT_APPL_ID'
16137  , p_source_type_code      => 'Y'
16138  , p_source_application_id =>  602
16139 );
16140    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16141    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
16142    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16143    l_rec_acct_attrs.array_char_value(4)  := 
16144 xla_ae_sources_pkg.GetSystemSourceChar(
16145    p_source_code           => 'XLA_ENTITY_CODE'
16146  , p_source_type_code      => 'Y'
16147  , p_source_application_id =>  602
16148 );
16149    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16150    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
16151    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16152    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
16153    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
16154    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
16155    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16156    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
16157    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
16158    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
16159    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
16160    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
16161    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16162    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
16163    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
16164    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
16165    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
16166    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
16167    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
16168    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
16169    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
16170    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
16171    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
16172    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
16173    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
16174    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
16175    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
16176    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
16177    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
16178    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
16179    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
16180    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
16181    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
16182    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
16183    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
16184    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
16185    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
16186    l_rec_acct_attrs.array_num_value(23)  := p_source_54;
16187    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
16188    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
16189    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
16190    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
16191    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
16192    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
16193    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
16194    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
16195    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
16196    l_rec_acct_attrs.array_num_value(28)  := p_source_54;
16197    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
16201    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
16198    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
16199    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
16200    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
16202    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
16203    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
16204    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
16205    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
16206    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
16207    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
16208    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
16209    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
16210    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
16211    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
16212    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
16213    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
16214    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
16215    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
16216    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
16217    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
16218    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
16219    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
16220    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
16221    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
16222    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
16223    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
16224    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
16225 
16226    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16227    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16228 
16229    ---------------------------------------------------------------------------------------------------------------
16230    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16231    ---------------------------------------------------------------------------------------------------------------
16232    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16233 
16234    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16235    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16236 
16237    IF xla_accounting_cache_pkg.GetValueChar
16238          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16239          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16240    AND l_bflow_method_code = 'PRIOR_ENTRY'
16241 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16242    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16243          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16244        )
16245    THEN
16246          xla_ae_lines_pkg.BflowUpgEntry
16247            (p_business_method_code    => l_bflow_method_code
16248            ,p_business_class_code     => l_bflow_class_code
16249            ,p_balance_type            => l_balance_type_code);
16250    ELSE
16251       NULL;
16252 -- No business flow processing for business flow method of NONE.
16253    END IF;
16254 
16255    --
16256    -- call analytical criteria
16257    --
16258    
16259    --
16260    -- call description
16261    --
16262    
16263 xla_ae_lines_pkg.SetLineDescription(
16264    p_ae_header_id => l_ae_header_id
16265   ,p_description  => Description_2 (
16266      p_application_id         => p_application_id
16267    , p_ae_header_id           => l_ae_header_id 
16268 , p_source_1 => p_source_1
16269    )
16270 );
16271 
16272 
16273    --
16274    -- call ADRs
16275    -- Bug 4922099
16276    --
16277    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16278         (NVL(l_actual_upg_option, 'N') = 'O') OR
16279         (NVL(l_enc_upg_option, 'N') = 'O')
16280       )
16281    THEN
16282    NULL;
16283    --
16284    --
16285    
16286   l_ccid := AcctDerRule_3(
16287            p_application_id           => p_application_id
16288          , p_ae_header_id             => l_ae_header_id 
16289 , p_source_2 => p_source_2
16290          , x_transaction_coa_id       => l_adr_transaction_coa_id
16291          , x_accounting_coa_id        => l_adr_accounting_coa_id
16292          , x_value_type_code          => l_adr_value_type_code
16293          , p_side                     => 'NA'
16294    );
16295 
16296    xla_ae_lines_pkg.set_ccid(
16297     p_code_combination_id          => l_ccid
16298   , p_value_type_code              => l_adr_value_type_code
16299   , p_transaction_coa_id           => l_adr_transaction_coa_id
16300   , p_accounting_coa_id            => l_adr_accounting_coa_id
16301   , p_adr_code                     => 'AP_INVOICE_DIST'
16302   , p_adr_type_code                => 'S'
16303   , p_component_type               => l_component_type
16304   , p_component_code               => l_component_code
16305   , p_component_type_code          => l_component_type_code
16306   , p_component_appl_id            => l_component_appl_id
16307   , p_amb_context_code             => l_amb_context_code
16308   , p_side                         => 'NA'
16309   );
16310 
16311 
16315 , p_source_3 => p_source_3
16312    l_segment := AcctDerRule_5(
16313            p_application_id           => p_application_id
16314          , p_ae_header_id             => l_ae_header_id 
16316          , x_transaction_coa_id       => l_adr_transaction_coa_id
16317          , x_accounting_coa_id        => l_adr_accounting_coa_id
16318          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
16319          , x_flex_value_set_id        => l_adr_flex_value_set_id
16320          , x_value_type_code          => l_adr_value_type_code
16321          , x_value_combination_id     => l_adr_value_combination_id
16322          , x_value_segment_code       => l_adr_value_segment_code
16323          , p_side                     => 'NA'
16324          , p_override_seg_flag        => 'Y'
16325    );
16326 
16327    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
16328 
16329       xla_ae_lines_pkg.set_segment(
16330           p_to_segment_code         => 'GL_ACCOUNT'
16331         , p_segment_value           => l_segment
16332         , p_from_segment_code       => l_adr_value_segment_code
16333         , p_from_combination_id     => l_adr_value_combination_id
16334         , p_value_type_code         => l_adr_value_type_code
16335         , p_transaction_coa_id      => l_adr_transaction_coa_id
16336         , p_accounting_coa_id       => l_adr_accounting_coa_id
16337         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
16338         , p_flex_value_set_id       => l_adr_flex_value_set_id
16339         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
16340         , p_adr_type_code           => 'S'
16341         , p_component_type          => l_component_type
16342         , p_component_code          => l_component_code
16343         , p_component_type_code     => l_component_type_code
16344         , p_component_appl_id       => l_component_appl_id
16345         , p_amb_context_code        => l_amb_context_code
16346         , p_entity_code             => 'AP_INVOICES'
16347         , p_event_class_code        => 'DEBIT MEMOS'
16348         , p_side                    => 'NA'
16349         );
16350 
16351   END IF;
16352 
16353    --
16354    --
16355    END IF;
16356    --
16357    -- Bug 4922099
16358    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16359           (NVL(l_enc_upg_option, 'N') = 'O')
16360         ) AND
16361         (l_bflow_method_code = 'PRIOR_ENTRY')
16362       )
16363    THEN
16364       IF
16365       --
16366       1 = 2
16367       --
16368       THEN
16369       xla_accounting_err_pkg.build_message
16370                                     (p_appli_s_name            => 'XLA'
16371                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16372                                     ,p_token_1                 => 'LINE_NUMBER'
16373                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16374                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16375                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16376                                                                              l_component_type
16377                                                                             ,l_component_code
16378                                                                             ,l_component_type_code
16379                                                                             ,l_component_appl_id
16380                                                                             ,l_amb_context_code
16381                                                                             ,l_entity_code
16382                                                                             ,l_event_class_code
16383                                                                            )
16384                                     ,p_token_3                 => 'OWNER'
16385                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16386                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16387                                                                           ,p_lookup_code    => l_component_type_code
16388                                                                          )
16389                                     ,p_token_4                 => 'PRODUCT_NAME'
16390                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16391                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16392                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16393                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16394                                     ,p_ae_header_id            =>  NULL
16395                                        );
16396 
16397         IF (C_LEVEL_ERROR>= g_log_level) THEN
16398                  trace
16399                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16400                       ,p_level    => C_LEVEL_ERROR
16401                       ,p_module   => l_log_module);
16402         END IF;
16403       END IF;
16404    END IF;
16405    --
16406    --
16407    ------------------------------------------------------------------------------------------------
16408    -- 4219869 Business Flow
16412    XLA_AE_LINES_PKG.ValidateCurrentLine;
16409    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16410    -- Prior Entry.  Currently, the following code is always generated.
16411    ------------------------------------------------------------------------------------------------
16413 
16414    ------------------------------------------------------------------------------------
16415    -- 4219869 Business Flow
16416    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16417    ------------------------------------------------------------------------------------
16418    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16419 
16420    ----------------------------------------------------------------------------------
16421    -- 4219869 Business Flow
16422    -- Update journal entry status -- Need to generate this within IF <condition>
16423    ----------------------------------------------------------------------------------
16424    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16425          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16426          ,p_balance_type_code => l_balance_type_code
16427          );
16428 
16429    -------------------------------------------------------------------------------------------
16430    -- 4262811 - Generate the Accrual Reversal lines
16431    -------------------------------------------------------------------------------------------
16432    BEGIN
16433       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16434                               (g_array_event(p_event_id).array_value_num('header_index'));
16435       IF l_acc_rev_flag IS NULL THEN
16436          l_acc_rev_flag := 'N';
16437       END IF;
16438    EXCEPTION
16439       WHEN OTHERS THEN
16440          l_acc_rev_flag := 'N';
16441    END;
16442    --
16443    IF (l_acc_rev_flag = 'Y') THEN
16444 
16445        -- 4645092  ------------------------------------------------------------------------------
16446        -- To allow MPA report to determine if it should generate report process
16447        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16448        ------------------------------------------------------------------------------------------
16449 
16450        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16451        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16452    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16453    -- call ADRs
16454    -- Bug 4922099
16455    --
16456    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16457         (NVL(l_actual_upg_option, 'N') = 'O') OR
16458         (NVL(l_enc_upg_option, 'N') = 'O')
16459       )
16460    THEN
16461    NULL;
16462    --
16463    --
16464    
16465   l_ccid := AcctDerRule_3(
16466            p_application_id           => p_application_id
16467          , p_ae_header_id             => l_ae_header_id 
16468 , p_source_2 => p_source_2
16469          , x_transaction_coa_id       => l_adr_transaction_coa_id
16470          , x_accounting_coa_id        => l_adr_accounting_coa_id
16471          , x_value_type_code          => l_adr_value_type_code
16472          , p_side                     => 'NA'
16473    );
16474 
16475    xla_ae_lines_pkg.set_ccid(
16476     p_code_combination_id          => l_ccid
16477   , p_value_type_code              => l_adr_value_type_code
16478   , p_transaction_coa_id           => l_adr_transaction_coa_id
16479   , p_accounting_coa_id            => l_adr_accounting_coa_id
16480   , p_adr_code                     => 'AP_INVOICE_DIST'
16481   , p_adr_type_code                => 'S'
16482   , p_component_type               => l_component_type
16483   , p_component_code               => l_component_code
16484   , p_component_type_code          => l_component_type_code
16485   , p_component_appl_id            => l_component_appl_id
16486   , p_amb_context_code             => l_amb_context_code
16487   , p_side                         => 'NA'
16488   );
16489 
16490 
16491    l_segment := AcctDerRule_5(
16492            p_application_id           => p_application_id
16493          , p_ae_header_id             => l_ae_header_id 
16494 , p_source_3 => p_source_3
16495          , x_transaction_coa_id       => l_adr_transaction_coa_id
16496          , x_accounting_coa_id        => l_adr_accounting_coa_id
16497          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
16498          , x_flex_value_set_id        => l_adr_flex_value_set_id
16499          , x_value_type_code          => l_adr_value_type_code
16500          , x_value_combination_id     => l_adr_value_combination_id
16501          , x_value_segment_code       => l_adr_value_segment_code
16502          , p_side                     => 'NA'
16503          , p_override_seg_flag        => 'Y'
16504    );
16505 
16506    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
16507 
16508       xla_ae_lines_pkg.set_segment(
16509           p_to_segment_code         => 'GL_ACCOUNT'
16510         , p_segment_value           => l_segment
16511         , p_from_segment_code       => l_adr_value_segment_code
16512         , p_from_combination_id     => l_adr_value_combination_id
16513         , p_value_type_code         => l_adr_value_type_code
16514         , p_transaction_coa_id      => l_adr_transaction_coa_id
16515         , p_accounting_coa_id       => l_adr_accounting_coa_id
16516         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
16517         , p_flex_value_set_id       => l_adr_flex_value_set_id
16518         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
16522         , p_component_type_code     => l_component_type_code
16519         , p_adr_type_code           => 'S'
16520         , p_component_type          => l_component_type
16521         , p_component_code          => l_component_code
16523         , p_component_appl_id       => l_component_appl_id
16524         , p_amb_context_code        => l_amb_context_code
16525         , p_entity_code             => 'AP_INVOICES'
16526         , p_event_class_code        => 'DEBIT MEMOS'
16527         , p_side                    => 'NA'
16528         );
16529 
16530   END IF;
16531 
16532    --
16533    --
16534    END IF;
16535 
16536        --
16537        -- Update the line information that should be overwritten
16538        --
16539        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16540                                          p_header_num   => 1);
16541        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16542 
16543        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16544 
16545        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16546           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16547        END IF;
16548 
16549       --
16550       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16551       --
16552       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16553           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16554       ELSE
16555           ---------------------------------------------------------------------------------------------------
16556           -- 4262811a Switch Sign
16557           ---------------------------------------------------------------------------------------------------
16558           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16559           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16560                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16561           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16562                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16563           -- 5132302
16564           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16565                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16566 
16567       END IF;
16568 
16569       -- 4955764
16570       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16571       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16572 
16573 
16574       XLA_AE_LINES_PKG.ValidateCurrentLine;
16575       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16576 
16577       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16578                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16579                ,p_balance_type_code => l_balance_type_code);
16580 
16581    END IF;
16582 
16583    -----------------------------------------------------------------------------------------
16584    -- 4262811 Multiperiod Accounting
16585    -----------------------------------------------------------------------------------------
16586      -- No MPA option is assigned.
16587 
16588 
16589 END IF;
16590 END IF;
16591 --
16592 
16593 --
16594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16595    trace
16596       (p_msg      => 'END of AcctLineType_34'
16597       ,p_level    => C_LEVEL_PROCEDURE
16598       ,p_module   => l_log_module);
16599 END IF;
16600 --
16601 EXCEPTION
16602   WHEN xla_exceptions_pkg.application_exception THEN
16603       RAISE;
16604   WHEN OTHERS THEN
16605        xla_exceptions_pkg.raise_message
16606            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_34');
16607 END AcctLineType_34;
16608 --
16609 
16610 ---------------------------------------
16611 --
16612 -- PRIVATE FUNCTION
16613 --         AcctLineType_35
16614 --
16615 ---------------------------------------
16616 PROCEDURE AcctLineType_35 (
16617   p_application_id        IN NUMBER
16618  ,p_event_id              IN NUMBER
16619  ,p_calculate_acctd_flag  IN VARCHAR2
16620  ,p_calculate_g_l_flag    IN VARCHAR2
16621  ,p_actual_flag           IN OUT VARCHAR2
16622  ,p_balance_type_code     OUT VARCHAR2
16623  ,p_gain_or_loss_ref      OUT VARCHAR2
16624  
16625 --Invoice Distribution Description
16626  , p_source_1            IN VARCHAR2
16627 --Invoice Distribution Account
16628  , p_source_2            IN NUMBER
16629 --Invoice Distribution Type
16630  , p_source_8            IN VARCHAR2
16631  , p_source_8_meaning    IN VARCHAR2
16632 --Federal Prior Year Flag
16633  , p_source_9            IN VARCHAR2
16634 --Accrue on Receipt Option
16635  , p_source_11            IN VARCHAR2
16636  , p_source_11_meaning    IN VARCHAR2
16637 --Purchase Order Distribution Identifier
16638  , p_source_12            IN NUMBER
16639 --Invoice Type
16640  , p_source_13            IN VARCHAR2
16641  , p_source_13_meaning    IN VARCHAR2
16642 --Federal Adjustment Type
16643  , p_source_14            IN VARCHAR2
16647  , p_source_17            IN VARCHAR2
16644 --Accounting Reversal Indicator
16645  , p_source_15            IN VARCHAR2
16646 --Distribution Link Type
16648 --Allocation to Main Distribution Identifier
16649  , p_source_19            IN NUMBER
16650 --Invoice Identifier
16651  , p_source_20            IN NUMBER
16652 --Business Flow Accounts Payable Application Identifier
16653  , p_source_21            IN NUMBER
16654 --Business Flow Invoice Distribution Type
16655  , p_source_22            IN VARCHAR2
16656 --Business Flow Invoice Entity Code
16657  , p_source_23            IN VARCHAR2
16658 --Business Flow Invoice Distribution Identifier
16659  , p_source_24            IN NUMBER
16660 --Business Flow Invoice Identifier
16661  , p_source_25            IN NUMBER
16662 --Invoice Distribution Identifier
16663  , p_source_26            IN NUMBER
16664 --Payables Encumbrance Upgrade Credit Account
16665  , p_source_27            IN NUMBER
16666 --Payables Encumbrance Upgrade Credit Amount
16667  , p_source_28            IN NUMBER
16668 --Invoice Currency Code
16669  , p_source_29            IN VARCHAR2
16670 --Payables Encumbrance Upgrade Credit Base Amount
16671  , p_source_30            IN NUMBER
16672 --Payables Encumbrance Upgrade Debit Account
16673  , p_source_31            IN NUMBER
16674 --Payables Encumbrance Upgrade Debit Amount
16675  , p_source_32            IN NUMBER
16676 --Payables Encumbrance Upgrade Debit Base Amount
16677  , p_source_33            IN NUMBER
16678 --Payables Encumbrance Upgrade Option
16679  , p_source_34            IN VARCHAR2
16680 --Invoice Exchange Date
16681  , p_source_36            IN DATE
16682 --Invoice Exchange Rate
16683  , p_source_37            IN NUMBER
16684 --Invoice Exchange Rate Type
16685  , p_source_38            IN VARCHAR2
16686 --Deferred Accounting End Date
16687  , p_source_39            IN DATE
16688 --Deferred Accounting Option
16689  , p_source_40            IN VARCHAR2
16690 --Deferred Accounting Start Date
16691  , p_source_41            IN DATE
16692 --Override Accounted Amount Indicator
16693  , p_source_42            IN VARCHAR2
16694  , p_source_42_meaning    IN VARCHAR2
16695 --Invoice Supplier Identifier
16696  , p_source_43            IN NUMBER
16697 --Invoice Supplier Site Identifier
16698  , p_source_44            IN NUMBER
16699 --Third Party Type
16700  , p_source_45            IN VARCHAR2
16701 --Parent Reversal Identifier
16702  , p_source_46            IN NUMBER
16703 --Invoice Distribution Tax Line Identifier
16704  , p_source_48            IN NUMBER
16705 --Invoice Distribution Tax Distribution Identifier from Tax
16706  , p_source_49            IN NUMBER
16707 --Invoice Distribution Summary Tax Line Identifier
16708  , p_source_50            IN NUMBER
16709 --Payables Upgrade Credit Encumbrance Type Identifier
16710  , p_source_51            IN NUMBER
16711 --Payables Upgrade Debit Encumbrance Type Identifier
16712  , p_source_52            IN NUMBER
16713 --Invoice Distribution Amount
16714  , p_source_55            IN NUMBER
16715 --Invoice Distribution Ledger Amount
16716  , p_source_56            IN NUMBER
16717 )
16718 IS
16719 
16720 l_component_type              VARCHAR2(80);
16721 l_component_code              VARCHAR2(30);
16722 l_component_type_code         VARCHAR2(1);
16723 l_component_appl_id           INTEGER;
16724 l_amb_context_code            VARCHAR2(30);
16725 l_entity_code                 VARCHAR2(30);
16726 l_event_class_code            VARCHAR2(30);
16727 l_ae_header_id                NUMBER;
16728 l_event_type_code             VARCHAR2(30);
16729 l_line_definition_code        VARCHAR2(30);
16730 l_line_definition_owner_code  VARCHAR2(1);
16731 --
16732 -- adr variables
16733 l_segment                     VARCHAR2(30);
16734 l_ccid                        NUMBER;
16735 l_adr_transaction_coa_id      NUMBER;
16736 l_adr_accounting_coa_id       NUMBER;
16737 l_adr_flexfield_segment_code  VARCHAR2(30);
16738 l_adr_flex_value_set_id       NUMBER;
16739 l_adr_value_type_code         VARCHAR2(30);
16740 l_adr_value_combination_id    NUMBER;
16741 l_adr_value_segment_code      VARCHAR2(30);
16742 
16743 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16744 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16745 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16746 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16747 
16748 -- 4262811 Variables ------------------------------------------------------------------------------------------
16749 l_entered_amt_idx             NUMBER;
16750 l_accted_amt_idx              NUMBER;
16751 l_acc_rev_flag                VARCHAR2(1);
16752 l_accrual_line_num            NUMBER;
16753 l_tmp_amt                     NUMBER;
16754 l_acc_rev_natural_side_code   VARCHAR2(1);
16755 
16756 l_num_entries                 NUMBER;
16757 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16758 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16759 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16760 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16761 l_recog_line_1                NUMBER;
16762 l_recog_line_2                NUMBER;
16763 
16764 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16765 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16769 
16766 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16767 
16768 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16770 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16771 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16772 
16773 ---------------------------------------------------------------------------------------------------------------
16774 
16775 
16776 --
16777 -- bulk performance
16778 --
16779 l_balance_type_code           VARCHAR2(1);
16780 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16781 l_log_module                  VARCHAR2(240);
16782 
16783 --
16784 -- Upgrade strategy
16785 --
16786 l_actual_upg_option           VARCHAR2(1);
16787 l_enc_upg_option           VARCHAR2(1);
16788 
16789 --
16790 BEGIN
16791 --
16792 IF g_log_enabled THEN
16793       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
16794 END IF;
16795 --
16796 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16797 
16798       trace
16799          (p_msg      => 'BEGIN of AcctLineType_35'
16800          ,p_level    => C_LEVEL_PROCEDURE
16801          ,p_module   => l_log_module);
16802 
16803 END IF;
16804 --
16805 l_component_type             := 'AMB_JLT';
16806 l_component_code             := 'FV_AP_DM_ UPWARD_PYA_CR';
16807 l_component_type_code        := 'S';
16808 l_component_appl_id          :=  200;
16809 l_amb_context_code           := 'DEFAULT';
16810 l_entity_code                := 'AP_INVOICES';
16811 l_event_class_code           := 'DEBIT MEMOS';
16812 l_event_type_code            := 'DEBIT MEMOS_ALL';
16813 l_line_definition_owner_code := 'S';
16814 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
16815 --
16816 l_balance_type_code          := 'A';
16817 l_segment                     := NULL;
16818 l_ccid                        := NULL;
16819 l_adr_transaction_coa_id      := NULL;
16820 l_adr_accounting_coa_id       := NULL;
16821 l_adr_flexfield_segment_code  := NULL;
16822 l_adr_flex_value_set_id       := NULL;
16823 l_adr_value_type_code         := NULL;
16824 l_adr_value_combination_id    := NULL;
16825 l_adr_value_segment_code      := NULL;
16826 
16827 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16828 l_bflow_class_code           := '';    -- 4219869 Business Flow
16829 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16830 l_budgetary_control_flag     := 'Y';
16831 
16832 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16833 l_bflow_applied_to_amt       := NULL; -- 5132302
16834 l_entered_amt_idx            := NULL;          -- 4262811
16835 l_accted_amt_idx             := NULL;          -- 4262811
16836 l_acc_rev_flag               := NULL;          -- 4262811
16837 l_accrual_line_num           := NULL;          -- 4262811
16838 l_tmp_amt                    := NULL;          -- 4262811
16839 --
16840  
16841 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16842     l_balance_type_code <> 'B' THEN
16843 IF NVL(p_source_13,'
16844 ') =  'DEBIT' AND 
16845 NVL(p_source_9,'
16846 ') =  'Y' AND 
16847 (NVL(p_source_8,'
16848 ') =  'ITEM' OR 
16849 NVL(p_source_8,'
16850 ') =  'ACCRUAL' OR 
16851 NVL(p_source_8,'
16852 ') =  'FREIGHT' OR 
16853 NVL(p_source_8,'
16854 ') =  'MISCELLANEOUS' OR 
16855 NVL(p_source_8,'
16856 ') =  'IPV') AND 
16857 NVL(p_source_14,'
16858 ') =  'Upward'
16859  THEN 
16860 
16861    --
16862    XLA_AE_LINES_PKG.SetNewLine;
16863 
16864    p_balance_type_code          := l_balance_type_code;
16865    -- set the flag so later we will know whether the gain loss line needs to be created
16866    
16867    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16868      p_actual_flag :='A';
16869    END IF;
16870 
16871    --
16872    -- bulk performance
16873    --
16874    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16875                                       p_header_num   => 0); -- 4262811
16876    --
16877    -- set accounting line options
16878    --
16879    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16880            p_natural_side_code          => 'D'
16881          , p_gain_or_loss_flag          => 'N'
16882          , p_gl_transfer_mode_code      => 'S'
16883          , p_acct_entry_type_code       => 'A'
16884          , p_switch_side_flag           => 'N'
16885          , p_merge_duplicate_code       => 'N'
16886          );
16887    --
16888    l_acc_rev_natural_side_code := 'C';  -- 4262811
16889    -- 
16890    --
16891    -- set accounting line type info
16892    --
16893    xla_ae_lines_pkg.SetAcctLineType
16894       (p_component_type             => l_component_type
16895       ,p_event_type_code            => l_event_type_code
16896       ,p_line_definition_owner_code => l_line_definition_owner_code
16897       ,p_line_definition_code       => l_line_definition_code
16898       ,p_accounting_line_code       => l_component_code
16899       ,p_accounting_line_type_code  => l_component_type_code
16900       ,p_accounting_line_appl_id    => l_component_appl_id
16901       ,p_amb_context_code           => l_amb_context_code
16902       ,p_entity_code                => l_entity_code
16906    --
16903       ,p_event_class_code           => l_event_class_code);
16904    --
16905    -- set accounting class
16907    xla_ae_lines_pkg.SetAcctClass(
16908            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
16909          , p_ae_header_id           => l_ae_header_id
16910          );
16911 
16912    --
16913    -- set rounding class
16914    --
16915    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16916                       'ACCOUNTSPAYABLE';
16917 
16918    --
16919    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16920    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16921    --
16922    -- bulk performance
16923    --
16924    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16925 
16926    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16927       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16928 
16929    -- 4955764
16930    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16932 
16933    -- 4458381 Public Sector Enh
16934    
16935    --
16936    -- set accounting attributes for the line type
16937    --
16938    l_entered_amt_idx := 23;
16939    l_accted_amt_idx  := 28;
16940    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16941    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16942    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
16943    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16944    l_rec_acct_attrs.array_num_value(2)  := 
16945 xla_ae_sources_pkg.GetSystemSourceNum(
16946    p_source_code           => 'XLA_EVENT_APPL_ID'
16947  , p_source_type_code      => 'Y'
16948  , p_source_application_id =>  602
16949 );
16950    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16951    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
16952    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16953    l_rec_acct_attrs.array_char_value(4)  := 
16954 xla_ae_sources_pkg.GetSystemSourceChar(
16955    p_source_code           => 'XLA_ENTITY_CODE'
16956  , p_source_type_code      => 'Y'
16957  , p_source_application_id =>  602
16958 );
16959    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16960    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
16961    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16962    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
16963    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
16964    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
16965    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16966    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
16967    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
16968    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
16969    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
16970    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
16971    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16972    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
16973    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
16974    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
16975    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
16976    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
16977    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
16978    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
16979    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
16980    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
16981    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
16982    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
16983    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
16984    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
16985    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
16986    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
16987    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
16988    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
16989    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
16990    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
16991    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
16992    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
16993    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
16994    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
16995    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
16996    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
16997    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
16998    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
16999    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
17000    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
17001    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
17002    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
17003    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
17007    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
17004    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
17005    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
17006    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
17008    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
17009    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
17010    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
17011    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
17012    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
17013    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
17014    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
17015    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
17016    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
17017    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
17018    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
17019    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
17020    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
17021    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
17022    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
17023    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
17024    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
17025    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
17026    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
17027    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
17028    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
17029    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
17030    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
17031    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
17032    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
17033    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
17034    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
17035 
17036    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17037    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17038 
17039    ---------------------------------------------------------------------------------------------------------------
17040    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17041    ---------------------------------------------------------------------------------------------------------------
17042    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17043 
17044    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17045    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17046 
17047    IF xla_accounting_cache_pkg.GetValueChar
17048          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17049          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17050    AND l_bflow_method_code = 'PRIOR_ENTRY'
17051 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17052    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17053          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17054        )
17055    THEN
17056          xla_ae_lines_pkg.BflowUpgEntry
17057            (p_business_method_code    => l_bflow_method_code
17058            ,p_business_class_code     => l_bflow_class_code
17059            ,p_balance_type            => l_balance_type_code);
17060    ELSE
17061       NULL;
17062 -- No business flow processing for business flow method of NONE.
17063    END IF;
17064 
17065    --
17066    -- call analytical criteria
17067    --
17068    
17069    --
17070    -- call description
17071    --
17072    
17073 xla_ae_lines_pkg.SetLineDescription(
17074    p_ae_header_id => l_ae_header_id
17075   ,p_description  => Description_2 (
17076      p_application_id         => p_application_id
17077    , p_ae_header_id           => l_ae_header_id 
17078 , p_source_1 => p_source_1
17079    )
17080 );
17081 
17082 
17083    --
17084    -- call ADRs
17085    -- Bug 4922099
17086    --
17087    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17088         (NVL(l_actual_upg_option, 'N') = 'O') OR
17089         (NVL(l_enc_upg_option, 'N') = 'O')
17090       )
17091    THEN
17092    NULL;
17093    --
17094    --
17095    
17096   l_ccid := AcctDerRule_3(
17097            p_application_id           => p_application_id
17098          , p_ae_header_id             => l_ae_header_id 
17099 , p_source_2 => p_source_2
17100          , x_transaction_coa_id       => l_adr_transaction_coa_id
17101          , x_accounting_coa_id        => l_adr_accounting_coa_id
17102          , x_value_type_code          => l_adr_value_type_code
17103          , p_side                     => 'NA'
17104    );
17105 
17106    xla_ae_lines_pkg.set_ccid(
17107     p_code_combination_id          => l_ccid
17108   , p_value_type_code              => l_adr_value_type_code
17109   , p_transaction_coa_id           => l_adr_transaction_coa_id
17110   , p_accounting_coa_id            => l_adr_accounting_coa_id
17111   , p_adr_code                     => 'AP_INVOICE_DIST'
17112   , p_adr_type_code                => 'S'
17113   , p_component_type               => l_component_type
17114   , p_component_code               => l_component_code
17118   , p_side                         => 'NA'
17115   , p_component_type_code          => l_component_type_code
17116   , p_component_appl_id            => l_component_appl_id
17117   , p_amb_context_code             => l_amb_context_code
17119   );
17120 
17121 
17122    l_segment := AcctDerRule_14(
17123            p_application_id           => p_application_id
17124          , p_ae_header_id             => l_ae_header_id 
17125 , p_source_11 => p_source_11
17126 , p_source_11_meaning => p_source_11_meaning
17127 , p_source_12 => p_source_12
17128          , x_transaction_coa_id       => l_adr_transaction_coa_id
17129          , x_accounting_coa_id        => l_adr_accounting_coa_id
17130          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
17131          , x_flex_value_set_id        => l_adr_flex_value_set_id
17132          , x_value_type_code          => l_adr_value_type_code
17133          , x_value_combination_id     => l_adr_value_combination_id
17134          , x_value_segment_code       => l_adr_value_segment_code
17135          , p_side                     => 'NA'
17136          , p_override_seg_flag        => 'Y'
17137    );
17138 
17139    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
17140 
17141       xla_ae_lines_pkg.set_segment(
17142           p_to_segment_code         => 'GL_ACCOUNT'
17143         , p_segment_value           => l_segment
17144         , p_from_segment_code       => l_adr_value_segment_code
17145         , p_from_combination_id     => l_adr_value_combination_id
17146         , p_value_type_code         => l_adr_value_type_code
17147         , p_transaction_coa_id      => l_adr_transaction_coa_id
17148         , p_accounting_coa_id       => l_adr_accounting_coa_id
17149         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
17150         , p_flex_value_set_id       => l_adr_flex_value_set_id
17151         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
17152         , p_adr_type_code           => 'S'
17153         , p_component_type          => l_component_type
17154         , p_component_code          => l_component_code
17155         , p_component_type_code     => l_component_type_code
17156         , p_component_appl_id       => l_component_appl_id
17157         , p_amb_context_code        => l_amb_context_code
17158         , p_entity_code             => 'AP_INVOICES'
17159         , p_event_class_code        => 'DEBIT MEMOS'
17160         , p_side                    => 'NA'
17161         );
17162 
17163   END IF;
17164 
17165    --
17166    --
17167    END IF;
17168    --
17169    -- Bug 4922099
17170    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17171           (NVL(l_enc_upg_option, 'N') = 'O')
17172         ) AND
17173         (l_bflow_method_code = 'PRIOR_ENTRY')
17174       )
17175    THEN
17176       IF
17177       --
17178       1 = 2
17179       --
17180       THEN
17181       xla_accounting_err_pkg.build_message
17182                                     (p_appli_s_name            => 'XLA'
17183                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17184                                     ,p_token_1                 => 'LINE_NUMBER'
17185                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17186                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17187                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17188                                                                              l_component_type
17189                                                                             ,l_component_code
17190                                                                             ,l_component_type_code
17191                                                                             ,l_component_appl_id
17192                                                                             ,l_amb_context_code
17193                                                                             ,l_entity_code
17194                                                                             ,l_event_class_code
17195                                                                            )
17196                                     ,p_token_3                 => 'OWNER'
17197                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17198                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17199                                                                           ,p_lookup_code    => l_component_type_code
17200                                                                          )
17201                                     ,p_token_4                 => 'PRODUCT_NAME'
17202                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17203                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17204                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17205                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17206                                     ,p_ae_header_id            =>  NULL
17207                                        );
17208 
17209         IF (C_LEVEL_ERROR>= g_log_level) THEN
17210                  trace
17211                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17212                       ,p_level    => C_LEVEL_ERROR
17213                       ,p_module   => l_log_module);
17217    --
17214         END IF;
17215       END IF;
17216    END IF;
17218    --
17219    ------------------------------------------------------------------------------------------------
17220    -- 4219869 Business Flow
17221    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17222    -- Prior Entry.  Currently, the following code is always generated.
17223    ------------------------------------------------------------------------------------------------
17224    XLA_AE_LINES_PKG.ValidateCurrentLine;
17225 
17226    ------------------------------------------------------------------------------------
17227    -- 4219869 Business Flow
17228    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17229    ------------------------------------------------------------------------------------
17230    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17231 
17232    ----------------------------------------------------------------------------------
17233    -- 4219869 Business Flow
17234    -- Update journal entry status -- Need to generate this within IF <condition>
17235    ----------------------------------------------------------------------------------
17236    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17237          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17238          ,p_balance_type_code => l_balance_type_code
17239          );
17240 
17241    -------------------------------------------------------------------------------------------
17242    -- 4262811 - Generate the Accrual Reversal lines
17243    -------------------------------------------------------------------------------------------
17244    BEGIN
17245       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17246                               (g_array_event(p_event_id).array_value_num('header_index'));
17247       IF l_acc_rev_flag IS NULL THEN
17248          l_acc_rev_flag := 'N';
17249       END IF;
17250    EXCEPTION
17251       WHEN OTHERS THEN
17252          l_acc_rev_flag := 'N';
17253    END;
17254    --
17255    IF (l_acc_rev_flag = 'Y') THEN
17256 
17257        -- 4645092  ------------------------------------------------------------------------------
17258        -- To allow MPA report to determine if it should generate report process
17259        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17260        ------------------------------------------------------------------------------------------
17261 
17262        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17263        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17264    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17265    -- call ADRs
17266    -- Bug 4922099
17267    --
17268    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17269         (NVL(l_actual_upg_option, 'N') = 'O') OR
17270         (NVL(l_enc_upg_option, 'N') = 'O')
17271       )
17272    THEN
17273    NULL;
17274    --
17275    --
17276    
17277   l_ccid := AcctDerRule_3(
17278            p_application_id           => p_application_id
17279          , p_ae_header_id             => l_ae_header_id 
17280 , p_source_2 => p_source_2
17281          , x_transaction_coa_id       => l_adr_transaction_coa_id
17282          , x_accounting_coa_id        => l_adr_accounting_coa_id
17283          , x_value_type_code          => l_adr_value_type_code
17284          , p_side                     => 'NA'
17285    );
17286 
17287    xla_ae_lines_pkg.set_ccid(
17288     p_code_combination_id          => l_ccid
17289   , p_value_type_code              => l_adr_value_type_code
17290   , p_transaction_coa_id           => l_adr_transaction_coa_id
17291   , p_accounting_coa_id            => l_adr_accounting_coa_id
17292   , p_adr_code                     => 'AP_INVOICE_DIST'
17293   , p_adr_type_code                => 'S'
17294   , p_component_type               => l_component_type
17295   , p_component_code               => l_component_code
17296   , p_component_type_code          => l_component_type_code
17297   , p_component_appl_id            => l_component_appl_id
17298   , p_amb_context_code             => l_amb_context_code
17299   , p_side                         => 'NA'
17300   );
17301 
17302 
17303    l_segment := AcctDerRule_14(
17304            p_application_id           => p_application_id
17305          , p_ae_header_id             => l_ae_header_id 
17306 , p_source_11 => p_source_11
17307 , p_source_11_meaning => p_source_11_meaning
17308 , p_source_12 => p_source_12
17309          , x_transaction_coa_id       => l_adr_transaction_coa_id
17310          , x_accounting_coa_id        => l_adr_accounting_coa_id
17311          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
17312          , x_flex_value_set_id        => l_adr_flex_value_set_id
17313          , x_value_type_code          => l_adr_value_type_code
17314          , x_value_combination_id     => l_adr_value_combination_id
17315          , x_value_segment_code       => l_adr_value_segment_code
17316          , p_side                     => 'NA'
17317          , p_override_seg_flag        => 'Y'
17318    );
17319 
17320    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
17321 
17322       xla_ae_lines_pkg.set_segment(
17323           p_to_segment_code         => 'GL_ACCOUNT'
17324         , p_segment_value           => l_segment
17325         , p_from_segment_code       => l_adr_value_segment_code
17326         , p_from_combination_id     => l_adr_value_combination_id
17327         , p_value_type_code         => l_adr_value_type_code
17331         , p_flex_value_set_id       => l_adr_flex_value_set_id
17328         , p_transaction_coa_id      => l_adr_transaction_coa_id
17329         , p_accounting_coa_id       => l_adr_accounting_coa_id
17330         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
17332         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
17333         , p_adr_type_code           => 'S'
17334         , p_component_type          => l_component_type
17335         , p_component_code          => l_component_code
17336         , p_component_type_code     => l_component_type_code
17337         , p_component_appl_id       => l_component_appl_id
17338         , p_amb_context_code        => l_amb_context_code
17339         , p_entity_code             => 'AP_INVOICES'
17340         , p_event_class_code        => 'DEBIT MEMOS'
17341         , p_side                    => 'NA'
17342         );
17343 
17344   END IF;
17345 
17346    --
17347    --
17348    END IF;
17349 
17350        --
17351        -- Update the line information that should be overwritten
17352        --
17353        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17354                                          p_header_num   => 1);
17355        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17356 
17357        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17358 
17359        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17360           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17361        END IF;
17362 
17363       --
17364       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17365       --
17366       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17367           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17368       ELSE
17369           ---------------------------------------------------------------------------------------------------
17370           -- 4262811a Switch Sign
17371           ---------------------------------------------------------------------------------------------------
17372           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17373           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17374                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17375           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17376                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17377           -- 5132302
17378           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17379                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17380 
17381       END IF;
17382 
17383       -- 4955764
17384       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17385       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17386 
17387 
17388       XLA_AE_LINES_PKG.ValidateCurrentLine;
17389       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17390 
17391       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17392                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17393                ,p_balance_type_code => l_balance_type_code);
17394 
17395    END IF;
17396 
17397    -----------------------------------------------------------------------------------------
17398    -- 4262811 Multiperiod Accounting
17399    -----------------------------------------------------------------------------------------
17400      -- No MPA option is assigned.
17401 
17402 
17403 END IF;
17404 END IF;
17405 --
17406 
17407 --
17408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17409    trace
17410       (p_msg      => 'END of AcctLineType_35'
17411       ,p_level    => C_LEVEL_PROCEDURE
17412       ,p_module   => l_log_module);
17413 END IF;
17414 --
17415 EXCEPTION
17416   WHEN xla_exceptions_pkg.application_exception THEN
17417       RAISE;
17418   WHEN OTHERS THEN
17419        xla_exceptions_pkg.raise_message
17420            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_35');
17421 END AcctLineType_35;
17422 --
17423 
17424 ---------------------------------------
17425 --
17426 -- PRIVATE FUNCTION
17427 --         AcctLineType_36
17428 --
17429 ---------------------------------------
17430 PROCEDURE AcctLineType_36 (
17431   p_application_id        IN NUMBER
17432  ,p_event_id              IN NUMBER
17433  ,p_calculate_acctd_flag  IN VARCHAR2
17434  ,p_calculate_g_l_flag    IN VARCHAR2
17435  ,p_actual_flag           IN OUT VARCHAR2
17436  ,p_balance_type_code     OUT VARCHAR2
17437  ,p_gain_or_loss_ref      OUT VARCHAR2
17438  
17439 --Invoice Distribution Description
17440  , p_source_1            IN VARCHAR2
17441 --Invoice Distribution Account
17442  , p_source_2            IN NUMBER
17443 --Federal Fund Category
17444  , p_source_4            IN VARCHAR2
17445 --Federal Fund Expired Status
17446  , p_source_5            IN VARCHAR2
17447 --Federal Fund Category Description
17451  , p_source_8_meaning    IN VARCHAR2
17448  , p_source_6            IN VARCHAR2
17449 --Invoice Distribution Type
17450  , p_source_8            IN VARCHAR2
17452 --Federal Prior Year Flag
17453  , p_source_9            IN VARCHAR2
17454 --Invoice Type
17455  , p_source_13            IN VARCHAR2
17456  , p_source_13_meaning    IN VARCHAR2
17457 --Federal Adjustment Type
17458  , p_source_14            IN VARCHAR2
17459 --Accounting Reversal Indicator
17460  , p_source_15            IN VARCHAR2
17461 --Distribution Link Type
17462  , p_source_17            IN VARCHAR2
17463 --Allocation to Main Distribution Identifier
17464  , p_source_19            IN NUMBER
17465 --Invoice Identifier
17466  , p_source_20            IN NUMBER
17467 --Business Flow Accounts Payable Application Identifier
17468  , p_source_21            IN NUMBER
17469 --Business Flow Invoice Distribution Type
17470  , p_source_22            IN VARCHAR2
17471 --Business Flow Invoice Entity Code
17472  , p_source_23            IN VARCHAR2
17473 --Business Flow Invoice Distribution Identifier
17474  , p_source_24            IN NUMBER
17475 --Business Flow Invoice Identifier
17476  , p_source_25            IN NUMBER
17477 --Invoice Distribution Identifier
17478  , p_source_26            IN NUMBER
17479 --Payables Encumbrance Upgrade Credit Account
17480  , p_source_27            IN NUMBER
17481 --Payables Encumbrance Upgrade Credit Amount
17482  , p_source_28            IN NUMBER
17483 --Invoice Currency Code
17484  , p_source_29            IN VARCHAR2
17485 --Payables Encumbrance Upgrade Credit Base Amount
17486  , p_source_30            IN NUMBER
17487 --Payables Encumbrance Upgrade Debit Account
17488  , p_source_31            IN NUMBER
17489 --Payables Encumbrance Upgrade Debit Amount
17490  , p_source_32            IN NUMBER
17491 --Payables Encumbrance Upgrade Debit Base Amount
17492  , p_source_33            IN NUMBER
17493 --Payables Encumbrance Upgrade Option
17494  , p_source_34            IN VARCHAR2
17495 --Invoice Exchange Date
17496  , p_source_36            IN DATE
17497 --Invoice Exchange Rate
17498  , p_source_37            IN NUMBER
17499 --Invoice Exchange Rate Type
17500  , p_source_38            IN VARCHAR2
17501 --Deferred Accounting End Date
17502  , p_source_39            IN DATE
17503 --Deferred Accounting Option
17504  , p_source_40            IN VARCHAR2
17505 --Deferred Accounting Start Date
17506  , p_source_41            IN DATE
17507 --Override Accounted Amount Indicator
17508  , p_source_42            IN VARCHAR2
17509  , p_source_42_meaning    IN VARCHAR2
17510 --Invoice Supplier Identifier
17511  , p_source_43            IN NUMBER
17512 --Invoice Supplier Site Identifier
17513  , p_source_44            IN NUMBER
17514 --Third Party Type
17515  , p_source_45            IN VARCHAR2
17516 --Parent Reversal Identifier
17517  , p_source_46            IN NUMBER
17518 --Invoice Distribution Tax Line Identifier
17519  , p_source_48            IN NUMBER
17520 --Invoice Distribution Tax Distribution Identifier from Tax
17521  , p_source_49            IN NUMBER
17522 --Invoice Distribution Summary Tax Line Identifier
17523  , p_source_50            IN NUMBER
17524 --Payables Upgrade Credit Encumbrance Type Identifier
17525  , p_source_51            IN NUMBER
17526 --Payables Upgrade Debit Encumbrance Type Identifier
17527  , p_source_52            IN NUMBER
17528 --Invoice Distribution Amount
17529  , p_source_55            IN NUMBER
17530 --Invoice Distribution Ledger Amount
17531  , p_source_56            IN NUMBER
17532 )
17533 IS
17534 
17535 l_component_type              VARCHAR2(80);
17536 l_component_code              VARCHAR2(30);
17537 l_component_type_code         VARCHAR2(1);
17538 l_component_appl_id           INTEGER;
17539 l_amb_context_code            VARCHAR2(30);
17540 l_entity_code                 VARCHAR2(30);
17541 l_event_class_code            VARCHAR2(30);
17542 l_ae_header_id                NUMBER;
17543 l_event_type_code             VARCHAR2(30);
17544 l_line_definition_code        VARCHAR2(30);
17545 l_line_definition_owner_code  VARCHAR2(1);
17546 --
17547 -- adr variables
17548 l_segment                     VARCHAR2(30);
17549 l_ccid                        NUMBER;
17550 l_adr_transaction_coa_id      NUMBER;
17551 l_adr_accounting_coa_id       NUMBER;
17552 l_adr_flexfield_segment_code  VARCHAR2(30);
17553 l_adr_flex_value_set_id       NUMBER;
17554 l_adr_value_type_code         VARCHAR2(30);
17555 l_adr_value_combination_id    NUMBER;
17556 l_adr_value_segment_code      VARCHAR2(30);
17557 
17558 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17559 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17560 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17561 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17562 
17563 -- 4262811 Variables ------------------------------------------------------------------------------------------
17564 l_entered_amt_idx             NUMBER;
17565 l_accted_amt_idx              NUMBER;
17566 l_acc_rev_flag                VARCHAR2(1);
17567 l_accrual_line_num            NUMBER;
17568 l_tmp_amt                     NUMBER;
17569 l_acc_rev_natural_side_code   VARCHAR2(1);
17570 
17571 l_num_entries                 NUMBER;
17572 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17573 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17577 l_recog_line_2                NUMBER;
17574 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17575 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17576 l_recog_line_1                NUMBER;
17578 
17579 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17580 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17581 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17582 
17583 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17584 
17585 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17586 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17587 
17588 ---------------------------------------------------------------------------------------------------------------
17589 
17590 
17591 --
17592 -- bulk performance
17593 --
17594 l_balance_type_code           VARCHAR2(1);
17595 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17596 l_log_module                  VARCHAR2(240);
17597 
17598 --
17599 -- Upgrade strategy
17600 --
17601 l_actual_upg_option           VARCHAR2(1);
17602 l_enc_upg_option           VARCHAR2(1);
17603 
17604 --
17605 BEGIN
17606 --
17607 IF g_log_enabled THEN
17608       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
17609 END IF;
17610 --
17611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17612 
17613       trace
17614          (p_msg      => 'BEGIN of AcctLineType_36'
17615          ,p_level    => C_LEVEL_PROCEDURE
17616          ,p_module   => l_log_module);
17617 
17618 END IF;
17619 --
17620 l_component_type             := 'AMB_JLT';
17621 l_component_code             := 'FV_AP_DM_ UPWARD_PYA_DR';
17622 l_component_type_code        := 'S';
17623 l_component_appl_id          :=  200;
17624 l_amb_context_code           := 'DEFAULT';
17625 l_entity_code                := 'AP_INVOICES';
17626 l_event_class_code           := 'DEBIT MEMOS';
17627 l_event_type_code            := 'DEBIT MEMOS_ALL';
17628 l_line_definition_owner_code := 'S';
17629 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
17630 --
17631 l_balance_type_code          := 'A';
17632 l_segment                     := NULL;
17633 l_ccid                        := NULL;
17634 l_adr_transaction_coa_id      := NULL;
17635 l_adr_accounting_coa_id       := NULL;
17636 l_adr_flexfield_segment_code  := NULL;
17637 l_adr_flex_value_set_id       := NULL;
17638 l_adr_value_type_code         := NULL;
17639 l_adr_value_combination_id    := NULL;
17640 l_adr_value_segment_code      := NULL;
17641 
17642 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17643 l_bflow_class_code           := '';    -- 4219869 Business Flow
17644 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17645 l_budgetary_control_flag     := 'Y';
17646 
17647 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17648 l_bflow_applied_to_amt       := NULL; -- 5132302
17649 l_entered_amt_idx            := NULL;          -- 4262811
17650 l_accted_amt_idx             := NULL;          -- 4262811
17651 l_acc_rev_flag               := NULL;          -- 4262811
17652 l_accrual_line_num           := NULL;          -- 4262811
17653 l_tmp_amt                    := NULL;          -- 4262811
17654 --
17655  
17656 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17657     l_balance_type_code <> 'B' THEN
17658 IF NVL(p_source_13,'
17659 ') =  'DEBIT' AND 
17660 NVL(p_source_9,'
17661 ') =  'Y' AND 
17662 (NVL(p_source_8,'
17663 ') =  'ITEM' OR 
17664 NVL(p_source_8,'
17665 ') =  'ACCRUAL' OR 
17666 NVL(p_source_8,'
17667 ') =  'FREIGHT' OR 
17668 NVL(p_source_8,'
17669 ') =  'MISCELLANEOUS' OR 
17670 NVL(p_source_8,'
17671 ') =  'IPV') AND 
17672 NVL(p_source_14,'
17673 ') =  'Upward'
17674  THEN 
17675 
17676    --
17677    XLA_AE_LINES_PKG.SetNewLine;
17678 
17679    p_balance_type_code          := l_balance_type_code;
17680    -- set the flag so later we will know whether the gain loss line needs to be created
17681    
17682    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17683      p_actual_flag :='A';
17684    END IF;
17685 
17686    --
17687    -- bulk performance
17688    --
17689    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17690                                       p_header_num   => 0); -- 4262811
17691    --
17692    -- set accounting line options
17693    --
17694    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17695            p_natural_side_code          => 'C'
17696          , p_gain_or_loss_flag          => 'N'
17697          , p_gl_transfer_mode_code      => 'S'
17698          , p_acct_entry_type_code       => 'A'
17699          , p_switch_side_flag           => 'N'
17700          , p_merge_duplicate_code       => 'N'
17701          );
17702    --
17703    l_acc_rev_natural_side_code := 'D';  -- 4262811
17704    -- 
17705    --
17706    -- set accounting line type info
17707    --
17708    xla_ae_lines_pkg.SetAcctLineType
17709       (p_component_type             => l_component_type
17710       ,p_event_type_code            => l_event_type_code
17711       ,p_line_definition_owner_code => l_line_definition_owner_code
17715       ,p_accounting_line_appl_id    => l_component_appl_id
17712       ,p_line_definition_code       => l_line_definition_code
17713       ,p_accounting_line_code       => l_component_code
17714       ,p_accounting_line_type_code  => l_component_type_code
17716       ,p_amb_context_code           => l_amb_context_code
17717       ,p_entity_code                => l_entity_code
17718       ,p_event_class_code           => l_event_class_code);
17719    --
17720    -- set accounting class
17721    --
17722    xla_ae_lines_pkg.SetAcctClass(
17723            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
17724          , p_ae_header_id           => l_ae_header_id
17725          );
17726 
17727    --
17728    -- set rounding class
17729    --
17730    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17731                       'ACCOUNTSPAYABLE';
17732 
17733    --
17734    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17735    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17736    --
17737    -- bulk performance
17738    --
17739    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17740 
17741    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17742       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17743 
17744    -- 4955764
17745    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17747 
17748    -- 4458381 Public Sector Enh
17749    
17750    --
17751    -- set accounting attributes for the line type
17752    --
17753    l_entered_amt_idx := 23;
17754    l_accted_amt_idx  := 28;
17755    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17756    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17757    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
17758    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
17759    l_rec_acct_attrs.array_num_value(2)  := 
17760 xla_ae_sources_pkg.GetSystemSourceNum(
17761    p_source_code           => 'XLA_EVENT_APPL_ID'
17762  , p_source_type_code      => 'Y'
17763  , p_source_application_id =>  602
17764 );
17765    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
17766    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
17767    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
17768    l_rec_acct_attrs.array_char_value(4)  := 
17769 xla_ae_sources_pkg.GetSystemSourceChar(
17770    p_source_code           => 'XLA_ENTITY_CODE'
17771  , p_source_type_code      => 'Y'
17772  , p_source_application_id =>  602
17773 );
17774    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
17775    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
17776    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
17777    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
17778    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
17779    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
17780    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17781    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
17782    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
17783    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
17784    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
17785    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
17786    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17787    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
17788    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
17789    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
17790    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
17791    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
17792    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
17793    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
17794    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
17795    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
17796    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
17797    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
17798    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
17799    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
17800    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
17801    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
17802    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
17803    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
17804    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
17805    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
17806    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
17807    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
17808    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
17809    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
17810    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
17811    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
17812    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
17813    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
17817    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
17814    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
17815    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
17816    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
17818    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
17819    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
17820    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
17821    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
17822    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
17823    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
17824    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
17825    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
17826    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
17827    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
17828    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
17829    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
17830    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
17831    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
17832    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
17833    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
17834    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
17835    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
17836    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
17837    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
17838    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
17839    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
17840    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
17841    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
17842    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
17843    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
17844    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
17845    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
17846    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
17847    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
17848    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
17849    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
17850 
17851    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17852    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17853 
17854    ---------------------------------------------------------------------------------------------------------------
17855    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17856    ---------------------------------------------------------------------------------------------------------------
17857    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17858 
17859    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17860    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17861 
17862    IF xla_accounting_cache_pkg.GetValueChar
17863          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17864          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17865    AND l_bflow_method_code = 'PRIOR_ENTRY'
17866 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17867    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17868          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17869        )
17870    THEN
17871          xla_ae_lines_pkg.BflowUpgEntry
17872            (p_business_method_code    => l_bflow_method_code
17873            ,p_business_class_code     => l_bflow_class_code
17874            ,p_balance_type            => l_balance_type_code);
17875    ELSE
17876       NULL;
17877 -- No business flow processing for business flow method of NONE.
17878    END IF;
17879 
17880    --
17881    -- call analytical criteria
17882    --
17883    
17884    --
17885    -- call description
17886    --
17887    
17888 xla_ae_lines_pkg.SetLineDescription(
17889    p_ae_header_id => l_ae_header_id
17890   ,p_description  => Description_2 (
17891      p_application_id         => p_application_id
17892    , p_ae_header_id           => l_ae_header_id 
17893 , p_source_1 => p_source_1
17894    )
17895 );
17896 
17897 
17898    --
17899    -- call ADRs
17900    -- Bug 4922099
17901    --
17902    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17903         (NVL(l_actual_upg_option, 'N') = 'O') OR
17904         (NVL(l_enc_upg_option, 'N') = 'O')
17905       )
17906    THEN
17907    NULL;
17908    --
17909    --
17910    
17911   l_ccid := AcctDerRule_3(
17912            p_application_id           => p_application_id
17913          , p_ae_header_id             => l_ae_header_id 
17914 , p_source_2 => p_source_2
17915          , x_transaction_coa_id       => l_adr_transaction_coa_id
17916          , x_accounting_coa_id        => l_adr_accounting_coa_id
17917          , x_value_type_code          => l_adr_value_type_code
17918          , p_side                     => 'NA'
17919    );
17920 
17921    xla_ae_lines_pkg.set_ccid(
17922     p_code_combination_id          => l_ccid
17923   , p_value_type_code              => l_adr_value_type_code
17927   , p_adr_type_code                => 'S'
17924   , p_transaction_coa_id           => l_adr_transaction_coa_id
17925   , p_accounting_coa_id            => l_adr_accounting_coa_id
17926   , p_adr_code                     => 'AP_INVOICE_DIST'
17928   , p_component_type               => l_component_type
17929   , p_component_code               => l_component_code
17930   , p_component_type_code          => l_component_type_code
17931   , p_component_appl_id            => l_component_appl_id
17932   , p_amb_context_code             => l_amb_context_code
17933   , p_side                         => 'NA'
17934   );
17935 
17936 
17937    l_segment := AcctDerRule_8(
17938            p_application_id           => p_application_id
17939          , p_ae_header_id             => l_ae_header_id 
17940 , p_source_4 => p_source_4
17941 , p_source_5 => p_source_5
17942 , p_source_6 => p_source_6
17943          , x_transaction_coa_id       => l_adr_transaction_coa_id
17944          , x_accounting_coa_id        => l_adr_accounting_coa_id
17945          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
17946          , x_flex_value_set_id        => l_adr_flex_value_set_id
17947          , x_value_type_code          => l_adr_value_type_code
17948          , x_value_combination_id     => l_adr_value_combination_id
17949          , x_value_segment_code       => l_adr_value_segment_code
17950          , p_side                     => 'NA'
17951          , p_override_seg_flag        => 'Y'
17952    );
17953 
17954    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
17955 
17956       xla_ae_lines_pkg.set_segment(
17957           p_to_segment_code         => 'GL_ACCOUNT'
17958         , p_segment_value           => l_segment
17959         , p_from_segment_code       => l_adr_value_segment_code
17960         , p_from_combination_id     => l_adr_value_combination_id
17961         , p_value_type_code         => l_adr_value_type_code
17962         , p_transaction_coa_id      => l_adr_transaction_coa_id
17963         , p_accounting_coa_id       => l_adr_accounting_coa_id
17964         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
17965         , p_flex_value_set_id       => l_adr_flex_value_set_id
17966         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
17967         , p_adr_type_code           => 'S'
17968         , p_component_type          => l_component_type
17969         , p_component_code          => l_component_code
17970         , p_component_type_code     => l_component_type_code
17971         , p_component_appl_id       => l_component_appl_id
17972         , p_amb_context_code        => l_amb_context_code
17973         , p_entity_code             => 'AP_INVOICES'
17974         , p_event_class_code        => 'DEBIT MEMOS'
17975         , p_side                    => 'NA'
17976         );
17977 
17978   END IF;
17979 
17980    --
17981    --
17982    END IF;
17983    --
17984    -- Bug 4922099
17985    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17986           (NVL(l_enc_upg_option, 'N') = 'O')
17987         ) AND
17988         (l_bflow_method_code = 'PRIOR_ENTRY')
17989       )
17990    THEN
17991       IF
17992       --
17993       1 = 2
17994       --
17995       THEN
17996       xla_accounting_err_pkg.build_message
17997                                     (p_appli_s_name            => 'XLA'
17998                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17999                                     ,p_token_1                 => 'LINE_NUMBER'
18000                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18001                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18002                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18003                                                                              l_component_type
18004                                                                             ,l_component_code
18005                                                                             ,l_component_type_code
18006                                                                             ,l_component_appl_id
18007                                                                             ,l_amb_context_code
18008                                                                             ,l_entity_code
18009                                                                             ,l_event_class_code
18010                                                                            )
18011                                     ,p_token_3                 => 'OWNER'
18012                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18013                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18014                                                                           ,p_lookup_code    => l_component_type_code
18015                                                                          )
18016                                     ,p_token_4                 => 'PRODUCT_NAME'
18017                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18018                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18019                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18020                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18021                                     ,p_ae_header_id            =>  NULL
18025                  trace
18022                                        );
18023 
18024         IF (C_LEVEL_ERROR>= g_log_level) THEN
18026                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18027                       ,p_level    => C_LEVEL_ERROR
18028                       ,p_module   => l_log_module);
18029         END IF;
18030       END IF;
18031    END IF;
18032    --
18033    --
18034    ------------------------------------------------------------------------------------------------
18035    -- 4219869 Business Flow
18036    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18037    -- Prior Entry.  Currently, the following code is always generated.
18038    ------------------------------------------------------------------------------------------------
18039    XLA_AE_LINES_PKG.ValidateCurrentLine;
18040 
18041    ------------------------------------------------------------------------------------
18042    -- 4219869 Business Flow
18043    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18044    ------------------------------------------------------------------------------------
18045    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18046 
18047    ----------------------------------------------------------------------------------
18048    -- 4219869 Business Flow
18049    -- Update journal entry status -- Need to generate this within IF <condition>
18050    ----------------------------------------------------------------------------------
18051    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18052          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18053          ,p_balance_type_code => l_balance_type_code
18054          );
18055 
18056    -------------------------------------------------------------------------------------------
18057    -- 4262811 - Generate the Accrual Reversal lines
18058    -------------------------------------------------------------------------------------------
18059    BEGIN
18060       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18061                               (g_array_event(p_event_id).array_value_num('header_index'));
18062       IF l_acc_rev_flag IS NULL THEN
18063          l_acc_rev_flag := 'N';
18064       END IF;
18065    EXCEPTION
18066       WHEN OTHERS THEN
18067          l_acc_rev_flag := 'N';
18068    END;
18069    --
18070    IF (l_acc_rev_flag = 'Y') THEN
18071 
18072        -- 4645092  ------------------------------------------------------------------------------
18073        -- To allow MPA report to determine if it should generate report process
18074        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18075        ------------------------------------------------------------------------------------------
18076 
18077        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18078        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18079    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18080    -- call ADRs
18081    -- Bug 4922099
18082    --
18083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18084         (NVL(l_actual_upg_option, 'N') = 'O') OR
18085         (NVL(l_enc_upg_option, 'N') = 'O')
18086       )
18087    THEN
18088    NULL;
18089    --
18090    --
18091    
18092   l_ccid := AcctDerRule_3(
18093            p_application_id           => p_application_id
18094          , p_ae_header_id             => l_ae_header_id 
18095 , p_source_2 => p_source_2
18096          , x_transaction_coa_id       => l_adr_transaction_coa_id
18097          , x_accounting_coa_id        => l_adr_accounting_coa_id
18098          , x_value_type_code          => l_adr_value_type_code
18099          , p_side                     => 'NA'
18100    );
18101 
18102    xla_ae_lines_pkg.set_ccid(
18103     p_code_combination_id          => l_ccid
18104   , p_value_type_code              => l_adr_value_type_code
18105   , p_transaction_coa_id           => l_adr_transaction_coa_id
18106   , p_accounting_coa_id            => l_adr_accounting_coa_id
18107   , p_adr_code                     => 'AP_INVOICE_DIST'
18108   , p_adr_type_code                => 'S'
18109   , p_component_type               => l_component_type
18110   , p_component_code               => l_component_code
18111   , p_component_type_code          => l_component_type_code
18112   , p_component_appl_id            => l_component_appl_id
18113   , p_amb_context_code             => l_amb_context_code
18114   , p_side                         => 'NA'
18115   );
18116 
18117 
18118    l_segment := AcctDerRule_8(
18119            p_application_id           => p_application_id
18120          , p_ae_header_id             => l_ae_header_id 
18121 , p_source_4 => p_source_4
18122 , p_source_5 => p_source_5
18123 , p_source_6 => p_source_6
18124          , x_transaction_coa_id       => l_adr_transaction_coa_id
18125          , x_accounting_coa_id        => l_adr_accounting_coa_id
18126          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
18127          , x_flex_value_set_id        => l_adr_flex_value_set_id
18128          , x_value_type_code          => l_adr_value_type_code
18129          , x_value_combination_id     => l_adr_value_combination_id
18130          , x_value_segment_code       => l_adr_value_segment_code
18131          , p_side                     => 'NA'
18132          , p_override_seg_flag        => 'Y'
18133    );
18134 
18138           p_to_segment_code         => 'GL_ACCOUNT'
18135    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
18136 
18137       xla_ae_lines_pkg.set_segment(
18139         , p_segment_value           => l_segment
18140         , p_from_segment_code       => l_adr_value_segment_code
18141         , p_from_combination_id     => l_adr_value_combination_id
18142         , p_value_type_code         => l_adr_value_type_code
18143         , p_transaction_coa_id      => l_adr_transaction_coa_id
18144         , p_accounting_coa_id       => l_adr_accounting_coa_id
18145         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
18146         , p_flex_value_set_id       => l_adr_flex_value_set_id
18147         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
18148         , p_adr_type_code           => 'S'
18149         , p_component_type          => l_component_type
18150         , p_component_code          => l_component_code
18151         , p_component_type_code     => l_component_type_code
18152         , p_component_appl_id       => l_component_appl_id
18153         , p_amb_context_code        => l_amb_context_code
18154         , p_entity_code             => 'AP_INVOICES'
18155         , p_event_class_code        => 'DEBIT MEMOS'
18156         , p_side                    => 'NA'
18157         );
18158 
18159   END IF;
18160 
18161    --
18162    --
18163    END IF;
18164 
18165        --
18166        -- Update the line information that should be overwritten
18167        --
18168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18169                                          p_header_num   => 1);
18170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18171 
18172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18173 
18174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18176        END IF;
18177 
18178       --
18179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18180       --
18181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18183       ELSE
18184           ---------------------------------------------------------------------------------------------------
18185           -- 4262811a Switch Sign
18186           ---------------------------------------------------------------------------------------------------
18187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18192           -- 5132302
18193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18195 
18196       END IF;
18197 
18198       -- 4955764
18199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18201 
18202 
18203       XLA_AE_LINES_PKG.ValidateCurrentLine;
18204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18205 
18206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18208                ,p_balance_type_code => l_balance_type_code);
18209 
18210    END IF;
18211 
18212    -----------------------------------------------------------------------------------------
18213    -- 4262811 Multiperiod Accounting
18214    -----------------------------------------------------------------------------------------
18215      -- No MPA option is assigned.
18216 
18217 
18218 END IF;
18219 END IF;
18220 --
18221 
18222 --
18223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18224    trace
18225       (p_msg      => 'END of AcctLineType_36'
18226       ,p_level    => C_LEVEL_PROCEDURE
18227       ,p_module   => l_log_module);
18228 END IF;
18229 --
18230 EXCEPTION
18231   WHEN xla_exceptions_pkg.application_exception THEN
18232       RAISE;
18233   WHEN OTHERS THEN
18234        xla_exceptions_pkg.raise_message
18235            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_36');
18236 END AcctLineType_36;
18237 --
18238 
18239 ---------------------------------------
18240 --
18241 -- PRIVATE FUNCTION
18242 --         AcctLineType_37
18243 --
18244 ---------------------------------------
18245 PROCEDURE AcctLineType_37 (
18246   p_application_id        IN NUMBER
18247  ,p_event_id              IN NUMBER
18248  ,p_calculate_acctd_flag  IN VARCHAR2
18249  ,p_calculate_g_l_flag    IN VARCHAR2
18250  ,p_actual_flag           IN OUT VARCHAR2
18254 --Invoice Distribution Description
18251  ,p_balance_type_code     OUT VARCHAR2
18252  ,p_gain_or_loss_ref      OUT VARCHAR2
18253  
18255  , p_source_1            IN VARCHAR2
18256 --Invoice Distribution Account
18257  , p_source_2            IN NUMBER
18258 --Federal Fund Category Description
18259  , p_source_6            IN VARCHAR2
18260 --Accounting Reversal Indicator
18261  , p_source_15            IN VARCHAR2
18262 --Distribution Link Type
18263  , p_source_17            IN VARCHAR2
18264 --Allocation to Main Distribution Identifier
18265  , p_source_19            IN NUMBER
18266 --Invoice Identifier
18267  , p_source_20            IN NUMBER
18268 --Business Flow Accounts Payable Application Identifier
18269  , p_source_21            IN NUMBER
18270 --Business Flow Invoice Distribution Type
18271  , p_source_22            IN VARCHAR2
18272 --Business Flow Invoice Entity Code
18273  , p_source_23            IN VARCHAR2
18274 --Business Flow Invoice Distribution Identifier
18275  , p_source_24            IN NUMBER
18276 --Business Flow Invoice Identifier
18277  , p_source_25            IN NUMBER
18278 --Invoice Distribution Identifier
18279  , p_source_26            IN NUMBER
18280 --Payables Encumbrance Upgrade Credit Account
18281  , p_source_27            IN NUMBER
18282 --Payables Encumbrance Upgrade Credit Amount
18283  , p_source_28            IN NUMBER
18284 --Invoice Currency Code
18285  , p_source_29            IN VARCHAR2
18286 --Payables Encumbrance Upgrade Credit Base Amount
18287  , p_source_30            IN NUMBER
18288 --Payables Encumbrance Upgrade Debit Account
18289  , p_source_31            IN NUMBER
18290 --Payables Encumbrance Upgrade Debit Amount
18291  , p_source_32            IN NUMBER
18292 --Payables Encumbrance Upgrade Debit Base Amount
18293  , p_source_33            IN NUMBER
18294 --Payables Encumbrance Upgrade Option
18295  , p_source_34            IN VARCHAR2
18296 --Invoice Exchange Date
18297  , p_source_36            IN DATE
18298 --Invoice Exchange Rate
18299  , p_source_37            IN NUMBER
18300 --Invoice Exchange Rate Type
18301  , p_source_38            IN VARCHAR2
18302 --Deferred Accounting End Date
18303  , p_source_39            IN DATE
18304 --Deferred Accounting Option
18305  , p_source_40            IN VARCHAR2
18306 --Deferred Accounting Start Date
18307  , p_source_41            IN DATE
18308 --Override Accounted Amount Indicator
18309  , p_source_42            IN VARCHAR2
18310  , p_source_42_meaning    IN VARCHAR2
18311 --Invoice Supplier Identifier
18312  , p_source_43            IN NUMBER
18313 --Invoice Supplier Site Identifier
18314  , p_source_44            IN NUMBER
18315 --Third Party Type
18316  , p_source_45            IN VARCHAR2
18317 --Parent Reversal Identifier
18318  , p_source_46            IN NUMBER
18319 --Invoice Distribution Tax Line Identifier
18320  , p_source_48            IN NUMBER
18321 --Invoice Distribution Tax Distribution Identifier from Tax
18322  , p_source_49            IN NUMBER
18323 --Invoice Distribution Summary Tax Line Identifier
18324  , p_source_50            IN NUMBER
18325 --Payables Upgrade Credit Encumbrance Type Identifier
18326  , p_source_51            IN NUMBER
18327 --Payables Upgrade Debit Encumbrance Type Identifier
18328  , p_source_52            IN NUMBER
18329 --Invoice Distribution Amount
18330  , p_source_55            IN NUMBER
18331 --Invoice Distribution Ledger Amount Before Rounding
18332  , p_source_58            IN NUMBER
18333 )
18334 IS
18335 
18336 l_component_type              VARCHAR2(80);
18337 l_component_code              VARCHAR2(30);
18338 l_component_type_code         VARCHAR2(1);
18339 l_component_appl_id           INTEGER;
18340 l_amb_context_code            VARCHAR2(30);
18341 l_entity_code                 VARCHAR2(30);
18342 l_event_class_code            VARCHAR2(30);
18343 l_ae_header_id                NUMBER;
18344 l_event_type_code             VARCHAR2(30);
18345 l_line_definition_code        VARCHAR2(30);
18346 l_line_definition_owner_code  VARCHAR2(1);
18347 --
18348 -- adr variables
18349 l_segment                     VARCHAR2(30);
18350 l_ccid                        NUMBER;
18351 l_adr_transaction_coa_id      NUMBER;
18352 l_adr_accounting_coa_id       NUMBER;
18353 l_adr_flexfield_segment_code  VARCHAR2(30);
18354 l_adr_flex_value_set_id       NUMBER;
18355 l_adr_value_type_code         VARCHAR2(30);
18356 l_adr_value_combination_id    NUMBER;
18357 l_adr_value_segment_code      VARCHAR2(30);
18358 
18359 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18360 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18361 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18362 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18363 
18364 -- 4262811 Variables ------------------------------------------------------------------------------------------
18365 l_entered_amt_idx             NUMBER;
18366 l_accted_amt_idx              NUMBER;
18367 l_acc_rev_flag                VARCHAR2(1);
18368 l_accrual_line_num            NUMBER;
18369 l_tmp_amt                     NUMBER;
18370 l_acc_rev_natural_side_code   VARCHAR2(1);
18371 
18372 l_num_entries                 NUMBER;
18373 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18374 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18375 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18379 
18376 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18377 l_recog_line_1                NUMBER;
18378 l_recog_line_2                NUMBER;
18380 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18381 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18382 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18383 
18384 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18385 
18386 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18387 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18388 
18389 ---------------------------------------------------------------------------------------------------------------
18390 
18391 
18392 --
18393 -- bulk performance
18394 --
18395 l_balance_type_code           VARCHAR2(1);
18396 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18397 l_log_module                  VARCHAR2(240);
18398 
18399 --
18400 -- Upgrade strategy
18401 --
18402 l_actual_upg_option           VARCHAR2(1);
18403 l_enc_upg_option           VARCHAR2(1);
18404 
18405 --
18406 BEGIN
18407 --
18408 IF g_log_enabled THEN
18409       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
18410 END IF;
18411 --
18412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18413 
18414       trace
18415          (p_msg      => 'BEGIN of AcctLineType_37'
18416          ,p_level    => C_LEVEL_PROCEDURE
18417          ,p_module   => l_log_module);
18418 
18419 END IF;
18420 --
18421 l_component_type             := 'AMB_JLT';
18422 l_component_code             := 'FV_AP_DM_DIRECT_FUND_CR';
18423 l_component_type_code        := 'S';
18424 l_component_appl_id          :=  200;
18425 l_amb_context_code           := 'DEFAULT';
18426 l_entity_code                := 'AP_INVOICES';
18427 l_event_class_code           := 'DEBIT MEMOS';
18428 l_event_type_code            := 'DEBIT MEMOS_ALL';
18429 l_line_definition_owner_code := 'S';
18430 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
18431 --
18432 l_balance_type_code          := 'A';
18433 l_segment                     := NULL;
18434 l_ccid                        := NULL;
18435 l_adr_transaction_coa_id      := NULL;
18436 l_adr_accounting_coa_id       := NULL;
18437 l_adr_flexfield_segment_code  := NULL;
18438 l_adr_flex_value_set_id       := NULL;
18439 l_adr_value_type_code         := NULL;
18440 l_adr_value_combination_id    := NULL;
18441 l_adr_value_segment_code      := NULL;
18442 
18443 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18444 l_bflow_class_code           := 'FV_DIRECT_FUND_CR';    -- 4219869 Business Flow
18445 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18446 l_budgetary_control_flag     := 'Y';
18447 
18448 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18449 l_bflow_applied_to_amt       := NULL; -- 5132302
18450 l_entered_amt_idx            := NULL;          -- 4262811
18451 l_accted_amt_idx             := NULL;          -- 4262811
18452 l_acc_rev_flag               := NULL;          -- 4262811
18453 l_accrual_line_num           := NULL;          -- 4262811
18454 l_tmp_amt                    := NULL;          -- 4262811
18455 --
18456  
18457 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18458     l_balance_type_code <> 'B' THEN
18459 IF NVL(p_source_6,'
18460 ') =  'Direct' AND 
18461 NVL(
18462 xla_ae_sources_pkg.GetSystemSourceChar(
18463    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18464  , p_source_type_code      => 'Y'
18465  , p_source_application_id =>  602
18466 ),'
18467 ') <>  'DEBIT MEMO CANCELLED'
18468  THEN 
18469 
18470    --
18471    XLA_AE_LINES_PKG.SetNewLine;
18472 
18473    p_balance_type_code          := l_balance_type_code;
18474    -- set the flag so later we will know whether the gain loss line needs to be created
18475    
18476    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18477      p_actual_flag :='A';
18478    END IF;
18479 
18480    --
18481    -- bulk performance
18482    --
18483    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18484                                       p_header_num   => 0); -- 4262811
18485    --
18486    -- set accounting line options
18487    --
18488    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18489            p_natural_side_code          => 'D'
18490          , p_gain_or_loss_flag          => 'N'
18491          , p_gl_transfer_mode_code      => 'S'
18492          , p_acct_entry_type_code       => 'A'
18493          , p_switch_side_flag           => 'N'
18494          , p_merge_duplicate_code       => 'N'
18495          );
18496    --
18497    l_acc_rev_natural_side_code := 'C';  -- 4262811
18498    -- 
18499    --
18500    -- set accounting line type info
18501    --
18502    xla_ae_lines_pkg.SetAcctLineType
18503       (p_component_type             => l_component_type
18504       ,p_event_type_code            => l_event_type_code
18505       ,p_line_definition_owner_code => l_line_definition_owner_code
18506       ,p_line_definition_code       => l_line_definition_code
18507       ,p_accounting_line_code       => l_component_code
18508       ,p_accounting_line_type_code  => l_component_type_code
18509       ,p_accounting_line_appl_id    => l_component_appl_id
18510       ,p_amb_context_code           => l_amb_context_code
18514    -- set accounting class
18511       ,p_entity_code                => l_entity_code
18512       ,p_event_class_code           => l_event_class_code);
18513    --
18515    --
18516    xla_ae_lines_pkg.SetAcctClass(
18517            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
18518          , p_ae_header_id           => l_ae_header_id
18519          );
18520 
18521    --
18522    -- set rounding class
18523    --
18524    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18525                       'ACCOUNTSPAYABLE';
18526 
18527    --
18528    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18529    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18530    --
18531    -- bulk performance
18532    --
18533    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18534 
18535    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18536       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18537 
18538    -- 4955764
18539    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18541 
18542    -- 4458381 Public Sector Enh
18543    
18544    --
18545    -- set accounting attributes for the line type
18546    --
18547    l_entered_amt_idx := 23;
18548    l_accted_amt_idx  := 28;
18549    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18550    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18551    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
18552    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
18553    l_rec_acct_attrs.array_num_value(2)  := 
18554 xla_ae_sources_pkg.GetSystemSourceNum(
18555    p_source_code           => 'XLA_EVENT_APPL_ID'
18556  , p_source_type_code      => 'Y'
18557  , p_source_application_id =>  602
18558 );
18559    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
18560    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
18561    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
18562    l_rec_acct_attrs.array_char_value(4)  := 
18563 xla_ae_sources_pkg.GetSystemSourceChar(
18564    p_source_code           => 'XLA_ENTITY_CODE'
18565  , p_source_type_code      => 'Y'
18566  , p_source_application_id =>  602
18567 );
18568    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
18569    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
18570    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
18571    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
18572    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
18573    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
18574    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18575    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
18576    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
18577    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
18578    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
18579    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
18580    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18581    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
18582    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
18583    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
18584    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
18585    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
18586    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
18587    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
18588    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
18589    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
18590    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
18591    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
18592    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
18593    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
18594    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
18595    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
18596    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
18597    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
18598    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
18599    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
18600    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
18601    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
18602    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
18603    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
18604    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
18605    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
18606    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
18607    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
18608    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
18609    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
18610    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
18611    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
18615    l_rec_acct_attrs.array_num_value(28)  := p_source_58;
18612    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
18613    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
18614    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
18616    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
18617    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
18618    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
18619    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
18620    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
18621    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
18622    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
18623    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
18624    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
18625    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
18626    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
18627    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
18628    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
18629    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
18630    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
18631    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
18632    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
18633    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
18634    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
18635    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
18636    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
18637    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
18638    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
18639    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
18640    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
18641    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
18642    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
18643    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
18644 
18645    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18646    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18647 
18648    ---------------------------------------------------------------------------------------------------------------
18649    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18650    ---------------------------------------------------------------------------------------------------------------
18651    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18652 
18653    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18654    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18655 
18656    IF xla_accounting_cache_pkg.GetValueChar
18657          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18658          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18659    AND l_bflow_method_code = 'PRIOR_ENTRY'
18660 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18661    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18662          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18663        )
18664    THEN
18665          xla_ae_lines_pkg.BflowUpgEntry
18666            (p_business_method_code    => l_bflow_method_code
18667            ,p_business_class_code     => l_bflow_class_code
18668            ,p_balance_type            => l_balance_type_code);
18669    ELSE
18670       NULL;
18671 -- No business flow processing for business flow method of NONE.
18672    END IF;
18673 
18674    --
18675    -- call analytical criteria
18676    --
18677    
18678    --
18679    -- call description
18680    --
18681    
18682 xla_ae_lines_pkg.SetLineDescription(
18683    p_ae_header_id => l_ae_header_id
18684   ,p_description  => Description_2 (
18685      p_application_id         => p_application_id
18686    , p_ae_header_id           => l_ae_header_id 
18687 , p_source_1 => p_source_1
18688    )
18689 );
18690 
18691 
18692    --
18693    -- call ADRs
18694    -- Bug 4922099
18695    --
18696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18697         (NVL(l_actual_upg_option, 'N') = 'O') OR
18698         (NVL(l_enc_upg_option, 'N') = 'O')
18699       )
18700    THEN
18701    NULL;
18702    --
18703    --
18704    
18705   l_ccid := AcctDerRule_3(
18706            p_application_id           => p_application_id
18707          , p_ae_header_id             => l_ae_header_id 
18708 , p_source_2 => p_source_2
18709          , x_transaction_coa_id       => l_adr_transaction_coa_id
18710          , x_accounting_coa_id        => l_adr_accounting_coa_id
18711          , x_value_type_code          => l_adr_value_type_code
18712          , p_side                     => 'NA'
18713    );
18714 
18715    xla_ae_lines_pkg.set_ccid(
18716     p_code_combination_id          => l_ccid
18717   , p_value_type_code              => l_adr_value_type_code
18718   , p_transaction_coa_id           => l_adr_transaction_coa_id
18719   , p_accounting_coa_id            => l_adr_accounting_coa_id
18720   , p_adr_code                     => 'AP_INVOICE_DIST'
18721   , p_adr_type_code                => 'S'
18722   , p_component_type               => l_component_type
18726   , p_amb_context_code             => l_amb_context_code
18723   , p_component_code               => l_component_code
18724   , p_component_type_code          => l_component_type_code
18725   , p_component_appl_id            => l_component_appl_id
18727   , p_side                         => 'NA'
18728   );
18729 
18730 
18731    l_segment := AcctDerRule_4(
18732            p_application_id           => p_application_id
18733          , p_ae_header_id             => l_ae_header_id 
18734          , x_transaction_coa_id       => l_adr_transaction_coa_id
18735          , x_accounting_coa_id        => l_adr_accounting_coa_id
18736          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
18737          , x_flex_value_set_id        => l_adr_flex_value_set_id
18738          , x_value_type_code          => l_adr_value_type_code
18739          , x_value_combination_id     => l_adr_value_combination_id
18740          , x_value_segment_code       => l_adr_value_segment_code
18741          , p_side                     => 'NA'
18742          , p_override_seg_flag        => 'Y'
18743    );
18744 
18745    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
18746 
18747       xla_ae_lines_pkg.set_segment(
18748           p_to_segment_code         => 'GL_ACCOUNT'
18749         , p_segment_value           => l_segment
18750         , p_from_segment_code       => l_adr_value_segment_code
18751         , p_from_combination_id     => l_adr_value_combination_id
18752         , p_value_type_code         => l_adr_value_type_code
18753         , p_transaction_coa_id      => l_adr_transaction_coa_id
18754         , p_accounting_coa_id       => l_adr_accounting_coa_id
18755         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
18756         , p_flex_value_set_id       => l_adr_flex_value_set_id
18757         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
18758         , p_adr_type_code           => 'S'
18759         , p_component_type          => l_component_type
18760         , p_component_code          => l_component_code
18761         , p_component_type_code     => l_component_type_code
18762         , p_component_appl_id       => l_component_appl_id
18763         , p_amb_context_code        => l_amb_context_code
18764         , p_entity_code             => 'AP_INVOICES'
18765         , p_event_class_code        => 'DEBIT MEMOS'
18766         , p_side                    => 'NA'
18767         );
18768 
18769   END IF;
18770 
18771    --
18772    --
18773    END IF;
18774    --
18775    -- Bug 4922099
18776    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18777           (NVL(l_enc_upg_option, 'N') = 'O')
18778         ) AND
18779         (l_bflow_method_code = 'PRIOR_ENTRY')
18780       )
18781    THEN
18782       IF
18783       --
18784       1 = 2
18785       --
18786       THEN
18787       xla_accounting_err_pkg.build_message
18788                                     (p_appli_s_name            => 'XLA'
18789                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18790                                     ,p_token_1                 => 'LINE_NUMBER'
18791                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18792                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18793                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18794                                                                              l_component_type
18795                                                                             ,l_component_code
18796                                                                             ,l_component_type_code
18797                                                                             ,l_component_appl_id
18798                                                                             ,l_amb_context_code
18799                                                                             ,l_entity_code
18800                                                                             ,l_event_class_code
18801                                                                            )
18802                                     ,p_token_3                 => 'OWNER'
18803                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18804                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18805                                                                           ,p_lookup_code    => l_component_type_code
18806                                                                          )
18807                                     ,p_token_4                 => 'PRODUCT_NAME'
18808                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18809                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18810                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18811                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18812                                     ,p_ae_header_id            =>  NULL
18813                                        );
18814 
18815         IF (C_LEVEL_ERROR>= g_log_level) THEN
18816                  trace
18817                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18818                       ,p_level    => C_LEVEL_ERROR
18819                       ,p_module   => l_log_module);
18820         END IF;
18821       END IF;
18825    ------------------------------------------------------------------------------------------------
18822    END IF;
18823    --
18824    --
18826    -- 4219869 Business Flow
18827    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18828    -- Prior Entry.  Currently, the following code is always generated.
18829    ------------------------------------------------------------------------------------------------
18830    XLA_AE_LINES_PKG.ValidateCurrentLine;
18831 
18832    ------------------------------------------------------------------------------------
18833    -- 4219869 Business Flow
18834    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18835    ------------------------------------------------------------------------------------
18836    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18837 
18838    ----------------------------------------------------------------------------------
18839    -- 4219869 Business Flow
18840    -- Update journal entry status -- Need to generate this within IF <condition>
18841    ----------------------------------------------------------------------------------
18842    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18843          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18844          ,p_balance_type_code => l_balance_type_code
18845          );
18846 
18847    -------------------------------------------------------------------------------------------
18848    -- 4262811 - Generate the Accrual Reversal lines
18849    -------------------------------------------------------------------------------------------
18850    BEGIN
18851       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18852                               (g_array_event(p_event_id).array_value_num('header_index'));
18853       IF l_acc_rev_flag IS NULL THEN
18854          l_acc_rev_flag := 'N';
18855       END IF;
18856    EXCEPTION
18857       WHEN OTHERS THEN
18858          l_acc_rev_flag := 'N';
18859    END;
18860    --
18861    IF (l_acc_rev_flag = 'Y') THEN
18862 
18863        -- 4645092  ------------------------------------------------------------------------------
18864        -- To allow MPA report to determine if it should generate report process
18865        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18866        ------------------------------------------------------------------------------------------
18867 
18868        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18869        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18870    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18871    -- call ADRs
18872    -- Bug 4922099
18873    --
18874    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18875         (NVL(l_actual_upg_option, 'N') = 'O') OR
18876         (NVL(l_enc_upg_option, 'N') = 'O')
18877       )
18878    THEN
18879    NULL;
18880    --
18881    --
18882    
18883   l_ccid := AcctDerRule_3(
18884            p_application_id           => p_application_id
18885          , p_ae_header_id             => l_ae_header_id 
18886 , p_source_2 => p_source_2
18887          , x_transaction_coa_id       => l_adr_transaction_coa_id
18888          , x_accounting_coa_id        => l_adr_accounting_coa_id
18889          , x_value_type_code          => l_adr_value_type_code
18890          , p_side                     => 'NA'
18891    );
18892 
18893    xla_ae_lines_pkg.set_ccid(
18894     p_code_combination_id          => l_ccid
18895   , p_value_type_code              => l_adr_value_type_code
18896   , p_transaction_coa_id           => l_adr_transaction_coa_id
18897   , p_accounting_coa_id            => l_adr_accounting_coa_id
18898   , p_adr_code                     => 'AP_INVOICE_DIST'
18899   , p_adr_type_code                => 'S'
18900   , p_component_type               => l_component_type
18901   , p_component_code               => l_component_code
18902   , p_component_type_code          => l_component_type_code
18903   , p_component_appl_id            => l_component_appl_id
18904   , p_amb_context_code             => l_amb_context_code
18905   , p_side                         => 'NA'
18906   );
18907 
18908 
18909    l_segment := AcctDerRule_4(
18910            p_application_id           => p_application_id
18911          , p_ae_header_id             => l_ae_header_id 
18912          , x_transaction_coa_id       => l_adr_transaction_coa_id
18913          , x_accounting_coa_id        => l_adr_accounting_coa_id
18914          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
18915          , x_flex_value_set_id        => l_adr_flex_value_set_id
18916          , x_value_type_code          => l_adr_value_type_code
18917          , x_value_combination_id     => l_adr_value_combination_id
18918          , x_value_segment_code       => l_adr_value_segment_code
18919          , p_side                     => 'NA'
18920          , p_override_seg_flag        => 'Y'
18921    );
18922 
18923    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
18924 
18925       xla_ae_lines_pkg.set_segment(
18926           p_to_segment_code         => 'GL_ACCOUNT'
18927         , p_segment_value           => l_segment
18928         , p_from_segment_code       => l_adr_value_segment_code
18929         , p_from_combination_id     => l_adr_value_combination_id
18930         , p_value_type_code         => l_adr_value_type_code
18934         , p_flex_value_set_id       => l_adr_flex_value_set_id
18931         , p_transaction_coa_id      => l_adr_transaction_coa_id
18932         , p_accounting_coa_id       => l_adr_accounting_coa_id
18933         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
18935         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
18936         , p_adr_type_code           => 'S'
18937         , p_component_type          => l_component_type
18938         , p_component_code          => l_component_code
18939         , p_component_type_code     => l_component_type_code
18940         , p_component_appl_id       => l_component_appl_id
18941         , p_amb_context_code        => l_amb_context_code
18942         , p_entity_code             => 'AP_INVOICES'
18943         , p_event_class_code        => 'DEBIT MEMOS'
18944         , p_side                    => 'NA'
18945         );
18946 
18947   END IF;
18948 
18949    --
18950    --
18951    END IF;
18952 
18953        --
18954        -- Update the line information that should be overwritten
18955        --
18956        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18957                                          p_header_num   => 1);
18958        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18959 
18960        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18961 
18962        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18963           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18964        END IF;
18965 
18966       --
18967       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18968       --
18969       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18970           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18971       ELSE
18972           ---------------------------------------------------------------------------------------------------
18973           -- 4262811a Switch Sign
18974           ---------------------------------------------------------------------------------------------------
18975           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18976           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18977                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18978           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18979                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18980           -- 5132302
18981           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18982                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18983 
18984       END IF;
18985 
18986       -- 4955764
18987       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18989 
18990 
18991       XLA_AE_LINES_PKG.ValidateCurrentLine;
18992       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18993 
18994       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18995                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18996                ,p_balance_type_code => l_balance_type_code);
18997 
18998    END IF;
18999 
19000    -----------------------------------------------------------------------------------------
19001    -- 4262811 Multiperiod Accounting
19002    -----------------------------------------------------------------------------------------
19003      -- No MPA option is assigned.
19004 
19005 
19006 END IF;
19007 END IF;
19008 --
19009 
19010 --
19011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19012    trace
19013       (p_msg      => 'END of AcctLineType_37'
19014       ,p_level    => C_LEVEL_PROCEDURE
19015       ,p_module   => l_log_module);
19016 END IF;
19017 --
19018 EXCEPTION
19019   WHEN xla_exceptions_pkg.application_exception THEN
19020       RAISE;
19021   WHEN OTHERS THEN
19022        xla_exceptions_pkg.raise_message
19023            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_37');
19024 END AcctLineType_37;
19025 --
19026 
19027 ---------------------------------------
19028 --
19029 -- PRIVATE FUNCTION
19030 --         AcctLineType_38
19031 --
19032 ---------------------------------------
19033 PROCEDURE AcctLineType_38 (
19034   p_application_id        IN NUMBER
19035  ,p_event_id              IN NUMBER
19036  ,p_calculate_acctd_flag  IN VARCHAR2
19037  ,p_calculate_g_l_flag    IN VARCHAR2
19038  ,p_actual_flag           IN OUT VARCHAR2
19039  ,p_balance_type_code     OUT VARCHAR2
19040  ,p_gain_or_loss_ref      OUT VARCHAR2
19041  
19042 --Invoice Distribution Description
19043  , p_source_1            IN VARCHAR2
19044 --Invoice Distribution Account
19045  , p_source_2            IN NUMBER
19046 --Federal Fund Category Description
19047  , p_source_6            IN VARCHAR2
19048 --Accounting Reversal Indicator
19052 --Allocation to Main Distribution Identifier
19049  , p_source_15            IN VARCHAR2
19050 --Distribution Link Type
19051  , p_source_17            IN VARCHAR2
19053  , p_source_19            IN NUMBER
19054 --Invoice Identifier
19055  , p_source_20            IN NUMBER
19056 --Business Flow Accounts Payable Application Identifier
19057  , p_source_21            IN NUMBER
19058 --Business Flow Invoice Distribution Type
19059  , p_source_22            IN VARCHAR2
19060 --Business Flow Invoice Entity Code
19061  , p_source_23            IN VARCHAR2
19062 --Business Flow Invoice Distribution Identifier
19063  , p_source_24            IN NUMBER
19064 --Business Flow Invoice Identifier
19065  , p_source_25            IN NUMBER
19066 --Invoice Distribution Identifier
19067  , p_source_26            IN NUMBER
19068 --Payables Encumbrance Upgrade Credit Account
19069  , p_source_27            IN NUMBER
19070 --Payables Encumbrance Upgrade Credit Amount
19071  , p_source_28            IN NUMBER
19072 --Invoice Currency Code
19073  , p_source_29            IN VARCHAR2
19074 --Payables Encumbrance Upgrade Credit Base Amount
19075  , p_source_30            IN NUMBER
19076 --Payables Encumbrance Upgrade Debit Account
19077  , p_source_31            IN NUMBER
19078 --Payables Encumbrance Upgrade Debit Amount
19079  , p_source_32            IN NUMBER
19080 --Payables Encumbrance Upgrade Debit Base Amount
19081  , p_source_33            IN NUMBER
19082 --Payables Encumbrance Upgrade Option
19083  , p_source_34            IN VARCHAR2
19084 --Invoice Exchange Date
19085  , p_source_36            IN DATE
19086 --Invoice Exchange Rate
19087  , p_source_37            IN NUMBER
19088 --Invoice Exchange Rate Type
19089  , p_source_38            IN VARCHAR2
19090 --Deferred Accounting End Date
19091  , p_source_39            IN DATE
19092 --Deferred Accounting Option
19093  , p_source_40            IN VARCHAR2
19094 --Deferred Accounting Start Date
19095  , p_source_41            IN DATE
19096 --Override Accounted Amount Indicator
19097  , p_source_42            IN VARCHAR2
19098  , p_source_42_meaning    IN VARCHAR2
19099 --Invoice Supplier Identifier
19100  , p_source_43            IN NUMBER
19101 --Invoice Supplier Site Identifier
19102  , p_source_44            IN NUMBER
19103 --Third Party Type
19104  , p_source_45            IN VARCHAR2
19105 --Parent Reversal Identifier
19106  , p_source_46            IN NUMBER
19107 --Invoice Distribution Tax Line Identifier
19108  , p_source_48            IN NUMBER
19109 --Invoice Distribution Tax Distribution Identifier from Tax
19110  , p_source_49            IN NUMBER
19111 --Invoice Distribution Summary Tax Line Identifier
19112  , p_source_50            IN NUMBER
19113 --Payables Upgrade Credit Encumbrance Type Identifier
19114  , p_source_51            IN NUMBER
19115 --Payables Upgrade Debit Encumbrance Type Identifier
19116  , p_source_52            IN NUMBER
19117 --Invoice Distribution Amount
19118  , p_source_55            IN NUMBER
19119 --Invoice Distribution Ledger Amount Before Rounding
19120  , p_source_58            IN NUMBER
19121 )
19122 IS
19123 
19124 l_component_type              VARCHAR2(80);
19125 l_component_code              VARCHAR2(30);
19126 l_component_type_code         VARCHAR2(1);
19127 l_component_appl_id           INTEGER;
19128 l_amb_context_code            VARCHAR2(30);
19129 l_entity_code                 VARCHAR2(30);
19130 l_event_class_code            VARCHAR2(30);
19131 l_ae_header_id                NUMBER;
19132 l_event_type_code             VARCHAR2(30);
19133 l_line_definition_code        VARCHAR2(30);
19134 l_line_definition_owner_code  VARCHAR2(1);
19135 --
19136 -- adr variables
19137 l_segment                     VARCHAR2(30);
19138 l_ccid                        NUMBER;
19139 l_adr_transaction_coa_id      NUMBER;
19140 l_adr_accounting_coa_id       NUMBER;
19141 l_adr_flexfield_segment_code  VARCHAR2(30);
19142 l_adr_flex_value_set_id       NUMBER;
19143 l_adr_value_type_code         VARCHAR2(30);
19144 l_adr_value_combination_id    NUMBER;
19145 l_adr_value_segment_code      VARCHAR2(30);
19146 
19147 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19148 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19149 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19150 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19151 
19152 -- 4262811 Variables ------------------------------------------------------------------------------------------
19153 l_entered_amt_idx             NUMBER;
19154 l_accted_amt_idx              NUMBER;
19155 l_acc_rev_flag                VARCHAR2(1);
19156 l_accrual_line_num            NUMBER;
19157 l_tmp_amt                     NUMBER;
19158 l_acc_rev_natural_side_code   VARCHAR2(1);
19159 
19160 l_num_entries                 NUMBER;
19161 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19162 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19163 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19164 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19165 l_recog_line_1                NUMBER;
19166 l_recog_line_2                NUMBER;
19167 
19168 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19169 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19170 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19171 
19175 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19172 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19173 
19174 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19176 
19177 ---------------------------------------------------------------------------------------------------------------
19178 
19179 
19180 --
19181 -- bulk performance
19182 --
19183 l_balance_type_code           VARCHAR2(1);
19184 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19185 l_log_module                  VARCHAR2(240);
19186 
19187 --
19188 -- Upgrade strategy
19189 --
19190 l_actual_upg_option           VARCHAR2(1);
19191 l_enc_upg_option           VARCHAR2(1);
19192 
19193 --
19194 BEGIN
19195 --
19196 IF g_log_enabled THEN
19197       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19198 END IF;
19199 --
19200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19201 
19202       trace
19203          (p_msg      => 'BEGIN of AcctLineType_38'
19204          ,p_level    => C_LEVEL_PROCEDURE
19205          ,p_module   => l_log_module);
19206 
19207 END IF;
19208 --
19209 l_component_type             := 'AMB_JLT';
19210 l_component_code             := 'FV_AP_DM_DIRECT_FUND_DR';
19211 l_component_type_code        := 'S';
19212 l_component_appl_id          :=  200;
19213 l_amb_context_code           := 'DEFAULT';
19214 l_entity_code                := 'AP_INVOICES';
19215 l_event_class_code           := 'DEBIT MEMOS';
19216 l_event_type_code            := 'DEBIT MEMOS_ALL';
19217 l_line_definition_owner_code := 'S';
19218 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
19219 --
19220 l_balance_type_code          := 'A';
19221 l_segment                     := NULL;
19222 l_ccid                        := NULL;
19223 l_adr_transaction_coa_id      := NULL;
19224 l_adr_accounting_coa_id       := NULL;
19225 l_adr_flexfield_segment_code  := NULL;
19226 l_adr_flex_value_set_id       := NULL;
19227 l_adr_value_type_code         := NULL;
19228 l_adr_value_combination_id    := NULL;
19229 l_adr_value_segment_code      := NULL;
19230 
19231 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19232 l_bflow_class_code           := 'FV_DIRECT_FUND_DR';    -- 4219869 Business Flow
19233 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19234 l_budgetary_control_flag     := 'Y';
19235 
19236 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19237 l_bflow_applied_to_amt       := NULL; -- 5132302
19238 l_entered_amt_idx            := NULL;          -- 4262811
19239 l_accted_amt_idx             := NULL;          -- 4262811
19240 l_acc_rev_flag               := NULL;          -- 4262811
19241 l_accrual_line_num           := NULL;          -- 4262811
19242 l_tmp_amt                    := NULL;          -- 4262811
19243 --
19244  
19245 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19246     l_balance_type_code <> 'B' THEN
19247 IF NVL(p_source_6,'
19248 ') =  'Direct' AND 
19249 NVL(
19250 xla_ae_sources_pkg.GetSystemSourceChar(
19251    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19252  , p_source_type_code      => 'Y'
19253  , p_source_application_id =>  602
19254 ),'
19255 ') <>  'DEBIT MEMO CANCELLED'
19256  THEN 
19257 
19258    --
19259    XLA_AE_LINES_PKG.SetNewLine;
19260 
19261    p_balance_type_code          := l_balance_type_code;
19262    -- set the flag so later we will know whether the gain loss line needs to be created
19263    
19264    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19265      p_actual_flag :='A';
19266    END IF;
19267 
19268    --
19269    -- bulk performance
19270    --
19271    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19272                                       p_header_num   => 0); -- 4262811
19273    --
19274    -- set accounting line options
19275    --
19276    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19277            p_natural_side_code          => 'C'
19278          , p_gain_or_loss_flag          => 'N'
19279          , p_gl_transfer_mode_code      => 'S'
19280          , p_acct_entry_type_code       => 'A'
19281          , p_switch_side_flag           => 'N'
19282          , p_merge_duplicate_code       => 'N'
19283          );
19284    --
19285    l_acc_rev_natural_side_code := 'D';  -- 4262811
19286    -- 
19287    --
19288    -- set accounting line type info
19289    --
19290    xla_ae_lines_pkg.SetAcctLineType
19291       (p_component_type             => l_component_type
19292       ,p_event_type_code            => l_event_type_code
19293       ,p_line_definition_owner_code => l_line_definition_owner_code
19294       ,p_line_definition_code       => l_line_definition_code
19295       ,p_accounting_line_code       => l_component_code
19296       ,p_accounting_line_type_code  => l_component_type_code
19297       ,p_accounting_line_appl_id    => l_component_appl_id
19298       ,p_amb_context_code           => l_amb_context_code
19299       ,p_entity_code                => l_entity_code
19300       ,p_event_class_code           => l_event_class_code);
19301    --
19302    -- set accounting class
19303    --
19304    xla_ae_lines_pkg.SetAcctClass(
19305            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
19306          , p_ae_header_id           => l_ae_header_id
19307          );
19308 
19309    --
19313                       'ACCOUNTSPAYABLE';
19310    -- set rounding class
19311    --
19312    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19314 
19315    --
19316    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19317    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19318    --
19319    -- bulk performance
19320    --
19321    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19322 
19323    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19324       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19325 
19326    -- 4955764
19327    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19328       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19329 
19330    -- 4458381 Public Sector Enh
19331    
19332    --
19333    -- set accounting attributes for the line type
19334    --
19335    l_entered_amt_idx := 23;
19336    l_accted_amt_idx  := 28;
19337    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19338    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19339    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
19340    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
19341    l_rec_acct_attrs.array_num_value(2)  := 
19342 xla_ae_sources_pkg.GetSystemSourceNum(
19343    p_source_code           => 'XLA_EVENT_APPL_ID'
19344  , p_source_type_code      => 'Y'
19345  , p_source_application_id =>  602
19346 );
19347    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
19348    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
19349    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
19350    l_rec_acct_attrs.array_char_value(4)  := 
19351 xla_ae_sources_pkg.GetSystemSourceChar(
19352    p_source_code           => 'XLA_ENTITY_CODE'
19353  , p_source_type_code      => 'Y'
19354  , p_source_application_id =>  602
19355 );
19356    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
19357    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
19358    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
19359    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
19360    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
19361    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
19362    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19363    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
19364    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
19365    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
19366    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
19367    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
19368    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19369    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
19370    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
19371    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
19372    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
19373    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
19374    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
19375    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
19376    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
19377    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
19378    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
19379    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
19380    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
19381    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
19382    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
19383    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
19384    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
19385    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
19386    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
19387    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
19388    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
19389    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
19390    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
19391    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
19392    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
19393    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
19394    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
19395    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
19396    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
19397    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
19398    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
19399    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
19400    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
19401    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
19402    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
19403    l_rec_acct_attrs.array_num_value(28)  := p_source_58;
19404    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
19405    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
19409    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
19406    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
19407    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
19408    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
19410    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
19411    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
19412    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
19413    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
19414    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
19415    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
19416    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
19417    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
19418    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
19419    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
19420    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
19421    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
19422    l_rec_acct_attrs.array_acct_attr_code(38) := 'TAX_LINE_REF_ID';
19423    l_rec_acct_attrs.array_num_value(38)  := p_source_48;
19424    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_REC_NREC_DIST_REF_ID';
19425    l_rec_acct_attrs.array_num_value(39)  := p_source_49;
19426    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_SUMMARY_LINE_REF_ID';
19427    l_rec_acct_attrs.array_num_value(40)  := p_source_50;
19428    l_rec_acct_attrs.array_acct_attr_code(41) := 'UPG_CR_ENC_TYPE_ID';
19429    l_rec_acct_attrs.array_num_value(41)  := p_source_51;
19430    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_DR_ENC_TYPE_ID';
19431    l_rec_acct_attrs.array_num_value(42)  := p_source_52;
19432 
19433    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19434    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19435 
19436    ---------------------------------------------------------------------------------------------------------------
19437    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19438    ---------------------------------------------------------------------------------------------------------------
19439    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19440 
19441    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19442    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19443 
19444    IF xla_accounting_cache_pkg.GetValueChar
19445          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19446          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19447    AND l_bflow_method_code = 'PRIOR_ENTRY'
19448 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19449    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19450          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19451        )
19452    THEN
19453          xla_ae_lines_pkg.BflowUpgEntry
19454            (p_business_method_code    => l_bflow_method_code
19455            ,p_business_class_code     => l_bflow_class_code
19456            ,p_balance_type            => l_balance_type_code);
19457    ELSE
19458       NULL;
19459 -- No business flow processing for business flow method of NONE.
19460    END IF;
19461 
19462    --
19463    -- call analytical criteria
19464    --
19465    
19466    --
19467    -- call description
19468    --
19469    
19470 xla_ae_lines_pkg.SetLineDescription(
19471    p_ae_header_id => l_ae_header_id
19472   ,p_description  => Description_2 (
19473      p_application_id         => p_application_id
19474    , p_ae_header_id           => l_ae_header_id 
19475 , p_source_1 => p_source_1
19476    )
19477 );
19478 
19479 
19480    --
19481    -- call ADRs
19482    -- Bug 4922099
19483    --
19484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19485         (NVL(l_actual_upg_option, 'N') = 'O') OR
19486         (NVL(l_enc_upg_option, 'N') = 'O')
19487       )
19488    THEN
19489    NULL;
19490    --
19491    --
19492    
19493   l_ccid := AcctDerRule_3(
19494            p_application_id           => p_application_id
19495          , p_ae_header_id             => l_ae_header_id 
19496 , p_source_2 => p_source_2
19497          , x_transaction_coa_id       => l_adr_transaction_coa_id
19498          , x_accounting_coa_id        => l_adr_accounting_coa_id
19499          , x_value_type_code          => l_adr_value_type_code
19500          , p_side                     => 'NA'
19501    );
19502 
19503    xla_ae_lines_pkg.set_ccid(
19504     p_code_combination_id          => l_ccid
19505   , p_value_type_code              => l_adr_value_type_code
19506   , p_transaction_coa_id           => l_adr_transaction_coa_id
19507   , p_accounting_coa_id            => l_adr_accounting_coa_id
19508   , p_adr_code                     => 'AP_INVOICE_DIST'
19509   , p_adr_type_code                => 'S'
19510   , p_component_type               => l_component_type
19511   , p_component_code               => l_component_code
19512   , p_component_type_code          => l_component_type_code
19513   , p_component_appl_id            => l_component_appl_id
19514   , p_amb_context_code             => l_amb_context_code
19515   , p_side                         => 'NA'
19516   );
19517 
19518 
19519    l_segment := AcctDerRule_15(
19520            p_application_id           => p_application_id
19524          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19521          , p_ae_header_id             => l_ae_header_id 
19522          , x_transaction_coa_id       => l_adr_transaction_coa_id
19523          , x_accounting_coa_id        => l_adr_accounting_coa_id
19525          , x_flex_value_set_id        => l_adr_flex_value_set_id
19526          , x_value_type_code          => l_adr_value_type_code
19527          , x_value_combination_id     => l_adr_value_combination_id
19528          , x_value_segment_code       => l_adr_value_segment_code
19529          , p_side                     => 'NA'
19530          , p_override_seg_flag        => 'Y'
19531    );
19532 
19533    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19534 
19535       xla_ae_lines_pkg.set_segment(
19536           p_to_segment_code         => 'GL_ACCOUNT'
19537         , p_segment_value           => l_segment
19538         , p_from_segment_code       => l_adr_value_segment_code
19539         , p_from_combination_id     => l_adr_value_combination_id
19540         , p_value_type_code         => l_adr_value_type_code
19541         , p_transaction_coa_id      => l_adr_transaction_coa_id
19542         , p_accounting_coa_id       => l_adr_accounting_coa_id
19543         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19544         , p_flex_value_set_id       => l_adr_flex_value_set_id
19545         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
19546         , p_adr_type_code           => 'S'
19547         , p_component_type          => l_component_type
19548         , p_component_code          => l_component_code
19549         , p_component_type_code     => l_component_type_code
19550         , p_component_appl_id       => l_component_appl_id
19551         , p_amb_context_code        => l_amb_context_code
19552         , p_entity_code             => 'AP_INVOICES'
19553         , p_event_class_code        => 'DEBIT MEMOS'
19554         , p_side                    => 'NA'
19555         );
19556 
19557   END IF;
19558 
19559    --
19560    --
19561    END IF;
19562    --
19563    -- Bug 4922099
19564    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19565           (NVL(l_enc_upg_option, 'N') = 'O')
19566         ) AND
19567         (l_bflow_method_code = 'PRIOR_ENTRY')
19568       )
19569    THEN
19570       IF
19571       --
19572       1 = 2
19573       --
19574       THEN
19575       xla_accounting_err_pkg.build_message
19576                                     (p_appli_s_name            => 'XLA'
19577                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19578                                     ,p_token_1                 => 'LINE_NUMBER'
19579                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19580                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19581                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19582                                                                              l_component_type
19583                                                                             ,l_component_code
19584                                                                             ,l_component_type_code
19585                                                                             ,l_component_appl_id
19586                                                                             ,l_amb_context_code
19587                                                                             ,l_entity_code
19588                                                                             ,l_event_class_code
19589                                                                            )
19590                                     ,p_token_3                 => 'OWNER'
19591                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19592                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19593                                                                           ,p_lookup_code    => l_component_type_code
19594                                                                          )
19595                                     ,p_token_4                 => 'PRODUCT_NAME'
19596                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19597                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19598                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19599                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19600                                     ,p_ae_header_id            =>  NULL
19601                                        );
19602 
19603         IF (C_LEVEL_ERROR>= g_log_level) THEN
19604                  trace
19605                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19606                       ,p_level    => C_LEVEL_ERROR
19607                       ,p_module   => l_log_module);
19608         END IF;
19609       END IF;
19610    END IF;
19611    --
19612    --
19613    ------------------------------------------------------------------------------------------------
19614    -- 4219869 Business Flow
19615    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19619 
19616    -- Prior Entry.  Currently, the following code is always generated.
19617    ------------------------------------------------------------------------------------------------
19618    XLA_AE_LINES_PKG.ValidateCurrentLine;
19620    ------------------------------------------------------------------------------------
19621    -- 4219869 Business Flow
19622    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19623    ------------------------------------------------------------------------------------
19624    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19625 
19626    ----------------------------------------------------------------------------------
19627    -- 4219869 Business Flow
19628    -- Update journal entry status -- Need to generate this within IF <condition>
19629    ----------------------------------------------------------------------------------
19630    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19631          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19632          ,p_balance_type_code => l_balance_type_code
19633          );
19634 
19635    -------------------------------------------------------------------------------------------
19636    -- 4262811 - Generate the Accrual Reversal lines
19637    -------------------------------------------------------------------------------------------
19638    BEGIN
19639       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19640                               (g_array_event(p_event_id).array_value_num('header_index'));
19641       IF l_acc_rev_flag IS NULL THEN
19642          l_acc_rev_flag := 'N';
19643       END IF;
19644    EXCEPTION
19645       WHEN OTHERS THEN
19646          l_acc_rev_flag := 'N';
19647    END;
19648    --
19649    IF (l_acc_rev_flag = 'Y') THEN
19650 
19651        -- 4645092  ------------------------------------------------------------------------------
19652        -- To allow MPA report to determine if it should generate report process
19653        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19654        ------------------------------------------------------------------------------------------
19655 
19656        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19657        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19658    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19659    -- call ADRs
19660    -- Bug 4922099
19661    --
19662    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19663         (NVL(l_actual_upg_option, 'N') = 'O') OR
19664         (NVL(l_enc_upg_option, 'N') = 'O')
19665       )
19666    THEN
19667    NULL;
19668    --
19669    --
19670    
19671   l_ccid := AcctDerRule_3(
19672            p_application_id           => p_application_id
19673          , p_ae_header_id             => l_ae_header_id 
19674 , p_source_2 => p_source_2
19675          , x_transaction_coa_id       => l_adr_transaction_coa_id
19676          , x_accounting_coa_id        => l_adr_accounting_coa_id
19677          , x_value_type_code          => l_adr_value_type_code
19678          , p_side                     => 'NA'
19679    );
19680 
19681    xla_ae_lines_pkg.set_ccid(
19682     p_code_combination_id          => l_ccid
19683   , p_value_type_code              => l_adr_value_type_code
19684   , p_transaction_coa_id           => l_adr_transaction_coa_id
19685   , p_accounting_coa_id            => l_adr_accounting_coa_id
19686   , p_adr_code                     => 'AP_INVOICE_DIST'
19687   , p_adr_type_code                => 'S'
19688   , p_component_type               => l_component_type
19689   , p_component_code               => l_component_code
19690   , p_component_type_code          => l_component_type_code
19691   , p_component_appl_id            => l_component_appl_id
19692   , p_amb_context_code             => l_amb_context_code
19693   , p_side                         => 'NA'
19694   );
19695 
19696 
19697    l_segment := AcctDerRule_15(
19698            p_application_id           => p_application_id
19699          , p_ae_header_id             => l_ae_header_id 
19700          , x_transaction_coa_id       => l_adr_transaction_coa_id
19701          , x_accounting_coa_id        => l_adr_accounting_coa_id
19702          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19703          , x_flex_value_set_id        => l_adr_flex_value_set_id
19704          , x_value_type_code          => l_adr_value_type_code
19705          , x_value_combination_id     => l_adr_value_combination_id
19706          , x_value_segment_code       => l_adr_value_segment_code
19707          , p_side                     => 'NA'
19708          , p_override_seg_flag        => 'Y'
19709    );
19710 
19711    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19712 
19713       xla_ae_lines_pkg.set_segment(
19714           p_to_segment_code         => 'GL_ACCOUNT'
19715         , p_segment_value           => l_segment
19716         , p_from_segment_code       => l_adr_value_segment_code
19717         , p_from_combination_id     => l_adr_value_combination_id
19718         , p_value_type_code         => l_adr_value_type_code
19719         , p_transaction_coa_id      => l_adr_transaction_coa_id
19720         , p_accounting_coa_id       => l_adr_accounting_coa_id
19721         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19722         , p_flex_value_set_id       => l_adr_flex_value_set_id
19723         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
19727         , p_component_type_code     => l_component_type_code
19724         , p_adr_type_code           => 'S'
19725         , p_component_type          => l_component_type
19726         , p_component_code          => l_component_code
19728         , p_component_appl_id       => l_component_appl_id
19729         , p_amb_context_code        => l_amb_context_code
19730         , p_entity_code             => 'AP_INVOICES'
19731         , p_event_class_code        => 'DEBIT MEMOS'
19732         , p_side                    => 'NA'
19733         );
19734 
19735   END IF;
19736 
19737    --
19738    --
19739    END IF;
19740 
19741        --
19742        -- Update the line information that should be overwritten
19743        --
19744        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19745                                          p_header_num   => 1);
19746        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19747 
19748        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19749 
19750        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19751           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19752        END IF;
19753 
19754       --
19755       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19756       --
19757       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19758           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19759       ELSE
19760           ---------------------------------------------------------------------------------------------------
19761           -- 4262811a Switch Sign
19762           ---------------------------------------------------------------------------------------------------
19763           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19764           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19765                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19766           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19767                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19768           -- 5132302
19769           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19770                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19771 
19772       END IF;
19773 
19774       -- 4955764
19775       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19776       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19777 
19778 
19779       XLA_AE_LINES_PKG.ValidateCurrentLine;
19780       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19781 
19782       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19783                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19784                ,p_balance_type_code => l_balance_type_code);
19785 
19786    END IF;
19787 
19788    -----------------------------------------------------------------------------------------
19789    -- 4262811 Multiperiod Accounting
19790    -----------------------------------------------------------------------------------------
19791      -- No MPA option is assigned.
19792 
19793 
19794 END IF;
19795 END IF;
19796 --
19797 
19798 --
19799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19800    trace
19801       (p_msg      => 'END of AcctLineType_38'
19802       ,p_level    => C_LEVEL_PROCEDURE
19803       ,p_module   => l_log_module);
19804 END IF;
19805 --
19806 EXCEPTION
19807   WHEN xla_exceptions_pkg.application_exception THEN
19808       RAISE;
19809   WHEN OTHERS THEN
19810        xla_exceptions_pkg.raise_message
19811            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_38');
19812 END AcctLineType_38;
19813 --
19814 
19815 ---------------------------------------
19816 --
19817 -- PRIVATE FUNCTION
19818 --         AcctLineType_39
19819 --
19820 ---------------------------------------
19821 PROCEDURE AcctLineType_39 (
19822   p_application_id        IN NUMBER
19823  ,p_event_id              IN NUMBER
19824  ,p_calculate_acctd_flag  IN VARCHAR2
19825  ,p_calculate_g_l_flag    IN VARCHAR2
19826  ,p_actual_flag           IN OUT VARCHAR2
19827  ,p_balance_type_code     OUT VARCHAR2
19828  ,p_gain_or_loss_ref      OUT VARCHAR2
19829  
19830 --Federal Fund Category Description
19831  , p_source_6            IN VARCHAR2
19832 --Accounting Reversal Indicator
19833  , p_source_15            IN VARCHAR2
19834 --Distribution Link Type
19835  , p_source_17            IN VARCHAR2
19836 --Allocation to Main Distribution Identifier
19837  , p_source_19            IN NUMBER
19838 --Invoice Identifier
19839  , p_source_20            IN NUMBER
19840 --Business Flow Accounts Payable Application Identifier
19841  , p_source_21            IN NUMBER
19842 --Business Flow Invoice Distribution Type
19843  , p_source_22            IN VARCHAR2
19844 --Business Flow Invoice Entity Code
19845  , p_source_23            IN VARCHAR2
19849  , p_source_25            IN NUMBER
19846 --Business Flow Invoice Distribution Identifier
19847  , p_source_24            IN NUMBER
19848 --Business Flow Invoice Identifier
19850 --Invoice Distribution Identifier
19851  , p_source_26            IN NUMBER
19852 --Payables Encumbrance Upgrade Credit Account
19853  , p_source_27            IN NUMBER
19854 --Payables Encumbrance Upgrade Credit Amount
19855  , p_source_28            IN NUMBER
19856 --Invoice Currency Code
19857  , p_source_29            IN VARCHAR2
19858 --Payables Encumbrance Upgrade Credit Base Amount
19859  , p_source_30            IN NUMBER
19860 --Payables Encumbrance Upgrade Debit Account
19861  , p_source_31            IN NUMBER
19862 --Payables Encumbrance Upgrade Debit Amount
19863  , p_source_32            IN NUMBER
19864 --Payables Encumbrance Upgrade Debit Base Amount
19865  , p_source_33            IN NUMBER
19866 --Payables Encumbrance Upgrade Option
19867  , p_source_34            IN VARCHAR2
19868 --Deferred Accounting End Date
19869  , p_source_39            IN DATE
19870 --Deferred Accounting Option
19871  , p_source_40            IN VARCHAR2
19872 --Deferred Accounting Start Date
19873  , p_source_41            IN DATE
19874 --Override Accounted Amount Indicator
19875  , p_source_42            IN VARCHAR2
19876  , p_source_42_meaning    IN VARCHAR2
19877 --Third Party Type
19878  , p_source_45            IN VARCHAR2
19879 --Parent Reversal Identifier
19880  , p_source_46            IN NUMBER
19881 --Invoice Distribution Tax Line Identifier
19882  , p_source_48            IN NUMBER
19883 --Invoice Distribution Tax Distribution Identifier from Tax
19884  , p_source_49            IN NUMBER
19885 --Invoice Distribution Summary Tax Line Identifier
19886  , p_source_50            IN NUMBER
19887 --Payables Upgrade Credit Encumbrance Type Identifier
19888  , p_source_51            IN NUMBER
19889 --Payables Upgrade Debit Encumbrance Type Identifier
19890  , p_source_52            IN NUMBER
19891 --Invoice Distribution Amount
19892  , p_source_55            IN NUMBER
19893 --Invoice Distribution Ledger Amount Before Rounding
19894  , p_source_58            IN NUMBER
19895 )
19896 IS
19897 
19898 l_component_type              VARCHAR2(80);
19899 l_component_code              VARCHAR2(30);
19900 l_component_type_code         VARCHAR2(1);
19901 l_component_appl_id           INTEGER;
19902 l_amb_context_code            VARCHAR2(30);
19903 l_entity_code                 VARCHAR2(30);
19904 l_event_class_code            VARCHAR2(30);
19905 l_ae_header_id                NUMBER;
19906 l_event_type_code             VARCHAR2(30);
19907 l_line_definition_code        VARCHAR2(30);
19908 l_line_definition_owner_code  VARCHAR2(1);
19909 --
19910 -- adr variables
19911 l_segment                     VARCHAR2(30);
19912 l_ccid                        NUMBER;
19913 l_adr_transaction_coa_id      NUMBER;
19914 l_adr_accounting_coa_id       NUMBER;
19915 l_adr_flexfield_segment_code  VARCHAR2(30);
19916 l_adr_flex_value_set_id       NUMBER;
19917 l_adr_value_type_code         VARCHAR2(30);
19918 l_adr_value_combination_id    NUMBER;
19919 l_adr_value_segment_code      VARCHAR2(30);
19920 
19921 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19922 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19923 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19924 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19925 
19926 -- 4262811 Variables ------------------------------------------------------------------------------------------
19927 l_entered_amt_idx             NUMBER;
19928 l_accted_amt_idx              NUMBER;
19929 l_acc_rev_flag                VARCHAR2(1);
19930 l_accrual_line_num            NUMBER;
19931 l_tmp_amt                     NUMBER;
19932 l_acc_rev_natural_side_code   VARCHAR2(1);
19933 
19934 l_num_entries                 NUMBER;
19935 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19936 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19937 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19938 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19939 l_recog_line_1                NUMBER;
19940 l_recog_line_2                NUMBER;
19941 
19942 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19943 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19944 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19945 
19946 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19947 
19948 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19949 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19950 
19951 ---------------------------------------------------------------------------------------------------------------
19952 
19953 
19954 --
19955 -- bulk performance
19956 --
19957 l_balance_type_code           VARCHAR2(1);
19958 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19959 l_log_module                  VARCHAR2(240);
19960 
19961 --
19962 -- Upgrade strategy
19963 --
19964 l_actual_upg_option           VARCHAR2(1);
19965 l_enc_upg_option           VARCHAR2(1);
19966 
19967 --
19968 BEGIN
19969 --
19970 IF g_log_enabled THEN
19971       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19972 END IF;
19973 --
19974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19978          ,p_level    => C_LEVEL_PROCEDURE
19975 
19976       trace
19977          (p_msg      => 'BEGIN of AcctLineType_39'
19979          ,p_module   => l_log_module);
19980 
19981 END IF;
19982 --
19983 l_component_type             := 'AMB_JLT';
19984 l_component_code             := 'FV_AP_DM_REV_DIRECT_FUND_CR';
19985 l_component_type_code        := 'S';
19986 l_component_appl_id          :=  200;
19987 l_amb_context_code           := 'DEFAULT';
19988 l_entity_code                := 'AP_INVOICES';
19989 l_event_class_code           := 'DEBIT MEMOS';
19990 l_event_type_code            := 'DEBIT MEMOS_ALL';
19991 l_line_definition_owner_code := 'S';
19992 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
19993 --
19994 l_balance_type_code          := 'A';
19995 l_segment                     := NULL;
19996 l_ccid                        := NULL;
19997 l_adr_transaction_coa_id      := NULL;
19998 l_adr_accounting_coa_id       := NULL;
19999 l_adr_flexfield_segment_code  := NULL;
20000 l_adr_flex_value_set_id       := NULL;
20001 l_adr_value_type_code         := NULL;
20002 l_adr_value_combination_id    := NULL;
20003 l_adr_value_segment_code      := NULL;
20004 
20005 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20006 l_bflow_class_code           := 'FV_DIRECT_FUND_DR';    -- 4219869 Business Flow
20007 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
20008 l_budgetary_control_flag     := 'Y';
20009 
20010 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20011 l_bflow_applied_to_amt       := NULL; -- 5132302
20012 l_entered_amt_idx            := NULL;          -- 4262811
20013 l_accted_amt_idx             := NULL;          -- 4262811
20014 l_acc_rev_flag               := NULL;          -- 4262811
20015 l_accrual_line_num           := NULL;          -- 4262811
20016 l_tmp_amt                    := NULL;          -- 4262811
20017 --
20018  
20019 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20020     l_balance_type_code <> 'B' THEN
20021 IF NVL(p_source_6,'
20022 ') =  'Direct' AND 
20023 NVL(
20024 xla_ae_sources_pkg.GetSystemSourceChar(
20025    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20026  , p_source_type_code      => 'Y'
20027  , p_source_application_id =>  602
20028 ),'
20029 ') =  'DEBIT MEMO CANCELLED'
20030  THEN 
20031 
20032    --
20033    XLA_AE_LINES_PKG.SetNewLine;
20034 
20035    p_balance_type_code          := l_balance_type_code;
20036    -- set the flag so later we will know whether the gain loss line needs to be created
20037    
20038    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20039      p_actual_flag :='A';
20040    END IF;
20041 
20042    --
20043    -- bulk performance
20044    --
20045    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20046                                       p_header_num   => 0); -- 4262811
20047    --
20048    -- set accounting line options
20049    --
20050    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20051            p_natural_side_code          => 'D'
20052          , p_gain_or_loss_flag          => 'N'
20053          , p_gl_transfer_mode_code      => 'S'
20054          , p_acct_entry_type_code       => 'A'
20055          , p_switch_side_flag           => 'N'
20056          , p_merge_duplicate_code       => 'N'
20057          );
20058    --
20059    l_acc_rev_natural_side_code := 'C';  -- 4262811
20060    -- 
20061    --
20062    -- set accounting line type info
20063    --
20064    xla_ae_lines_pkg.SetAcctLineType
20065       (p_component_type             => l_component_type
20066       ,p_event_type_code            => l_event_type_code
20067       ,p_line_definition_owner_code => l_line_definition_owner_code
20068       ,p_line_definition_code       => l_line_definition_code
20069       ,p_accounting_line_code       => l_component_code
20070       ,p_accounting_line_type_code  => l_component_type_code
20071       ,p_accounting_line_appl_id    => l_component_appl_id
20072       ,p_amb_context_code           => l_amb_context_code
20073       ,p_entity_code                => l_entity_code
20074       ,p_event_class_code           => l_event_class_code);
20075    --
20076    -- set accounting class
20077    --
20078    xla_ae_lines_pkg.SetAcctClass(
20079            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
20080          , p_ae_header_id           => l_ae_header_id
20081          );
20082 
20083    --
20084    -- set rounding class
20085    --
20086    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20087                       'ACCOUNTSPAYABLE';
20088 
20089    --
20090    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20091    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20092    --
20093    -- bulk performance
20094    --
20095    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20096 
20097    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20098       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20099 
20100    -- 4955764
20101    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20105    
20102       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20103 
20104    -- 4458381 Public Sector Enh
20106    --
20107    -- set accounting attributes for the line type
20108    --
20109    l_entered_amt_idx := 23;
20110    l_accted_amt_idx  := 25;
20111    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20112    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20113    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
20114    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20115    l_rec_acct_attrs.array_num_value(2)  := 
20116 xla_ae_sources_pkg.GetSystemSourceNum(
20117    p_source_code           => 'XLA_EVENT_APPL_ID'
20118  , p_source_type_code      => 'Y'
20119  , p_source_application_id =>  602
20120 );
20121    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20122    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
20123    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20124    l_rec_acct_attrs.array_char_value(4)  := 
20125 xla_ae_sources_pkg.GetSystemSourceChar(
20126    p_source_code           => 'XLA_ENTITY_CODE'
20127  , p_source_type_code      => 'Y'
20128  , p_source_application_id =>  602
20129 );
20130    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20131    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
20132    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20133    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
20134    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
20135    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
20136    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20137    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
20138    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
20139    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
20140    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
20141    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
20142    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20143    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
20144    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
20145    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
20146    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
20147    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
20148    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
20149    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
20150    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
20151    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
20152    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
20153    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
20154    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
20155    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
20156    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
20157    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
20158    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
20159    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
20160    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
20161    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
20162    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
20163    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
20164    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
20165    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
20166    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
20167    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
20168    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
20169    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
20170    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
20171    l_rec_acct_attrs.array_num_value(25)  := p_source_58;
20172    l_rec_acct_attrs.array_acct_attr_code(26) := 'MULTIPERIOD_END_DATE';
20173    l_rec_acct_attrs.array_date_value(26)  := p_source_39;
20174    l_rec_acct_attrs.array_acct_attr_code(27) := 'MULTIPERIOD_OPTION';
20175    l_rec_acct_attrs.array_char_value(27)  := p_source_40;
20176    l_rec_acct_attrs.array_acct_attr_code(28) := 'MULTIPERIOD_START_DATE';
20177    l_rec_acct_attrs.array_date_value(28)  := p_source_41;
20178    l_rec_acct_attrs.array_acct_attr_code(29) := 'OVERRIDE_ACCTD_AMT_FLAG';
20179    l_rec_acct_attrs.array_char_value(29)  := p_source_42;
20180    l_rec_acct_attrs.array_acct_attr_code(30) := 'PARTY_TYPE';
20181    l_rec_acct_attrs.array_char_value(30)  := p_source_45;
20182    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
20183    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_46);
20184    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
20185    l_rec_acct_attrs.array_char_value(32)  := p_source_17;
20186    l_rec_acct_attrs.array_acct_attr_code(33) := 'TAX_LINE_REF_ID';
20187    l_rec_acct_attrs.array_num_value(33)  := p_source_48;
20188    l_rec_acct_attrs.array_acct_attr_code(34) := 'TAX_REC_NREC_DIST_REF_ID';
20189    l_rec_acct_attrs.array_num_value(34)  := p_source_49;
20190    l_rec_acct_attrs.array_acct_attr_code(35) := 'TAX_SUMMARY_LINE_REF_ID';
20191    l_rec_acct_attrs.array_num_value(35)  := p_source_50;
20192    l_rec_acct_attrs.array_acct_attr_code(36) := 'UPG_CR_ENC_TYPE_ID';
20193    l_rec_acct_attrs.array_num_value(36)  := p_source_51;
20197    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20194    l_rec_acct_attrs.array_acct_attr_code(37) := 'UPG_DR_ENC_TYPE_ID';
20195    l_rec_acct_attrs.array_num_value(37)  := p_source_52;
20196 
20198    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20199 
20200    ---------------------------------------------------------------------------------------------------------------
20201    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20202    ---------------------------------------------------------------------------------------------------------------
20203    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20204 
20205    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20206    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20207 
20208    IF xla_accounting_cache_pkg.GetValueChar
20209          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20210          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20211    AND l_bflow_method_code = 'PRIOR_ENTRY'
20212 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20213    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20214          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20215        )
20216    THEN
20217          xla_ae_lines_pkg.BflowUpgEntry
20218            (p_business_method_code    => l_bflow_method_code
20219            ,p_business_class_code     => l_bflow_class_code
20220            ,p_balance_type            => l_balance_type_code);
20221    ELSE
20222       NULL;
20223 XLA_AE_LINES_PKG.business_flow_validation(
20224                                 p_business_method_code     => l_bflow_method_code
20225                                ,p_business_class_code      => l_bflow_class_code
20226                                ,p_inherit_description_flag => l_inherit_desc_flag);
20227    END IF;
20228 
20229    --
20230    -- call analytical criteria
20231    --
20232    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20233    --
20234    -- call description
20235    --
20236    -- No description or it is inherited.
20237    --
20238    -- call ADRs
20239    -- Bug 4922099
20240    --
20241    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20242         (NVL(l_actual_upg_option, 'N') = 'O') OR
20243         (NVL(l_enc_upg_option, 'N') = 'O')
20244       )
20245    THEN
20246    NULL;
20247    --
20248    --
20249    
20250    --
20251    --
20252    END IF;
20253    --
20254    -- Bug 4922099
20255    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20256           (NVL(l_enc_upg_option, 'N') = 'O')
20257         ) AND
20258         (l_bflow_method_code = 'PRIOR_ENTRY')
20259       )
20260    THEN
20261       IF
20262       --
20263       1 = 1
20264       --
20265       THEN
20266       xla_accounting_err_pkg.build_message
20267                                     (p_appli_s_name            => 'XLA'
20268                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20269                                     ,p_token_1                 => 'LINE_NUMBER'
20270                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20271                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20272                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20273                                                                              l_component_type
20274                                                                             ,l_component_code
20275                                                                             ,l_component_type_code
20276                                                                             ,l_component_appl_id
20277                                                                             ,l_amb_context_code
20278                                                                             ,l_entity_code
20279                                                                             ,l_event_class_code
20280                                                                            )
20281                                     ,p_token_3                 => 'OWNER'
20282                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20283                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20284                                                                           ,p_lookup_code    => l_component_type_code
20285                                                                          )
20286                                     ,p_token_4                 => 'PRODUCT_NAME'
20287                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20288                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20289                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20290                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20291                                     ,p_ae_header_id            =>  NULL
20295                  trace
20292                                        );
20293 
20294         IF (C_LEVEL_ERROR>= g_log_level) THEN
20296                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20297                       ,p_level    => C_LEVEL_ERROR
20298                       ,p_module   => l_log_module);
20299         END IF;
20300       END IF;
20301    END IF;
20302    --
20303    --
20304    ------------------------------------------------------------------------------------------------
20305    -- 4219869 Business Flow
20306    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20307    -- Prior Entry.  Currently, the following code is always generated.
20308    ------------------------------------------------------------------------------------------------
20309    -- No ValidateCurrentLine for business flow method of Prior Entry
20310 
20311    ------------------------------------------------------------------------------------
20312    -- 4219869 Business Flow
20313    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20314    ------------------------------------------------------------------------------------
20315    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20316 
20317    ----------------------------------------------------------------------------------
20318    -- 4219869 Business Flow
20319    -- Update journal entry status -- Need to generate this within IF <condition>
20320    ----------------------------------------------------------------------------------
20321    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20322          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20323          ,p_balance_type_code => l_balance_type_code
20324          );
20325 
20326    -------------------------------------------------------------------------------------------
20327    -- 4262811 - Generate the Accrual Reversal lines
20328    -------------------------------------------------------------------------------------------
20329    BEGIN
20330       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20331                               (g_array_event(p_event_id).array_value_num('header_index'));
20332       IF l_acc_rev_flag IS NULL THEN
20333          l_acc_rev_flag := 'N';
20334       END IF;
20335    EXCEPTION
20336       WHEN OTHERS THEN
20337          l_acc_rev_flag := 'N';
20338    END;
20339    --
20340    IF (l_acc_rev_flag = 'Y') THEN
20341 
20342        -- 4645092  ------------------------------------------------------------------------------
20343        -- To allow MPA report to determine if it should generate report process
20344        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20345        ------------------------------------------------------------------------------------------
20346 
20347        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20348        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20349    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20350    -- call ADRs
20351    -- Bug 4922099
20352    --
20353    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20354         (NVL(l_actual_upg_option, 'N') = 'O') OR
20355         (NVL(l_enc_upg_option, 'N') = 'O')
20356       )
20357    THEN
20358    NULL;
20359    --
20360    --
20361    
20362    --
20363    --
20364    END IF;
20365 
20366        --
20367        -- Update the line information that should be overwritten
20368        --
20369        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20370                                          p_header_num   => 1);
20371        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20372 
20373        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20374 
20375        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20376           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20377        END IF;
20378 
20379       --
20380       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20381       --
20382       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20383           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20384       ELSE
20385           ---------------------------------------------------------------------------------------------------
20386           -- 4262811a Switch Sign
20387           ---------------------------------------------------------------------------------------------------
20388           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20389           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20390                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20391           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20392                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20393           -- 5132302
20394           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20395                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20396 
20400       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20397       END IF;
20398 
20399       -- 4955764
20401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20402 
20403 
20404       XLA_AE_LINES_PKG.ValidateCurrentLine;
20405       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20406 
20407       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20408                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20409                ,p_balance_type_code => l_balance_type_code);
20410 
20411    END IF;
20412 
20413    -----------------------------------------------------------------------------------------
20414    -- 4262811 Multiperiod Accounting
20415    -----------------------------------------------------------------------------------------
20416      -- No MPA option is assigned.
20417 
20418 
20419 END IF;
20420 END IF;
20421 --
20422 
20423 --
20424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20425    trace
20426       (p_msg      => 'END of AcctLineType_39'
20427       ,p_level    => C_LEVEL_PROCEDURE
20428       ,p_module   => l_log_module);
20429 END IF;
20430 --
20431 EXCEPTION
20432   WHEN xla_exceptions_pkg.application_exception THEN
20433       RAISE;
20434   WHEN OTHERS THEN
20435        xla_exceptions_pkg.raise_message
20436            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_39');
20437 END AcctLineType_39;
20438 --
20439 
20440 ---------------------------------------
20441 --
20442 -- PRIVATE FUNCTION
20443 --         AcctLineType_40
20444 --
20445 ---------------------------------------
20446 PROCEDURE AcctLineType_40 (
20447   p_application_id        IN NUMBER
20448  ,p_event_id              IN NUMBER
20449  ,p_calculate_acctd_flag  IN VARCHAR2
20450  ,p_calculate_g_l_flag    IN VARCHAR2
20451  ,p_actual_flag           IN OUT VARCHAR2
20452  ,p_balance_type_code     OUT VARCHAR2
20453  ,p_gain_or_loss_ref      OUT VARCHAR2
20454  
20455 --Federal Fund Category Description
20456  , p_source_6            IN VARCHAR2
20457 --Accounting Reversal Indicator
20458  , p_source_15            IN VARCHAR2
20459 --Distribution Link Type
20460  , p_source_17            IN VARCHAR2
20461 --Allocation to Main Distribution Identifier
20462  , p_source_19            IN NUMBER
20463 --Invoice Identifier
20464  , p_source_20            IN NUMBER
20465 --Business Flow Accounts Payable Application Identifier
20466  , p_source_21            IN NUMBER
20467 --Business Flow Invoice Distribution Type
20468  , p_source_22            IN VARCHAR2
20469 --Business Flow Invoice Entity Code
20470  , p_source_23            IN VARCHAR2
20471 --Business Flow Invoice Distribution Identifier
20472  , p_source_24            IN NUMBER
20473 --Business Flow Invoice Identifier
20474  , p_source_25            IN NUMBER
20475 --Invoice Distribution Identifier
20476  , p_source_26            IN NUMBER
20477 --Payables Encumbrance Upgrade Credit Account
20478  , p_source_27            IN NUMBER
20479 --Payables Encumbrance Upgrade Credit Amount
20480  , p_source_28            IN NUMBER
20481 --Invoice Currency Code
20482  , p_source_29            IN VARCHAR2
20483 --Payables Encumbrance Upgrade Credit Base Amount
20484  , p_source_30            IN NUMBER
20485 --Payables Encumbrance Upgrade Debit Account
20486  , p_source_31            IN NUMBER
20487 --Payables Encumbrance Upgrade Debit Amount
20488  , p_source_32            IN NUMBER
20489 --Payables Encumbrance Upgrade Debit Base Amount
20490  , p_source_33            IN NUMBER
20491 --Payables Encumbrance Upgrade Option
20492  , p_source_34            IN VARCHAR2
20493 --Deferred Accounting End Date
20494  , p_source_39            IN DATE
20495 --Deferred Accounting Option
20496  , p_source_40            IN VARCHAR2
20497 --Deferred Accounting Start Date
20498  , p_source_41            IN DATE
20499 --Override Accounted Amount Indicator
20500  , p_source_42            IN VARCHAR2
20501  , p_source_42_meaning    IN VARCHAR2
20502 --Third Party Type
20503  , p_source_45            IN VARCHAR2
20504 --Parent Reversal Identifier
20505  , p_source_46            IN NUMBER
20506 --Invoice Distribution Tax Line Identifier
20507  , p_source_48            IN NUMBER
20508 --Invoice Distribution Tax Distribution Identifier from Tax
20509  , p_source_49            IN NUMBER
20510 --Invoice Distribution Summary Tax Line Identifier
20511  , p_source_50            IN NUMBER
20512 --Payables Upgrade Credit Encumbrance Type Identifier
20513  , p_source_51            IN NUMBER
20514 --Payables Upgrade Debit Encumbrance Type Identifier
20515  , p_source_52            IN NUMBER
20516 --Invoice Distribution Amount
20517  , p_source_55            IN NUMBER
20518 --Invoice Distribution Ledger Amount Before Rounding
20519  , p_source_58            IN NUMBER
20520 )
20521 IS
20522 
20523 l_component_type              VARCHAR2(80);
20524 l_component_code              VARCHAR2(30);
20525 l_component_type_code         VARCHAR2(1);
20526 l_component_appl_id           INTEGER;
20527 l_amb_context_code            VARCHAR2(30);
20528 l_entity_code                 VARCHAR2(30);
20529 l_event_class_code            VARCHAR2(30);
20530 l_ae_header_id                NUMBER;
20531 l_event_type_code             VARCHAR2(30);
20535 -- adr variables
20532 l_line_definition_code        VARCHAR2(30);
20533 l_line_definition_owner_code  VARCHAR2(1);
20534 --
20536 l_segment                     VARCHAR2(30);
20537 l_ccid                        NUMBER;
20538 l_adr_transaction_coa_id      NUMBER;
20539 l_adr_accounting_coa_id       NUMBER;
20540 l_adr_flexfield_segment_code  VARCHAR2(30);
20541 l_adr_flex_value_set_id       NUMBER;
20542 l_adr_value_type_code         VARCHAR2(30);
20543 l_adr_value_combination_id    NUMBER;
20544 l_adr_value_segment_code      VARCHAR2(30);
20545 
20546 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20547 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20548 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20549 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20550 
20551 -- 4262811 Variables ------------------------------------------------------------------------------------------
20552 l_entered_amt_idx             NUMBER;
20553 l_accted_amt_idx              NUMBER;
20554 l_acc_rev_flag                VARCHAR2(1);
20555 l_accrual_line_num            NUMBER;
20556 l_tmp_amt                     NUMBER;
20557 l_acc_rev_natural_side_code   VARCHAR2(1);
20558 
20559 l_num_entries                 NUMBER;
20560 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20561 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20562 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20563 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20564 l_recog_line_1                NUMBER;
20565 l_recog_line_2                NUMBER;
20566 
20567 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20568 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20569 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20570 
20571 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20572 
20573 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20574 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20575 
20576 ---------------------------------------------------------------------------------------------------------------
20577 
20578 
20579 --
20580 -- bulk performance
20581 --
20582 l_balance_type_code           VARCHAR2(1);
20583 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20584 l_log_module                  VARCHAR2(240);
20585 
20586 --
20587 -- Upgrade strategy
20588 --
20589 l_actual_upg_option           VARCHAR2(1);
20590 l_enc_upg_option           VARCHAR2(1);
20591 
20592 --
20593 BEGIN
20594 --
20595 IF g_log_enabled THEN
20596       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20597 END IF;
20598 --
20599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20600 
20601       trace
20602          (p_msg      => 'BEGIN of AcctLineType_40'
20603          ,p_level    => C_LEVEL_PROCEDURE
20604          ,p_module   => l_log_module);
20605 
20606 END IF;
20607 --
20608 l_component_type             := 'AMB_JLT';
20609 l_component_code             := 'FV_AP_DM_REV_DIRECT_FUND_DR';
20610 l_component_type_code        := 'S';
20611 l_component_appl_id          :=  200;
20612 l_amb_context_code           := 'DEFAULT';
20613 l_entity_code                := 'AP_INVOICES';
20614 l_event_class_code           := 'DEBIT MEMOS';
20615 l_event_type_code            := 'DEBIT MEMOS_ALL';
20616 l_line_definition_owner_code := 'S';
20617 l_line_definition_code       := 'FV_AP_ACCRUAL_DEBITMEMOS_ALL';
20618 --
20619 l_balance_type_code          := 'A';
20620 l_segment                     := NULL;
20621 l_ccid                        := NULL;
20622 l_adr_transaction_coa_id      := NULL;
20623 l_adr_accounting_coa_id       := NULL;
20624 l_adr_flexfield_segment_code  := NULL;
20625 l_adr_flex_value_set_id       := NULL;
20626 l_adr_value_type_code         := NULL;
20627 l_adr_value_combination_id    := NULL;
20628 l_adr_value_segment_code      := NULL;
20629 
20630 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20631 l_bflow_class_code           := 'FV_DIRECT_FUND_CR';    -- 4219869 Business Flow
20632 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
20633 l_budgetary_control_flag     := 'Y';
20634 
20635 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20636 l_bflow_applied_to_amt       := NULL; -- 5132302
20637 l_entered_amt_idx            := NULL;          -- 4262811
20638 l_accted_amt_idx             := NULL;          -- 4262811
20639 l_acc_rev_flag               := NULL;          -- 4262811
20640 l_accrual_line_num           := NULL;          -- 4262811
20641 l_tmp_amt                    := NULL;          -- 4262811
20642 --
20643  
20644 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20645     l_balance_type_code <> 'B' THEN
20646 IF NVL(p_source_6,'
20647 ') =  'Direct' AND 
20648 NVL(
20649 xla_ae_sources_pkg.GetSystemSourceChar(
20650    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20651  , p_source_type_code      => 'Y'
20652  , p_source_application_id =>  602
20653 ),'
20654 ') =  'DEBIT MEMO CANCELLED'
20655  THEN 
20656 
20657    --
20658    XLA_AE_LINES_PKG.SetNewLine;
20659 
20660    p_balance_type_code          := l_balance_type_code;
20661    -- set the flag so later we will know whether the gain loss line needs to be created
20665    END IF;
20662    
20663    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20664      p_actual_flag :='A';
20666 
20667    --
20668    -- bulk performance
20669    --
20670    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20671                                       p_header_num   => 0); -- 4262811
20672    --
20673    -- set accounting line options
20674    --
20675    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20676            p_natural_side_code          => 'C'
20677          , p_gain_or_loss_flag          => 'N'
20678          , p_gl_transfer_mode_code      => 'S'
20679          , p_acct_entry_type_code       => 'A'
20680          , p_switch_side_flag           => 'N'
20681          , p_merge_duplicate_code       => 'N'
20682          );
20683    --
20684    l_acc_rev_natural_side_code := 'D';  -- 4262811
20685    -- 
20686    --
20687    -- set accounting line type info
20688    --
20689    xla_ae_lines_pkg.SetAcctLineType
20690       (p_component_type             => l_component_type
20691       ,p_event_type_code            => l_event_type_code
20692       ,p_line_definition_owner_code => l_line_definition_owner_code
20693       ,p_line_definition_code       => l_line_definition_code
20694       ,p_accounting_line_code       => l_component_code
20695       ,p_accounting_line_type_code  => l_component_type_code
20696       ,p_accounting_line_appl_id    => l_component_appl_id
20697       ,p_amb_context_code           => l_amb_context_code
20698       ,p_entity_code                => l_entity_code
20699       ,p_event_class_code           => l_event_class_code);
20700    --
20701    -- set accounting class
20702    --
20703    xla_ae_lines_pkg.SetAcctClass(
20704            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
20705          , p_ae_header_id           => l_ae_header_id
20706          );
20707 
20708    --
20709    -- set rounding class
20710    --
20711    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20712                       'ACCOUNTSPAYABLE';
20713 
20714    --
20715    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20716    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20717    --
20718    -- bulk performance
20719    --
20720    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20721 
20722    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20723       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20724 
20725    -- 4955764
20726    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20728 
20729    -- 4458381 Public Sector Enh
20730    
20731    --
20732    -- set accounting attributes for the line type
20733    --
20734    l_entered_amt_idx := 23;
20735    l_accted_amt_idx  := 25;
20736    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20737    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20738    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
20739    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20740    l_rec_acct_attrs.array_num_value(2)  := 
20741 xla_ae_sources_pkg.GetSystemSourceNum(
20742    p_source_code           => 'XLA_EVENT_APPL_ID'
20743  , p_source_type_code      => 'Y'
20744  , p_source_application_id =>  602
20745 );
20746    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20747    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
20748    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20749    l_rec_acct_attrs.array_char_value(4)  := 
20750 xla_ae_sources_pkg.GetSystemSourceChar(
20751    p_source_code           => 'XLA_ENTITY_CODE'
20752  , p_source_type_code      => 'Y'
20753  , p_source_application_id =>  602
20754 );
20755    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20756    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
20757    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20758    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
20759    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
20760    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
20761    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20762    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
20763    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
20764    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
20765    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
20766    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
20767    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20768    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
20769    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
20770    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
20771    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
20772    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
20773    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
20774    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
20775    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
20779    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
20776    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
20777    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
20778    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
20780    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
20781    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
20782    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
20783    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
20784    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
20785    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
20786    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
20787    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
20788    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
20789    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
20790    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
20791    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
20792    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
20793    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
20794    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
20795    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
20796    l_rec_acct_attrs.array_num_value(25)  := p_source_58;
20797    l_rec_acct_attrs.array_acct_attr_code(26) := 'MULTIPERIOD_END_DATE';
20798    l_rec_acct_attrs.array_date_value(26)  := p_source_39;
20799    l_rec_acct_attrs.array_acct_attr_code(27) := 'MULTIPERIOD_OPTION';
20800    l_rec_acct_attrs.array_char_value(27)  := p_source_40;
20801    l_rec_acct_attrs.array_acct_attr_code(28) := 'MULTIPERIOD_START_DATE';
20802    l_rec_acct_attrs.array_date_value(28)  := p_source_41;
20803    l_rec_acct_attrs.array_acct_attr_code(29) := 'OVERRIDE_ACCTD_AMT_FLAG';
20804    l_rec_acct_attrs.array_char_value(29)  := p_source_42;
20805    l_rec_acct_attrs.array_acct_attr_code(30) := 'PARTY_TYPE';
20806    l_rec_acct_attrs.array_char_value(30)  := p_source_45;
20807    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
20808    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_46);
20809    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
20810    l_rec_acct_attrs.array_char_value(32)  := p_source_17;
20811    l_rec_acct_attrs.array_acct_attr_code(33) := 'TAX_LINE_REF_ID';
20812    l_rec_acct_attrs.array_num_value(33)  := p_source_48;
20813    l_rec_acct_attrs.array_acct_attr_code(34) := 'TAX_REC_NREC_DIST_REF_ID';
20814    l_rec_acct_attrs.array_num_value(34)  := p_source_49;
20815    l_rec_acct_attrs.array_acct_attr_code(35) := 'TAX_SUMMARY_LINE_REF_ID';
20816    l_rec_acct_attrs.array_num_value(35)  := p_source_50;
20817    l_rec_acct_attrs.array_acct_attr_code(36) := 'UPG_CR_ENC_TYPE_ID';
20818    l_rec_acct_attrs.array_num_value(36)  := p_source_51;
20819    l_rec_acct_attrs.array_acct_attr_code(37) := 'UPG_DR_ENC_TYPE_ID';
20820    l_rec_acct_attrs.array_num_value(37)  := p_source_52;
20821 
20822    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20823    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20824 
20825    ---------------------------------------------------------------------------------------------------------------
20826    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20827    ---------------------------------------------------------------------------------------------------------------
20828    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20829 
20830    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20831    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20832 
20833    IF xla_accounting_cache_pkg.GetValueChar
20834          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20835          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20836    AND l_bflow_method_code = 'PRIOR_ENTRY'
20837 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20838    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20839          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20840        )
20841    THEN
20842          xla_ae_lines_pkg.BflowUpgEntry
20843            (p_business_method_code    => l_bflow_method_code
20844            ,p_business_class_code     => l_bflow_class_code
20845            ,p_balance_type            => l_balance_type_code);
20846    ELSE
20847       NULL;
20848 XLA_AE_LINES_PKG.business_flow_validation(
20849                                 p_business_method_code     => l_bflow_method_code
20850                                ,p_business_class_code      => l_bflow_class_code
20851                                ,p_inherit_description_flag => l_inherit_desc_flag);
20852    END IF;
20853 
20854    --
20855    -- call analytical criteria
20856    --
20857    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20858    --
20859    -- call description
20860    --
20861    -- No description or it is inherited.
20862    --
20863    -- call ADRs
20864    -- Bug 4922099
20865    --
20866    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20867         (NVL(l_actual_upg_option, 'N') = 'O') OR
20868         (NVL(l_enc_upg_option, 'N') = 'O')
20869       )
20870    THEN
20871    NULL;
20872    --
20873    --
20874    
20875    --
20879    -- Bug 4922099
20876    --
20877    END IF;
20878    --
20880    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20881           (NVL(l_enc_upg_option, 'N') = 'O')
20882         ) AND
20883         (l_bflow_method_code = 'PRIOR_ENTRY')
20884       )
20885    THEN
20886       IF
20887       --
20888       1 = 1
20889       --
20890       THEN
20891       xla_accounting_err_pkg.build_message
20892                                     (p_appli_s_name            => 'XLA'
20893                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20894                                     ,p_token_1                 => 'LINE_NUMBER'
20895                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20896                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20897                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20898                                                                              l_component_type
20899                                                                             ,l_component_code
20900                                                                             ,l_component_type_code
20901                                                                             ,l_component_appl_id
20902                                                                             ,l_amb_context_code
20903                                                                             ,l_entity_code
20904                                                                             ,l_event_class_code
20905                                                                            )
20906                                     ,p_token_3                 => 'OWNER'
20907                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20908                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20909                                                                           ,p_lookup_code    => l_component_type_code
20910                                                                          )
20911                                     ,p_token_4                 => 'PRODUCT_NAME'
20912                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20913                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20914                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20915                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20916                                     ,p_ae_header_id            =>  NULL
20917                                        );
20918 
20919         IF (C_LEVEL_ERROR>= g_log_level) THEN
20920                  trace
20921                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20922                       ,p_level    => C_LEVEL_ERROR
20923                       ,p_module   => l_log_module);
20924         END IF;
20925       END IF;
20926    END IF;
20927    --
20928    --
20929    ------------------------------------------------------------------------------------------------
20930    -- 4219869 Business Flow
20931    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20932    -- Prior Entry.  Currently, the following code is always generated.
20933    ------------------------------------------------------------------------------------------------
20934    -- No ValidateCurrentLine for business flow method of Prior Entry
20935 
20936    ------------------------------------------------------------------------------------
20937    -- 4219869 Business Flow
20938    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20939    ------------------------------------------------------------------------------------
20940    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20941 
20942    ----------------------------------------------------------------------------------
20943    -- 4219869 Business Flow
20944    -- Update journal entry status -- Need to generate this within IF <condition>
20945    ----------------------------------------------------------------------------------
20946    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20947          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20948          ,p_balance_type_code => l_balance_type_code
20949          );
20950 
20951    -------------------------------------------------------------------------------------------
20952    -- 4262811 - Generate the Accrual Reversal lines
20953    -------------------------------------------------------------------------------------------
20954    BEGIN
20955       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20956                               (g_array_event(p_event_id).array_value_num('header_index'));
20957       IF l_acc_rev_flag IS NULL THEN
20958          l_acc_rev_flag := 'N';
20959       END IF;
20960    EXCEPTION
20961       WHEN OTHERS THEN
20962          l_acc_rev_flag := 'N';
20963    END;
20964    --
20965    IF (l_acc_rev_flag = 'Y') THEN
20966 
20967        -- 4645092  ------------------------------------------------------------------------------
20968        -- To allow MPA report to determine if it should generate report process
20969        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20970        ------------------------------------------------------------------------------------------
20971 
20975    -- call ADRs
20972        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20973        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20974    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20976    -- Bug 4922099
20977    --
20978    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20979         (NVL(l_actual_upg_option, 'N') = 'O') OR
20980         (NVL(l_enc_upg_option, 'N') = 'O')
20981       )
20982    THEN
20983    NULL;
20984    --
20985    --
20986    
20987    --
20988    --
20989    END IF;
20990 
20991        --
20992        -- Update the line information that should be overwritten
20993        --
20994        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20995                                          p_header_num   => 1);
20996        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20997 
20998        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20999 
21000        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21001           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21002        END IF;
21003 
21004       --
21005       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21006       --
21007       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21008           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21009       ELSE
21010           ---------------------------------------------------------------------------------------------------
21011           -- 4262811a Switch Sign
21012           ---------------------------------------------------------------------------------------------------
21013           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21014           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21015                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21016           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21017                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21018           -- 5132302
21019           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21020                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21021 
21022       END IF;
21023 
21024       -- 4955764
21025       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21026       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21027 
21028 
21029       XLA_AE_LINES_PKG.ValidateCurrentLine;
21030       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21031 
21032       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21033                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21034                ,p_balance_type_code => l_balance_type_code);
21035 
21036    END IF;
21037 
21038    -----------------------------------------------------------------------------------------
21039    -- 4262811 Multiperiod Accounting
21040    -----------------------------------------------------------------------------------------
21041      -- No MPA option is assigned.
21042 
21043 
21044 END IF;
21045 END IF;
21046 --
21047 
21048 --
21049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21050    trace
21051       (p_msg      => 'END of AcctLineType_40'
21052       ,p_level    => C_LEVEL_PROCEDURE
21053       ,p_module   => l_log_module);
21054 END IF;
21055 --
21056 EXCEPTION
21057   WHEN xla_exceptions_pkg.application_exception THEN
21058       RAISE;
21059   WHEN OTHERS THEN
21060        xla_exceptions_pkg.raise_message
21061            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_40');
21062 END AcctLineType_40;
21063 --
21064 
21065 ---------------------------------------
21066 --
21067 -- PRIVATE FUNCTION
21068 --         AcctLineType_41
21069 --
21070 ---------------------------------------
21071 PROCEDURE AcctLineType_41 (
21072   p_application_id        IN NUMBER
21073  ,p_event_id              IN NUMBER
21074  ,p_calculate_acctd_flag  IN VARCHAR2
21075  ,p_calculate_g_l_flag    IN VARCHAR2
21076  ,p_actual_flag           IN OUT VARCHAR2
21077  ,p_balance_type_code     OUT VARCHAR2
21078  ,p_gain_or_loss_ref      OUT VARCHAR2
21079  
21080 --Invoice Distribution Description
21081  , p_source_1            IN VARCHAR2
21082 --Invoice Distribution Account
21083  , p_source_2            IN NUMBER
21084 --Federal Anticipation
21085  , p_source_3            IN VARCHAR2
21086 --Invoice Distribution Type
21087  , p_source_8            IN VARCHAR2
21088  , p_source_8_meaning    IN VARCHAR2
21089 --Federal Prior Year Flag
21090  , p_source_9            IN VARCHAR2
21091 --Accrue on Receipt Option
21092  , p_source_11            IN VARCHAR2
21093  , p_source_11_meaning    IN VARCHAR2
21094 --Purchase Order Distribution Identifier
21095  , p_source_12            IN NUMBER
21096 --Invoice Type
21100  , p_source_14            IN VARCHAR2
21097  , p_source_13            IN VARCHAR2
21098  , p_source_13_meaning    IN VARCHAR2
21099 --Federal Adjustment Type
21101 --Accounting Reversal Indicator
21102  , p_source_15            IN VARCHAR2
21103 --Distribution Link Type
21104  , p_source_17            IN VARCHAR2
21105 --Allocation to Main Distribution Identifier
21106  , p_source_19            IN NUMBER
21107 --Invoice Identifier
21108  , p_source_20            IN NUMBER
21109 --Business Flow Accounts Payable Application Identifier
21110  , p_source_21            IN NUMBER
21111 --Business Flow Invoice Distribution Type
21112  , p_source_22            IN VARCHAR2
21113 --Business Flow Invoice Entity Code
21114  , p_source_23            IN VARCHAR2
21115 --Business Flow Invoice Distribution Identifier
21116  , p_source_24            IN NUMBER
21117 --Business Flow Invoice Identifier
21118  , p_source_25            IN NUMBER
21119 --Invoice Distribution Identifier
21120  , p_source_26            IN NUMBER
21121 --Payables Encumbrance Upgrade Credit Account
21122  , p_source_27            IN NUMBER
21123 --Payables Encumbrance Upgrade Credit Amount
21124  , p_source_28            IN NUMBER
21125 --Invoice Currency Code
21126  , p_source_29            IN VARCHAR2
21127 --Payables Encumbrance Upgrade Credit Base Amount
21128  , p_source_30            IN NUMBER
21129 --Payables Encumbrance Upgrade Debit Account
21130  , p_source_31            IN NUMBER
21131 --Payables Encumbrance Upgrade Debit Amount
21132  , p_source_32            IN NUMBER
21133 --Payables Encumbrance Upgrade Debit Base Amount
21134  , p_source_33            IN NUMBER
21135 --Payables Encumbrance Upgrade Option
21136  , p_source_34            IN VARCHAR2
21137 --Federal Anticipated Amt
21138  , p_source_35            IN NUMBER
21139 --Invoice Exchange Date
21140  , p_source_36            IN DATE
21141 --Invoice Exchange Rate
21142  , p_source_37            IN NUMBER
21143 --Invoice Exchange Rate Type
21144  , p_source_38            IN VARCHAR2
21145 --Deferred Accounting End Date
21146  , p_source_39            IN DATE
21147 --Deferred Accounting Option
21148  , p_source_40            IN VARCHAR2
21149 --Deferred Accounting Start Date
21150  , p_source_41            IN DATE
21151 --Override Accounted Amount Indicator
21152  , p_source_42            IN VARCHAR2
21153  , p_source_42_meaning    IN VARCHAR2
21154 --Invoice Supplier Identifier
21155  , p_source_43            IN NUMBER
21156 --Invoice Supplier Site Identifier
21157  , p_source_44            IN NUMBER
21158 --Third Party Type
21159  , p_source_45            IN VARCHAR2
21160 --Parent Reversal Identifier
21161  , p_source_46            IN NUMBER
21162 --Invoice Distribution Statistical Amount
21163  , p_source_47            IN NUMBER
21164 --Invoice Distribution Tax Line Identifier
21165  , p_source_48            IN NUMBER
21166 --Invoice Distribution Tax Distribution Identifier from Tax
21167  , p_source_49            IN NUMBER
21168 --Invoice Distribution Summary Tax Line Identifier
21169  , p_source_50            IN NUMBER
21170 --Payables Upgrade Credit Encumbrance Type Identifier
21171  , p_source_51            IN NUMBER
21172 --Payables Upgrade Debit Encumbrance Type Identifier
21173  , p_source_52            IN NUMBER
21174 --Invoice Distribution Amount
21175  , p_source_55            IN NUMBER
21176 )
21177 IS
21178 
21179 l_component_type              VARCHAR2(80);
21180 l_component_code              VARCHAR2(30);
21181 l_component_type_code         VARCHAR2(1);
21182 l_component_appl_id           INTEGER;
21183 l_amb_context_code            VARCHAR2(30);
21184 l_entity_code                 VARCHAR2(30);
21185 l_event_class_code            VARCHAR2(30);
21186 l_ae_header_id                NUMBER;
21187 l_event_type_code             VARCHAR2(30);
21188 l_line_definition_code        VARCHAR2(30);
21189 l_line_definition_owner_code  VARCHAR2(1);
21190 --
21191 -- adr variables
21192 l_segment                     VARCHAR2(30);
21193 l_ccid                        NUMBER;
21194 l_adr_transaction_coa_id      NUMBER;
21195 l_adr_accounting_coa_id       NUMBER;
21196 l_adr_flexfield_segment_code  VARCHAR2(30);
21197 l_adr_flex_value_set_id       NUMBER;
21198 l_adr_value_type_code         VARCHAR2(30);
21199 l_adr_value_combination_id    NUMBER;
21200 l_adr_value_segment_code      VARCHAR2(30);
21201 
21202 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21203 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21204 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21205 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21206 
21207 -- 4262811 Variables ------------------------------------------------------------------------------------------
21208 l_entered_amt_idx             NUMBER;
21209 l_accted_amt_idx              NUMBER;
21210 l_acc_rev_flag                VARCHAR2(1);
21211 l_accrual_line_num            NUMBER;
21212 l_tmp_amt                     NUMBER;
21213 l_acc_rev_natural_side_code   VARCHAR2(1);
21214 
21215 l_num_entries                 NUMBER;
21216 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21217 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21218 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21219 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21220 l_recog_line_1                NUMBER;
21224 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21221 l_recog_line_2                NUMBER;
21222 
21223 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21225 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21226 
21227 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21228 
21229 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21230 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21231 
21232 ---------------------------------------------------------------------------------------------------------------
21233 
21234 
21235 --
21236 -- bulk performance
21237 --
21238 l_balance_type_code           VARCHAR2(1);
21239 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21240 l_log_module                  VARCHAR2(240);
21241 
21242 --
21243 -- Upgrade strategy
21244 --
21245 l_actual_upg_option           VARCHAR2(1);
21246 l_enc_upg_option           VARCHAR2(1);
21247 
21248 --
21249 BEGIN
21250 --
21251 IF g_log_enabled THEN
21252       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
21253 END IF;
21254 --
21255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21256 
21257       trace
21258          (p_msg      => 'BEGIN of AcctLineType_41'
21259          ,p_level    => C_LEVEL_PROCEDURE
21260          ,p_module   => l_log_module);
21261 
21262 END IF;
21263 --
21264 l_component_type             := 'AMB_JLT';
21265 l_component_code             := 'FV_AP_INV_ DWD_ANPT_PYA_CR';
21266 l_component_type_code        := 'S';
21267 l_component_appl_id          :=  200;
21268 l_amb_context_code           := 'DEFAULT';
21269 l_entity_code                := 'AP_INVOICES';
21270 l_event_class_code           := 'INVOICES';
21271 l_event_type_code            := 'INVOICES_ALL';
21272 l_line_definition_owner_code := 'S';
21273 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
21274 --
21275 l_balance_type_code          := 'A';
21276 l_segment                     := NULL;
21277 l_ccid                        := NULL;
21278 l_adr_transaction_coa_id      := NULL;
21279 l_adr_accounting_coa_id       := NULL;
21280 l_adr_flexfield_segment_code  := NULL;
21281 l_adr_flex_value_set_id       := NULL;
21282 l_adr_value_type_code         := NULL;
21283 l_adr_value_combination_id    := NULL;
21284 l_adr_value_segment_code      := NULL;
21285 
21286 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21287 l_bflow_class_code           := '';    -- 4219869 Business Flow
21288 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21289 l_budgetary_control_flag     := 'Y';
21290 
21291 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21292 l_bflow_applied_to_amt       := NULL; -- 5132302
21293 l_entered_amt_idx            := NULL;          -- 4262811
21294 l_accted_amt_idx             := NULL;          -- 4262811
21295 l_acc_rev_flag               := NULL;          -- 4262811
21296 l_accrual_line_num           := NULL;          -- 4262811
21297 l_tmp_amt                    := NULL;          -- 4262811
21298 --
21299  
21300 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21301     l_balance_type_code <> 'B' THEN
21302 IF ((p_source_12 IS NULL AND 
21303 (NVL(p_source_13,'
21304 ') =  'STANDARD' OR 
21305 NVL(p_source_13,'
21306 ') =  'MIXED' OR 
21307 NVL(p_source_13,'
21308 ') =  'INTEREST' OR 
21309 NVL(p_source_13,'
21310 ') =  'EXPENSE REPORT') AND 
21311 (NVL(p_source_8,'
21312 ') =  'ITEM' OR 
21313 NVL(p_source_8,'
21314 ') =  'ACCRUAL' OR 
21315 NVL(p_source_8,'
21316 ') =  'MISCELLANEOUS' OR 
21317 NVL(p_source_8,'
21318 ') =  'FREIGHT' OR 
21319 NVL(p_source_8,'
21320 ') =  'IPV')
21321 ) OR (p_source_12 IS NOT NULL AND 
21322 NVL(p_source_8,'
21323 ') =  'IPV')
21324 ) AND NVL(p_source_9,'
21325 ') =  'Y' AND 
21326 NVL(p_source_14,'
21327 ') =  'Downward' AND 
21328 (NVL(p_source_3,'
21329 ') =  'Anticipated' OR 
21330 NVL(p_source_3,'
21331 ') =  'Partial') AND 
21332 NVL(p_source_11,'
21333 ') <>  'Y'
21334  THEN 
21335 
21336    --
21337    XLA_AE_LINES_PKG.SetNewLine;
21338 
21339    p_balance_type_code          := l_balance_type_code;
21340    -- set the flag so later we will know whether the gain loss line needs to be created
21341    
21342    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21343      p_actual_flag :='A';
21344    END IF;
21345 
21346    --
21347    -- bulk performance
21348    --
21349    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21350                                       p_header_num   => 0); -- 4262811
21351    --
21352    -- set accounting line options
21353    --
21354    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21355            p_natural_side_code          => 'C'
21356          , p_gain_or_loss_flag          => 'N'
21357          , p_gl_transfer_mode_code      => 'S'
21358          , p_acct_entry_type_code       => 'A'
21359          , p_switch_side_flag           => 'N'
21360          , p_merge_duplicate_code       => 'N'
21361          );
21362    --
21363    l_acc_rev_natural_side_code := 'D';  -- 4262811
21364    -- 
21365    --
21369       (p_component_type             => l_component_type
21366    -- set accounting line type info
21367    --
21368    xla_ae_lines_pkg.SetAcctLineType
21370       ,p_event_type_code            => l_event_type_code
21371       ,p_line_definition_owner_code => l_line_definition_owner_code
21372       ,p_line_definition_code       => l_line_definition_code
21373       ,p_accounting_line_code       => l_component_code
21374       ,p_accounting_line_type_code  => l_component_type_code
21375       ,p_accounting_line_appl_id    => l_component_appl_id
21376       ,p_amb_context_code           => l_amb_context_code
21377       ,p_entity_code                => l_entity_code
21378       ,p_event_class_code           => l_event_class_code);
21379    --
21380    -- set accounting class
21381    --
21382    xla_ae_lines_pkg.SetAcctClass(
21383            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
21384          , p_ae_header_id           => l_ae_header_id
21385          );
21386 
21387    --
21388    -- set rounding class
21389    --
21390    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21391                       'ACCOUNTSPAYABLE';
21392 
21393    --
21394    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21395    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21396    --
21397    -- bulk performance
21398    --
21399    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21400 
21401    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21402       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21403 
21404    -- 4955764
21405    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21407 
21408    -- 4458381 Public Sector Enh
21409    
21410    --
21411    -- set accounting attributes for the line type
21412    --
21413    l_entered_amt_idx := 24;
21414    l_accted_amt_idx  := 29;
21415    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
21416    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21417    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
21418    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
21419    l_rec_acct_attrs.array_num_value(2)  := 
21420 xla_ae_sources_pkg.GetSystemSourceNum(
21421    p_source_code           => 'XLA_EVENT_APPL_ID'
21422  , p_source_type_code      => 'Y'
21423  , p_source_application_id =>  602
21424 );
21425    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
21426    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
21427    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
21428    l_rec_acct_attrs.array_char_value(4)  := 
21429 xla_ae_sources_pkg.GetSystemSourceChar(
21430    p_source_code           => 'XLA_ENTITY_CODE'
21431  , p_source_type_code      => 'Y'
21432  , p_source_application_id =>  602
21433 );
21434    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
21435    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
21436    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
21437    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
21438    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
21439    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
21440    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
21441    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
21442    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21443    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
21444    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
21445    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
21446    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
21447    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
21448    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21449    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
21450    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
21451    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
21452    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
21453    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
21454    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
21455    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
21456    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
21457    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
21458    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
21459    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
21460    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
21461    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
21462    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
21463    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
21464    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
21465    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
21466    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
21467    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
21468    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
21472    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
21469    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
21470    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
21471    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
21473    l_rec_acct_attrs.array_num_value(24)  := p_source_35;
21474    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
21475    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
21476    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
21477    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
21478    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
21479    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
21480    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
21481    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
21482    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
21483    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
21484    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
21485    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
21486    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
21487    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
21488    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
21489    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
21490    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
21491    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
21492    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
21493    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
21494    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
21495    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
21496    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
21497    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
21498    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
21499    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
21500    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
21501    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
21502    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
21503    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
21504    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
21505    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
21506    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
21507    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
21508    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
21509    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
21510    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
21511    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
21512    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
21513    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
21514 
21515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21517 
21518    ---------------------------------------------------------------------------------------------------------------
21519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21520    ---------------------------------------------------------------------------------------------------------------
21521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21522 
21523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21525 
21526    IF xla_accounting_cache_pkg.GetValueChar
21527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21529    AND l_bflow_method_code = 'PRIOR_ENTRY'
21530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21533        )
21534    THEN
21535          xla_ae_lines_pkg.BflowUpgEntry
21536            (p_business_method_code    => l_bflow_method_code
21537            ,p_business_class_code     => l_bflow_class_code
21538            ,p_balance_type            => l_balance_type_code);
21539    ELSE
21540       NULL;
21541 -- No business flow processing for business flow method of NONE.
21542    END IF;
21543 
21544    --
21545    -- call analytical criteria
21546    --
21547    
21548    --
21549    -- call description
21550    --
21551    
21552 xla_ae_lines_pkg.SetLineDescription(
21553    p_ae_header_id => l_ae_header_id
21554   ,p_description  => Description_2 (
21555      p_application_id         => p_application_id
21556    , p_ae_header_id           => l_ae_header_id 
21557 , p_source_1 => p_source_1
21558    )
21559 );
21560 
21561 
21562    --
21563    -- call ADRs
21564    -- Bug 4922099
21565    --
21566    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21567         (NVL(l_actual_upg_option, 'N') = 'O') OR
21568         (NVL(l_enc_upg_option, 'N') = 'O')
21569       )
21570    THEN
21571    NULL;
21572    --
21573    --
21574    
21575   l_ccid := AcctDerRule_3(
21576            p_application_id           => p_application_id
21580          , x_accounting_coa_id        => l_adr_accounting_coa_id
21577          , p_ae_header_id             => l_ae_header_id 
21578 , p_source_2 => p_source_2
21579          , x_transaction_coa_id       => l_adr_transaction_coa_id
21581          , x_value_type_code          => l_adr_value_type_code
21582          , p_side                     => 'NA'
21583    );
21584 
21585    xla_ae_lines_pkg.set_ccid(
21586     p_code_combination_id          => l_ccid
21587   , p_value_type_code              => l_adr_value_type_code
21588   , p_transaction_coa_id           => l_adr_transaction_coa_id
21589   , p_accounting_coa_id            => l_adr_accounting_coa_id
21590   , p_adr_code                     => 'AP_INVOICE_DIST'
21591   , p_adr_type_code                => 'S'
21592   , p_component_type               => l_component_type
21593   , p_component_code               => l_component_code
21594   , p_component_type_code          => l_component_type_code
21595   , p_component_appl_id            => l_component_appl_id
21596   , p_amb_context_code             => l_amb_context_code
21597   , p_side                         => 'NA'
21598   );
21599 
21600 
21601    l_segment := AcctDerRule_5(
21602            p_application_id           => p_application_id
21603          , p_ae_header_id             => l_ae_header_id 
21604 , p_source_3 => p_source_3
21605          , x_transaction_coa_id       => l_adr_transaction_coa_id
21606          , x_accounting_coa_id        => l_adr_accounting_coa_id
21607          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
21608          , x_flex_value_set_id        => l_adr_flex_value_set_id
21609          , x_value_type_code          => l_adr_value_type_code
21610          , x_value_combination_id     => l_adr_value_combination_id
21611          , x_value_segment_code       => l_adr_value_segment_code
21612          , p_side                     => 'NA'
21613          , p_override_seg_flag        => 'Y'
21614    );
21615 
21616    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
21617 
21618       xla_ae_lines_pkg.set_segment(
21619           p_to_segment_code         => 'GL_ACCOUNT'
21620         , p_segment_value           => l_segment
21621         , p_from_segment_code       => l_adr_value_segment_code
21622         , p_from_combination_id     => l_adr_value_combination_id
21623         , p_value_type_code         => l_adr_value_type_code
21624         , p_transaction_coa_id      => l_adr_transaction_coa_id
21625         , p_accounting_coa_id       => l_adr_accounting_coa_id
21626         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
21627         , p_flex_value_set_id       => l_adr_flex_value_set_id
21628         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
21629         , p_adr_type_code           => 'S'
21630         , p_component_type          => l_component_type
21631         , p_component_code          => l_component_code
21632         , p_component_type_code     => l_component_type_code
21633         , p_component_appl_id       => l_component_appl_id
21634         , p_amb_context_code        => l_amb_context_code
21635         , p_entity_code             => 'AP_INVOICES'
21636         , p_event_class_code        => 'INVOICES'
21637         , p_side                    => 'NA'
21638         );
21639 
21640   END IF;
21641 
21642    --
21643    --
21644    END IF;
21645    --
21646    -- Bug 4922099
21647    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21648           (NVL(l_enc_upg_option, 'N') = 'O')
21649         ) AND
21650         (l_bflow_method_code = 'PRIOR_ENTRY')
21651       )
21652    THEN
21653       IF
21654       --
21655       1 = 2
21656       --
21657       THEN
21658       xla_accounting_err_pkg.build_message
21659                                     (p_appli_s_name            => 'XLA'
21660                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21661                                     ,p_token_1                 => 'LINE_NUMBER'
21662                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21663                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21664                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21665                                                                              l_component_type
21666                                                                             ,l_component_code
21667                                                                             ,l_component_type_code
21668                                                                             ,l_component_appl_id
21669                                                                             ,l_amb_context_code
21670                                                                             ,l_entity_code
21671                                                                             ,l_event_class_code
21672                                                                            )
21673                                     ,p_token_3                 => 'OWNER'
21674                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21675                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21676                                                                           ,p_lookup_code    => l_component_type_code
21677                                                                          )
21678                                     ,p_token_4                 => 'PRODUCT_NAME'
21682                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21679                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21680                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21681                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21683                                     ,p_ae_header_id            =>  NULL
21684                                        );
21685 
21686         IF (C_LEVEL_ERROR>= g_log_level) THEN
21687                  trace
21688                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21689                       ,p_level    => C_LEVEL_ERROR
21690                       ,p_module   => l_log_module);
21691         END IF;
21692       END IF;
21693    END IF;
21694    --
21695    --
21696    ------------------------------------------------------------------------------------------------
21697    -- 4219869 Business Flow
21698    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21699    -- Prior Entry.  Currently, the following code is always generated.
21700    ------------------------------------------------------------------------------------------------
21701    XLA_AE_LINES_PKG.ValidateCurrentLine;
21702 
21703    ------------------------------------------------------------------------------------
21704    -- 4219869 Business Flow
21705    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21706    ------------------------------------------------------------------------------------
21707    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21708 
21709    ----------------------------------------------------------------------------------
21710    -- 4219869 Business Flow
21711    -- Update journal entry status -- Need to generate this within IF <condition>
21712    ----------------------------------------------------------------------------------
21713    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21714          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21715          ,p_balance_type_code => l_balance_type_code
21716          );
21717 
21718    -------------------------------------------------------------------------------------------
21719    -- 4262811 - Generate the Accrual Reversal lines
21720    -------------------------------------------------------------------------------------------
21721    BEGIN
21722       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21723                               (g_array_event(p_event_id).array_value_num('header_index'));
21724       IF l_acc_rev_flag IS NULL THEN
21725          l_acc_rev_flag := 'N';
21726       END IF;
21727    EXCEPTION
21728       WHEN OTHERS THEN
21729          l_acc_rev_flag := 'N';
21730    END;
21731    --
21732    IF (l_acc_rev_flag = 'Y') THEN
21733 
21734        -- 4645092  ------------------------------------------------------------------------------
21735        -- To allow MPA report to determine if it should generate report process
21736        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21737        ------------------------------------------------------------------------------------------
21738 
21739        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21740        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21741    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21742    -- call ADRs
21743    -- Bug 4922099
21744    --
21745    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21746         (NVL(l_actual_upg_option, 'N') = 'O') OR
21747         (NVL(l_enc_upg_option, 'N') = 'O')
21748       )
21749    THEN
21750    NULL;
21751    --
21752    --
21753    
21754   l_ccid := AcctDerRule_3(
21755            p_application_id           => p_application_id
21756          , p_ae_header_id             => l_ae_header_id 
21757 , p_source_2 => p_source_2
21758          , x_transaction_coa_id       => l_adr_transaction_coa_id
21759          , x_accounting_coa_id        => l_adr_accounting_coa_id
21760          , x_value_type_code          => l_adr_value_type_code
21761          , p_side                     => 'NA'
21762    );
21763 
21764    xla_ae_lines_pkg.set_ccid(
21765     p_code_combination_id          => l_ccid
21766   , p_value_type_code              => l_adr_value_type_code
21767   , p_transaction_coa_id           => l_adr_transaction_coa_id
21768   , p_accounting_coa_id            => l_adr_accounting_coa_id
21769   , p_adr_code                     => 'AP_INVOICE_DIST'
21770   , p_adr_type_code                => 'S'
21771   , p_component_type               => l_component_type
21772   , p_component_code               => l_component_code
21773   , p_component_type_code          => l_component_type_code
21774   , p_component_appl_id            => l_component_appl_id
21775   , p_amb_context_code             => l_amb_context_code
21776   , p_side                         => 'NA'
21777   );
21778 
21779 
21780    l_segment := AcctDerRule_5(
21781            p_application_id           => p_application_id
21782          , p_ae_header_id             => l_ae_header_id 
21783 , p_source_3 => p_source_3
21784          , x_transaction_coa_id       => l_adr_transaction_coa_id
21785          , x_accounting_coa_id        => l_adr_accounting_coa_id
21786          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
21790          , x_value_segment_code       => l_adr_value_segment_code
21787          , x_flex_value_set_id        => l_adr_flex_value_set_id
21788          , x_value_type_code          => l_adr_value_type_code
21789          , x_value_combination_id     => l_adr_value_combination_id
21791          , p_side                     => 'NA'
21792          , p_override_seg_flag        => 'Y'
21793    );
21794 
21795    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
21796 
21797       xla_ae_lines_pkg.set_segment(
21798           p_to_segment_code         => 'GL_ACCOUNT'
21799         , p_segment_value           => l_segment
21800         , p_from_segment_code       => l_adr_value_segment_code
21801         , p_from_combination_id     => l_adr_value_combination_id
21802         , p_value_type_code         => l_adr_value_type_code
21803         , p_transaction_coa_id      => l_adr_transaction_coa_id
21804         , p_accounting_coa_id       => l_adr_accounting_coa_id
21805         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
21806         , p_flex_value_set_id       => l_adr_flex_value_set_id
21807         , p_adr_code                => 'FV_445002_DWD_PYA_ANCPT_ACCT'
21808         , p_adr_type_code           => 'S'
21809         , p_component_type          => l_component_type
21810         , p_component_code          => l_component_code
21811         , p_component_type_code     => l_component_type_code
21812         , p_component_appl_id       => l_component_appl_id
21813         , p_amb_context_code        => l_amb_context_code
21814         , p_entity_code             => 'AP_INVOICES'
21815         , p_event_class_code        => 'INVOICES'
21816         , p_side                    => 'NA'
21817         );
21818 
21819   END IF;
21820 
21821    --
21822    --
21823    END IF;
21824 
21825        --
21826        -- Update the line information that should be overwritten
21827        --
21828        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21829                                          p_header_num   => 1);
21830        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21831 
21832        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21833 
21834        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21835           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21836        END IF;
21837 
21838       --
21839       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21840       --
21841       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21842           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21843       ELSE
21844           ---------------------------------------------------------------------------------------------------
21845           -- 4262811a Switch Sign
21846           ---------------------------------------------------------------------------------------------------
21847           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21848           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21849                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21850           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21851                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21852           -- 5132302
21853           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21854                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21855 
21856       END IF;
21857 
21858       -- 4955764
21859       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21860       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21861 
21862 
21863       XLA_AE_LINES_PKG.ValidateCurrentLine;
21864       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21865 
21866       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21867                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21868                ,p_balance_type_code => l_balance_type_code);
21869 
21870    END IF;
21871 
21872    -----------------------------------------------------------------------------------------
21873    -- 4262811 Multiperiod Accounting
21874    -----------------------------------------------------------------------------------------
21875      -- No MPA option is assigned.
21876 
21877 
21878 END IF;
21879 END IF;
21880 --
21881 
21882 --
21883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21884    trace
21885       (p_msg      => 'END of AcctLineType_41'
21886       ,p_level    => C_LEVEL_PROCEDURE
21887       ,p_module   => l_log_module);
21888 END IF;
21889 --
21890 EXCEPTION
21891   WHEN xla_exceptions_pkg.application_exception THEN
21892       RAISE;
21893   WHEN OTHERS THEN
21894        xla_exceptions_pkg.raise_message
21895            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_41');
21896 END AcctLineType_41;
21897 --
21898 
21899 ---------------------------------------
21900 --
21901 -- PRIVATE FUNCTION
21905 PROCEDURE AcctLineType_42 (
21902 --         AcctLineType_42
21903 --
21904 ---------------------------------------
21906   p_application_id        IN NUMBER
21907  ,p_event_id              IN NUMBER
21908  ,p_calculate_acctd_flag  IN VARCHAR2
21909  ,p_calculate_g_l_flag    IN VARCHAR2
21910  ,p_actual_flag           IN OUT VARCHAR2
21911  ,p_balance_type_code     OUT VARCHAR2
21912  ,p_gain_or_loss_ref      OUT VARCHAR2
21913  
21914 --Invoice Distribution Description
21915  , p_source_1            IN VARCHAR2
21916 --Invoice Distribution Account
21917  , p_source_2            IN NUMBER
21918 --Invoice Distribution Type
21919  , p_source_8            IN VARCHAR2
21920  , p_source_8_meaning    IN VARCHAR2
21921 --Federal Prior Year Flag
21922  , p_source_9            IN VARCHAR2
21923 --Accrue on Receipt Option
21924  , p_source_11            IN VARCHAR2
21925  , p_source_11_meaning    IN VARCHAR2
21926 --Purchase Order Distribution Identifier
21927  , p_source_12            IN NUMBER
21928 --Invoice Type
21929  , p_source_13            IN VARCHAR2
21930  , p_source_13_meaning    IN VARCHAR2
21931 --Federal Adjustment Type
21932  , p_source_14            IN VARCHAR2
21933 --Accounting Reversal Indicator
21934  , p_source_15            IN VARCHAR2
21935 --Distribution Link Type
21936  , p_source_17            IN VARCHAR2
21937 --Allocation to Main Distribution Identifier
21938  , p_source_19            IN NUMBER
21939 --Invoice Identifier
21940  , p_source_20            IN NUMBER
21941 --Business Flow Accounts Payable Application Identifier
21942  , p_source_21            IN NUMBER
21943 --Business Flow Invoice Distribution Type
21944  , p_source_22            IN VARCHAR2
21945 --Business Flow Invoice Entity Code
21946  , p_source_23            IN VARCHAR2
21947 --Business Flow Invoice Distribution Identifier
21948  , p_source_24            IN NUMBER
21949 --Business Flow Invoice Identifier
21950  , p_source_25            IN NUMBER
21951 --Invoice Distribution Identifier
21952  , p_source_26            IN NUMBER
21953 --Payables Encumbrance Upgrade Credit Account
21954  , p_source_27            IN NUMBER
21955 --Payables Encumbrance Upgrade Credit Amount
21956  , p_source_28            IN NUMBER
21957 --Invoice Currency Code
21958  , p_source_29            IN VARCHAR2
21959 --Payables Encumbrance Upgrade Credit Base Amount
21960  , p_source_30            IN NUMBER
21961 --Payables Encumbrance Upgrade Debit Account
21962  , p_source_31            IN NUMBER
21963 --Payables Encumbrance Upgrade Debit Amount
21964  , p_source_32            IN NUMBER
21965 --Payables Encumbrance Upgrade Debit Base Amount
21966  , p_source_33            IN NUMBER
21967 --Payables Encumbrance Upgrade Option
21968  , p_source_34            IN VARCHAR2
21969 --Invoice Exchange Date
21970  , p_source_36            IN DATE
21971 --Invoice Exchange Rate
21972  , p_source_37            IN NUMBER
21973 --Invoice Exchange Rate Type
21974  , p_source_38            IN VARCHAR2
21975 --Deferred Accounting End Date
21976  , p_source_39            IN DATE
21977 --Deferred Accounting Option
21978  , p_source_40            IN VARCHAR2
21979 --Deferred Accounting Start Date
21980  , p_source_41            IN DATE
21981 --Override Accounted Amount Indicator
21982  , p_source_42            IN VARCHAR2
21983  , p_source_42_meaning    IN VARCHAR2
21984 --Invoice Supplier Identifier
21985  , p_source_43            IN NUMBER
21986 --Invoice Supplier Site Identifier
21987  , p_source_44            IN NUMBER
21988 --Third Party Type
21989  , p_source_45            IN VARCHAR2
21990 --Parent Reversal Identifier
21991  , p_source_46            IN NUMBER
21992 --Invoice Distribution Statistical Amount
21993  , p_source_47            IN NUMBER
21994 --Invoice Distribution Tax Line Identifier
21995  , p_source_48            IN NUMBER
21996 --Invoice Distribution Tax Distribution Identifier from Tax
21997  , p_source_49            IN NUMBER
21998 --Invoice Distribution Summary Tax Line Identifier
21999  , p_source_50            IN NUMBER
22000 --Payables Upgrade Credit Encumbrance Type Identifier
22001  , p_source_51            IN NUMBER
22002 --Payables Upgrade Debit Encumbrance Type Identifier
22003  , p_source_52            IN NUMBER
22004 --Invoice Distribution Amount
22005  , p_source_55            IN NUMBER
22006 --Invoice Distribution Ledger Amount
22007  , p_source_56            IN NUMBER
22008 )
22009 IS
22010 
22011 l_component_type              VARCHAR2(80);
22012 l_component_code              VARCHAR2(30);
22013 l_component_type_code         VARCHAR2(1);
22014 l_component_appl_id           INTEGER;
22015 l_amb_context_code            VARCHAR2(30);
22016 l_entity_code                 VARCHAR2(30);
22017 l_event_class_code            VARCHAR2(30);
22018 l_ae_header_id                NUMBER;
22019 l_event_type_code             VARCHAR2(30);
22020 l_line_definition_code        VARCHAR2(30);
22021 l_line_definition_owner_code  VARCHAR2(1);
22022 --
22023 -- adr variables
22024 l_segment                     VARCHAR2(30);
22025 l_ccid                        NUMBER;
22026 l_adr_transaction_coa_id      NUMBER;
22027 l_adr_accounting_coa_id       NUMBER;
22028 l_adr_flexfield_segment_code  VARCHAR2(30);
22029 l_adr_flex_value_set_id       NUMBER;
22030 l_adr_value_type_code         VARCHAR2(30);
22031 l_adr_value_combination_id    NUMBER;
22032 l_adr_value_segment_code      VARCHAR2(30);
22033 
22034 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22038 
22035 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22036 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22037 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22039 -- 4262811 Variables ------------------------------------------------------------------------------------------
22040 l_entered_amt_idx             NUMBER;
22041 l_accted_amt_idx              NUMBER;
22042 l_acc_rev_flag                VARCHAR2(1);
22043 l_accrual_line_num            NUMBER;
22044 l_tmp_amt                     NUMBER;
22045 l_acc_rev_natural_side_code   VARCHAR2(1);
22046 
22047 l_num_entries                 NUMBER;
22048 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22049 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22050 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22051 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22052 l_recog_line_1                NUMBER;
22053 l_recog_line_2                NUMBER;
22054 
22055 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22056 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22057 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22058 
22059 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22060 
22061 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22062 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22063 
22064 ---------------------------------------------------------------------------------------------------------------
22065 
22066 
22067 --
22068 -- bulk performance
22069 --
22070 l_balance_type_code           VARCHAR2(1);
22071 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22072 l_log_module                  VARCHAR2(240);
22073 
22074 --
22075 -- Upgrade strategy
22076 --
22077 l_actual_upg_option           VARCHAR2(1);
22078 l_enc_upg_option           VARCHAR2(1);
22079 
22080 --
22081 BEGIN
22082 --
22083 IF g_log_enabled THEN
22084       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
22085 END IF;
22086 --
22087 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22088 
22089       trace
22090          (p_msg      => 'BEGIN of AcctLineType_42'
22091          ,p_level    => C_LEVEL_PROCEDURE
22092          ,p_module   => l_log_module);
22093 
22094 END IF;
22095 --
22096 l_component_type             := 'AMB_JLT';
22097 l_component_code             := 'FV_AP_INV_ DWD_ANPT_PYA_DR';
22098 l_component_type_code        := 'S';
22099 l_component_appl_id          :=  200;
22100 l_amb_context_code           := 'DEFAULT';
22101 l_entity_code                := 'AP_INVOICES';
22102 l_event_class_code           := 'INVOICES';
22103 l_event_type_code            := 'INVOICES_ALL';
22104 l_line_definition_owner_code := 'S';
22105 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
22106 --
22107 l_balance_type_code          := 'A';
22108 l_segment                     := NULL;
22109 l_ccid                        := NULL;
22110 l_adr_transaction_coa_id      := NULL;
22111 l_adr_accounting_coa_id       := NULL;
22112 l_adr_flexfield_segment_code  := NULL;
22113 l_adr_flex_value_set_id       := NULL;
22114 l_adr_value_type_code         := NULL;
22115 l_adr_value_combination_id    := NULL;
22116 l_adr_value_segment_code      := NULL;
22117 
22118 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22119 l_bflow_class_code           := '';    -- 4219869 Business Flow
22120 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22121 l_budgetary_control_flag     := 'Y';
22122 
22123 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22124 l_bflow_applied_to_amt       := NULL; -- 5132302
22125 l_entered_amt_idx            := NULL;          -- 4262811
22126 l_accted_amt_idx             := NULL;          -- 4262811
22127 l_acc_rev_flag               := NULL;          -- 4262811
22128 l_accrual_line_num           := NULL;          -- 4262811
22129 l_tmp_amt                    := NULL;          -- 4262811
22130 --
22131  
22132 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22133     l_balance_type_code <> 'B' THEN
22134 IF ((NVL(p_source_9,'
22135 ') =  'Y' AND 
22136 p_source_12 IS NOT NULL AND 
22137 (NVL(p_source_13,'
22138 ') =  'STANDARD' OR 
22139 NVL(p_source_13,'
22140 ') =  'MIXED' OR 
22141 NVL(p_source_13,'
22142 ') =  'INTEREST' OR 
22143 NVL(p_source_13,'
22144 ') =  'EXPENSE REPORT') AND 
22145 (NVL(p_source_8,'
22146 ') =  'ITEM' OR 
22147 NVL(p_source_8,'
22148 ') =  'ACCRUAL' OR 
22149 NVL(p_source_8,'
22150 ') =  'FREIGHT' OR 
22151 NVL(p_source_8,'
22152 ') =  'MISCELLANEOUS' OR 
22153 NVL(p_source_8,'
22154 ') =  'IPV')
22155 ) OR (NVL(p_source_9,'
22156 ') =  'Y' AND 
22157 p_source_12 IS NOT NULL AND 
22158 NVL(p_source_8,'
22159 ') =  'IPV')
22160 ) AND NVL(p_source_14,'
22161 ') =  'Downward' AND 
22162 NVL(p_source_11,'
22163 ') <>  'Y'
22164  THEN 
22165 
22166    --
22167    XLA_AE_LINES_PKG.SetNewLine;
22168 
22169    p_balance_type_code          := l_balance_type_code;
22170    -- set the flag so later we will know whether the gain loss line needs to be created
22171    
22175 
22172    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22173      p_actual_flag :='A';
22174    END IF;
22176    --
22177    -- bulk performance
22178    --
22179    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22180                                       p_header_num   => 0); -- 4262811
22181    --
22182    -- set accounting line options
22183    --
22184    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22185            p_natural_side_code          => 'C'
22186          , p_gain_or_loss_flag          => 'N'
22187          , p_gl_transfer_mode_code      => 'S'
22188          , p_acct_entry_type_code       => 'A'
22189          , p_switch_side_flag           => 'Y'
22190          , p_merge_duplicate_code       => 'N'
22191          );
22192    --
22193    l_acc_rev_natural_side_code := 'D';  -- 4262811
22194    -- 
22195    --
22196    -- set accounting line type info
22197    --
22198    xla_ae_lines_pkg.SetAcctLineType
22199       (p_component_type             => l_component_type
22200       ,p_event_type_code            => l_event_type_code
22201       ,p_line_definition_owner_code => l_line_definition_owner_code
22202       ,p_line_definition_code       => l_line_definition_code
22203       ,p_accounting_line_code       => l_component_code
22204       ,p_accounting_line_type_code  => l_component_type_code
22205       ,p_accounting_line_appl_id    => l_component_appl_id
22206       ,p_amb_context_code           => l_amb_context_code
22207       ,p_entity_code                => l_entity_code
22208       ,p_event_class_code           => l_event_class_code);
22209    --
22210    -- set accounting class
22211    --
22212    xla_ae_lines_pkg.SetAcctClass(
22213            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
22214          , p_ae_header_id           => l_ae_header_id
22215          );
22216 
22217    --
22218    -- set rounding class
22219    --
22220    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22221                       'ACCOUNTSPAYABLE';
22222 
22223    --
22224    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22225    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22226    --
22227    -- bulk performance
22228    --
22229    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22230 
22231    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22232       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22233 
22234    -- 4955764
22235    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22237 
22238    -- 4458381 Public Sector Enh
22239    
22240    --
22241    -- set accounting attributes for the line type
22242    --
22243    l_entered_amt_idx := 24;
22244    l_accted_amt_idx  := 29;
22245    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
22246    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22247    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
22248    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
22249    l_rec_acct_attrs.array_num_value(2)  := 
22250 xla_ae_sources_pkg.GetSystemSourceNum(
22251    p_source_code           => 'XLA_EVENT_APPL_ID'
22252  , p_source_type_code      => 'Y'
22253  , p_source_application_id =>  602
22254 );
22255    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
22256    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
22257    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
22258    l_rec_acct_attrs.array_char_value(4)  := 
22259 xla_ae_sources_pkg.GetSystemSourceChar(
22260    p_source_code           => 'XLA_ENTITY_CODE'
22261  , p_source_type_code      => 'Y'
22262  , p_source_application_id =>  602
22263 );
22264    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
22265    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
22266    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
22267    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
22268    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
22269    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
22270    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
22271    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
22272    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22273    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
22274    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
22275    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
22276    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
22277    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
22278    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22279    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
22280    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
22281    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
22282    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
22283    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
22284    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
22285    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
22289    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
22286    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
22287    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
22288    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
22290    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
22291    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
22292    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
22293    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
22294    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
22295    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
22296    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
22297    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
22298    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
22299    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
22300    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
22301    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
22302    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
22303    l_rec_acct_attrs.array_num_value(24)  := p_source_55;
22304    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
22305    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
22306    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
22307    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
22308    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
22309    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
22310    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
22311    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
22312    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
22313    l_rec_acct_attrs.array_num_value(29)  := p_source_56;
22314    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
22315    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
22316    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
22317    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
22318    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
22319    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
22320    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
22321    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
22322    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
22323    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
22324    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
22325    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
22326    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
22327    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
22328    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
22329    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
22330    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
22331    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
22332    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
22333    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
22334    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
22335    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
22336    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
22337    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
22338    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
22339    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
22340    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
22341    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
22342    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
22343    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
22344 
22345    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22346    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22347 
22348    ---------------------------------------------------------------------------------------------------------------
22349    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22350    ---------------------------------------------------------------------------------------------------------------
22351    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22352 
22353    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22354    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22355 
22356    IF xla_accounting_cache_pkg.GetValueChar
22357          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22358          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22359    AND l_bflow_method_code = 'PRIOR_ENTRY'
22360 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22361    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22362          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22363        )
22364    THEN
22365          xla_ae_lines_pkg.BflowUpgEntry
22366            (p_business_method_code    => l_bflow_method_code
22367            ,p_business_class_code     => l_bflow_class_code
22368            ,p_balance_type            => l_balance_type_code);
22369    ELSE
22370       NULL;
22374    --
22371 -- No business flow processing for business flow method of NONE.
22372    END IF;
22373 
22375    -- call analytical criteria
22376    --
22377    
22378    --
22379    -- call description
22380    --
22381    
22382 xla_ae_lines_pkg.SetLineDescription(
22383    p_ae_header_id => l_ae_header_id
22384   ,p_description  => Description_2 (
22385      p_application_id         => p_application_id
22386    , p_ae_header_id           => l_ae_header_id 
22387 , p_source_1 => p_source_1
22388    )
22389 );
22390 
22391 
22392    --
22393    -- call ADRs
22394    -- Bug 4922099
22395    --
22396    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22397         (NVL(l_actual_upg_option, 'N') = 'O') OR
22398         (NVL(l_enc_upg_option, 'N') = 'O')
22399       )
22400    THEN
22401    NULL;
22402    --
22403    --
22404    
22405   l_ccid := AcctDerRule_3(
22406            p_application_id           => p_application_id
22407          , p_ae_header_id             => l_ae_header_id 
22408 , p_source_2 => p_source_2
22409          , x_transaction_coa_id       => l_adr_transaction_coa_id
22410          , x_accounting_coa_id        => l_adr_accounting_coa_id
22411          , x_value_type_code          => l_adr_value_type_code
22412          , p_side                     => 'NA'
22413    );
22414 
22415    xla_ae_lines_pkg.set_ccid(
22416     p_code_combination_id          => l_ccid
22417   , p_value_type_code              => l_adr_value_type_code
22418   , p_transaction_coa_id           => l_adr_transaction_coa_id
22419   , p_accounting_coa_id            => l_adr_accounting_coa_id
22420   , p_adr_code                     => 'AP_INVOICE_DIST'
22421   , p_adr_type_code                => 'S'
22422   , p_component_type               => l_component_type
22423   , p_component_code               => l_component_code
22424   , p_component_type_code          => l_component_type_code
22425   , p_component_appl_id            => l_component_appl_id
22426   , p_amb_context_code             => l_amb_context_code
22427   , p_side                         => 'NA'
22428   );
22429 
22430 
22431    l_segment := AcctDerRule_13(
22432            p_application_id           => p_application_id
22433          , p_ae_header_id             => l_ae_header_id 
22434          , x_transaction_coa_id       => l_adr_transaction_coa_id
22435          , x_accounting_coa_id        => l_adr_accounting_coa_id
22436          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
22437          , x_flex_value_set_id        => l_adr_flex_value_set_id
22438          , x_value_type_code          => l_adr_value_type_code
22439          , x_value_combination_id     => l_adr_value_combination_id
22440          , x_value_segment_code       => l_adr_value_segment_code
22441          , p_side                     => 'NA'
22442          , p_override_seg_flag        => 'Y'
22443    );
22444 
22445    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
22446 
22447       xla_ae_lines_pkg.set_segment(
22448           p_to_segment_code         => 'GL_ACCOUNT'
22449         , p_segment_value           => l_segment
22450         , p_from_segment_code       => l_adr_value_segment_code
22451         , p_from_combination_id     => l_adr_value_combination_id
22452         , p_value_type_code         => l_adr_value_type_code
22453         , p_transaction_coa_id      => l_adr_transaction_coa_id
22454         , p_accounting_coa_id       => l_adr_accounting_coa_id
22455         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
22456         , p_flex_value_set_id       => l_adr_flex_value_set_id
22457         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
22458         , p_adr_type_code           => 'S'
22459         , p_component_type          => l_component_type
22460         , p_component_code          => l_component_code
22461         , p_component_type_code     => l_component_type_code
22462         , p_component_appl_id       => l_component_appl_id
22463         , p_amb_context_code        => l_amb_context_code
22464         , p_entity_code             => 'AP_INVOICES'
22465         , p_event_class_code        => 'INVOICES'
22466         , p_side                    => 'NA'
22467         );
22468 
22469   END IF;
22470 
22471    --
22472    --
22473    END IF;
22474    --
22475    -- Bug 4922099
22476    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22477           (NVL(l_enc_upg_option, 'N') = 'O')
22478         ) AND
22479         (l_bflow_method_code = 'PRIOR_ENTRY')
22480       )
22481    THEN
22482       IF
22483       --
22484       1 = 2
22485       --
22486       THEN
22487       xla_accounting_err_pkg.build_message
22488                                     (p_appli_s_name            => 'XLA'
22489                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22490                                     ,p_token_1                 => 'LINE_NUMBER'
22491                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22492                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22493                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22494                                                                              l_component_type
22495                                                                             ,l_component_code
22499                                                                             ,l_entity_code
22496                                                                             ,l_component_type_code
22497                                                                             ,l_component_appl_id
22498                                                                             ,l_amb_context_code
22500                                                                             ,l_event_class_code
22501                                                                            )
22502                                     ,p_token_3                 => 'OWNER'
22503                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22504                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22505                                                                           ,p_lookup_code    => l_component_type_code
22506                                                                          )
22507                                     ,p_token_4                 => 'PRODUCT_NAME'
22508                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22509                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22510                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22511                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22512                                     ,p_ae_header_id            =>  NULL
22513                                        );
22514 
22515         IF (C_LEVEL_ERROR>= g_log_level) THEN
22516                  trace
22517                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22518                       ,p_level    => C_LEVEL_ERROR
22519                       ,p_module   => l_log_module);
22520         END IF;
22521       END IF;
22522    END IF;
22523    --
22524    --
22525    ------------------------------------------------------------------------------------------------
22526    -- 4219869 Business Flow
22527    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22528    -- Prior Entry.  Currently, the following code is always generated.
22529    ------------------------------------------------------------------------------------------------
22530    XLA_AE_LINES_PKG.ValidateCurrentLine;
22531 
22532    ------------------------------------------------------------------------------------
22533    -- 4219869 Business Flow
22534    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22535    ------------------------------------------------------------------------------------
22536    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22537 
22538    ----------------------------------------------------------------------------------
22539    -- 4219869 Business Flow
22540    -- Update journal entry status -- Need to generate this within IF <condition>
22541    ----------------------------------------------------------------------------------
22542    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22543          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22544          ,p_balance_type_code => l_balance_type_code
22545          );
22546 
22547    -------------------------------------------------------------------------------------------
22548    -- 4262811 - Generate the Accrual Reversal lines
22549    -------------------------------------------------------------------------------------------
22550    BEGIN
22551       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22552                               (g_array_event(p_event_id).array_value_num('header_index'));
22553       IF l_acc_rev_flag IS NULL THEN
22554          l_acc_rev_flag := 'N';
22555       END IF;
22556    EXCEPTION
22557       WHEN OTHERS THEN
22558          l_acc_rev_flag := 'N';
22559    END;
22560    --
22561    IF (l_acc_rev_flag = 'Y') THEN
22562 
22563        -- 4645092  ------------------------------------------------------------------------------
22564        -- To allow MPA report to determine if it should generate report process
22565        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22566        ------------------------------------------------------------------------------------------
22567 
22568        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22569        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22570    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22571    -- call ADRs
22572    -- Bug 4922099
22573    --
22574    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22575         (NVL(l_actual_upg_option, 'N') = 'O') OR
22576         (NVL(l_enc_upg_option, 'N') = 'O')
22577       )
22578    THEN
22579    NULL;
22580    --
22581    --
22582    
22583   l_ccid := AcctDerRule_3(
22584            p_application_id           => p_application_id
22585          , p_ae_header_id             => l_ae_header_id 
22586 , p_source_2 => p_source_2
22587          , x_transaction_coa_id       => l_adr_transaction_coa_id
22588          , x_accounting_coa_id        => l_adr_accounting_coa_id
22589          , x_value_type_code          => l_adr_value_type_code
22590          , p_side                     => 'NA'
22591    );
22592 
22593    xla_ae_lines_pkg.set_ccid(
22594     p_code_combination_id          => l_ccid
22595   , p_value_type_code              => l_adr_value_type_code
22599   , p_adr_type_code                => 'S'
22596   , p_transaction_coa_id           => l_adr_transaction_coa_id
22597   , p_accounting_coa_id            => l_adr_accounting_coa_id
22598   , p_adr_code                     => 'AP_INVOICE_DIST'
22600   , p_component_type               => l_component_type
22601   , p_component_code               => l_component_code
22602   , p_component_type_code          => l_component_type_code
22603   , p_component_appl_id            => l_component_appl_id
22604   , p_amb_context_code             => l_amb_context_code
22605   , p_side                         => 'NA'
22606   );
22607 
22608 
22609    l_segment := AcctDerRule_13(
22610            p_application_id           => p_application_id
22611          , p_ae_header_id             => l_ae_header_id 
22612          , x_transaction_coa_id       => l_adr_transaction_coa_id
22613          , x_accounting_coa_id        => l_adr_accounting_coa_id
22614          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
22615          , x_flex_value_set_id        => l_adr_flex_value_set_id
22616          , x_value_type_code          => l_adr_value_type_code
22617          , x_value_combination_id     => l_adr_value_combination_id
22618          , x_value_segment_code       => l_adr_value_segment_code
22619          , p_side                     => 'NA'
22620          , p_override_seg_flag        => 'Y'
22621    );
22622 
22623    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
22624 
22625       xla_ae_lines_pkg.set_segment(
22626           p_to_segment_code         => 'GL_ACCOUNT'
22627         , p_segment_value           => l_segment
22628         , p_from_segment_code       => l_adr_value_segment_code
22629         , p_from_combination_id     => l_adr_value_combination_id
22630         , p_value_type_code         => l_adr_value_type_code
22631         , p_transaction_coa_id      => l_adr_transaction_coa_id
22632         , p_accounting_coa_id       => l_adr_accounting_coa_id
22633         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
22634         , p_flex_value_set_id       => l_adr_flex_value_set_id
22635         , p_adr_code                => 'FV_497101_DWD_PYA_DR'
22636         , p_adr_type_code           => 'S'
22637         , p_component_type          => l_component_type
22638         , p_component_code          => l_component_code
22639         , p_component_type_code     => l_component_type_code
22640         , p_component_appl_id       => l_component_appl_id
22641         , p_amb_context_code        => l_amb_context_code
22642         , p_entity_code             => 'AP_INVOICES'
22643         , p_event_class_code        => 'INVOICES'
22644         , p_side                    => 'NA'
22645         );
22646 
22647   END IF;
22648 
22649    --
22650    --
22651    END IF;
22652 
22653        --
22654        -- Update the line information that should be overwritten
22655        --
22656        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22657                                          p_header_num   => 1);
22658        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22659 
22660        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22661 
22662        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22663           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22664        END IF;
22665 
22666       --
22667       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22668       --
22669       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22670           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22671       ELSE
22672           ---------------------------------------------------------------------------------------------------
22673           -- 4262811a Switch Sign
22674           ---------------------------------------------------------------------------------------------------
22675           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22676           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22677                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22678           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22679                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22680           -- 5132302
22681           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22682                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22683 
22684       END IF;
22685 
22686       -- 4955764
22687       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22689 
22690 
22691       XLA_AE_LINES_PKG.ValidateCurrentLine;
22692       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22693 
22694       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22695                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22696                ,p_balance_type_code => l_balance_type_code);
22697 
22698    END IF;
22699 
22700    -----------------------------------------------------------------------------------------
22704 
22701    -- 4262811 Multiperiod Accounting
22702    -----------------------------------------------------------------------------------------
22703      -- No MPA option is assigned.
22705 
22706 END IF;
22707 END IF;
22708 --
22709 
22710 --
22711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22712    trace
22713       (p_msg      => 'END of AcctLineType_42'
22714       ,p_level    => C_LEVEL_PROCEDURE
22715       ,p_module   => l_log_module);
22716 END IF;
22717 --
22718 EXCEPTION
22719   WHEN xla_exceptions_pkg.application_exception THEN
22720       RAISE;
22721   WHEN OTHERS THEN
22722        xla_exceptions_pkg.raise_message
22723            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_42');
22724 END AcctLineType_42;
22725 --
22726 
22727 ---------------------------------------
22728 --
22729 -- PRIVATE FUNCTION
22730 --         AcctLineType_43
22731 --
22732 ---------------------------------------
22733 PROCEDURE AcctLineType_43 (
22734   p_application_id        IN NUMBER
22735  ,p_event_id              IN NUMBER
22736  ,p_calculate_acctd_flag  IN VARCHAR2
22737  ,p_calculate_g_l_flag    IN VARCHAR2
22738  ,p_actual_flag           IN OUT VARCHAR2
22739  ,p_balance_type_code     OUT VARCHAR2
22740  ,p_gain_or_loss_ref      OUT VARCHAR2
22741  
22742 --Invoice Distribution Description
22743  , p_source_1            IN VARCHAR2
22744 --Invoice Distribution Account
22745  , p_source_2            IN NUMBER
22746 --Federal Anticipation
22747  , p_source_3            IN VARCHAR2
22748 --Invoice Distribution Type
22749  , p_source_8            IN VARCHAR2
22750  , p_source_8_meaning    IN VARCHAR2
22751 --Federal Prior Year Flag
22752  , p_source_9            IN VARCHAR2
22753 --Accrue on Receipt Option
22754  , p_source_11            IN VARCHAR2
22755  , p_source_11_meaning    IN VARCHAR2
22756 --Purchase Order Distribution Identifier
22757  , p_source_12            IN NUMBER
22758 --Invoice Type
22759  , p_source_13            IN VARCHAR2
22760  , p_source_13_meaning    IN VARCHAR2
22761 --Federal Adjustment Type
22762  , p_source_14            IN VARCHAR2
22763 --Accounting Reversal Indicator
22764  , p_source_15            IN VARCHAR2
22765 --Distribution Link Type
22766  , p_source_17            IN VARCHAR2
22767 --Allocation to Main Distribution Identifier
22768  , p_source_19            IN NUMBER
22769 --Invoice Identifier
22770  , p_source_20            IN NUMBER
22771 --Business Flow Accounts Payable Application Identifier
22772  , p_source_21            IN NUMBER
22773 --Business Flow Invoice Distribution Type
22774  , p_source_22            IN VARCHAR2
22775 --Business Flow Invoice Entity Code
22776  , p_source_23            IN VARCHAR2
22777 --Business Flow Invoice Distribution Identifier
22778  , p_source_24            IN NUMBER
22779 --Business Flow Invoice Identifier
22780  , p_source_25            IN NUMBER
22781 --Invoice Distribution Identifier
22782  , p_source_26            IN NUMBER
22783 --Payables Encumbrance Upgrade Credit Account
22784  , p_source_27            IN NUMBER
22785 --Payables Encumbrance Upgrade Credit Amount
22786  , p_source_28            IN NUMBER
22787 --Invoice Currency Code
22788  , p_source_29            IN VARCHAR2
22789 --Payables Encumbrance Upgrade Credit Base Amount
22790  , p_source_30            IN NUMBER
22791 --Payables Encumbrance Upgrade Debit Account
22792  , p_source_31            IN NUMBER
22793 --Payables Encumbrance Upgrade Debit Amount
22794  , p_source_32            IN NUMBER
22795 --Payables Encumbrance Upgrade Debit Base Amount
22796  , p_source_33            IN NUMBER
22797 --Payables Encumbrance Upgrade Option
22798  , p_source_34            IN VARCHAR2
22799 --Invoice Exchange Date
22800  , p_source_36            IN DATE
22801 --Invoice Exchange Rate
22802  , p_source_37            IN NUMBER
22803 --Invoice Exchange Rate Type
22804  , p_source_38            IN VARCHAR2
22805 --Deferred Accounting End Date
22806  , p_source_39            IN DATE
22807 --Deferred Accounting Option
22808  , p_source_40            IN VARCHAR2
22809 --Deferred Accounting Start Date
22810  , p_source_41            IN DATE
22811 --Override Accounted Amount Indicator
22812  , p_source_42            IN VARCHAR2
22813  , p_source_42_meaning    IN VARCHAR2
22814 --Invoice Supplier Identifier
22815  , p_source_43            IN NUMBER
22816 --Invoice Supplier Site Identifier
22817  , p_source_44            IN NUMBER
22818 --Third Party Type
22819  , p_source_45            IN VARCHAR2
22820 --Parent Reversal Identifier
22821  , p_source_46            IN NUMBER
22822 --Invoice Distribution Statistical Amount
22823  , p_source_47            IN NUMBER
22824 --Invoice Distribution Tax Line Identifier
22825  , p_source_48            IN NUMBER
22826 --Invoice Distribution Tax Distribution Identifier from Tax
22827  , p_source_49            IN NUMBER
22828 --Invoice Distribution Summary Tax Line Identifier
22829  , p_source_50            IN NUMBER
22830 --Payables Upgrade Credit Encumbrance Type Identifier
22831  , p_source_51            IN NUMBER
22832 --Payables Upgrade Debit Encumbrance Type Identifier
22833  , p_source_52            IN NUMBER
22834 --Federal Unanticipated Amt
22835  , p_source_54            IN NUMBER
22836 --Invoice Distribution Amount
22837  , p_source_55            IN NUMBER
22838 )
22839 IS
22840 
22844 l_component_appl_id           INTEGER;
22841 l_component_type              VARCHAR2(80);
22842 l_component_code              VARCHAR2(30);
22843 l_component_type_code         VARCHAR2(1);
22845 l_amb_context_code            VARCHAR2(30);
22846 l_entity_code                 VARCHAR2(30);
22847 l_event_class_code            VARCHAR2(30);
22848 l_ae_header_id                NUMBER;
22849 l_event_type_code             VARCHAR2(30);
22850 l_line_definition_code        VARCHAR2(30);
22851 l_line_definition_owner_code  VARCHAR2(1);
22852 --
22853 -- adr variables
22854 l_segment                     VARCHAR2(30);
22855 l_ccid                        NUMBER;
22856 l_adr_transaction_coa_id      NUMBER;
22857 l_adr_accounting_coa_id       NUMBER;
22858 l_adr_flexfield_segment_code  VARCHAR2(30);
22859 l_adr_flex_value_set_id       NUMBER;
22860 l_adr_value_type_code         VARCHAR2(30);
22861 l_adr_value_combination_id    NUMBER;
22862 l_adr_value_segment_code      VARCHAR2(30);
22863 
22864 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22865 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22866 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22867 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22868 
22869 -- 4262811 Variables ------------------------------------------------------------------------------------------
22870 l_entered_amt_idx             NUMBER;
22871 l_accted_amt_idx              NUMBER;
22872 l_acc_rev_flag                VARCHAR2(1);
22873 l_accrual_line_num            NUMBER;
22874 l_tmp_amt                     NUMBER;
22875 l_acc_rev_natural_side_code   VARCHAR2(1);
22876 
22877 l_num_entries                 NUMBER;
22878 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22879 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22880 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22881 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22882 l_recog_line_1                NUMBER;
22883 l_recog_line_2                NUMBER;
22884 
22885 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22886 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22887 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22888 
22889 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22890 
22891 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22892 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22893 
22894 ---------------------------------------------------------------------------------------------------------------
22895 
22896 
22897 --
22898 -- bulk performance
22899 --
22900 l_balance_type_code           VARCHAR2(1);
22901 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22902 l_log_module                  VARCHAR2(240);
22903 
22904 --
22905 -- Upgrade strategy
22906 --
22907 l_actual_upg_option           VARCHAR2(1);
22908 l_enc_upg_option           VARCHAR2(1);
22909 
22910 --
22911 BEGIN
22912 --
22913 IF g_log_enabled THEN
22914       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
22915 END IF;
22916 --
22917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22918 
22919       trace
22920          (p_msg      => 'BEGIN of AcctLineType_43'
22921          ,p_level    => C_LEVEL_PROCEDURE
22922          ,p_module   => l_log_module);
22923 
22924 END IF;
22925 --
22926 l_component_type             := 'AMB_JLT';
22927 l_component_code             := 'FV_AP_INV_ DWD_UNANPT_PYA_CR';
22928 l_component_type_code        := 'S';
22929 l_component_appl_id          :=  200;
22930 l_amb_context_code           := 'DEFAULT';
22931 l_entity_code                := 'AP_INVOICES';
22932 l_event_class_code           := 'INVOICES';
22933 l_event_type_code            := 'INVOICES_ALL';
22934 l_line_definition_owner_code := 'S';
22935 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
22936 --
22937 l_balance_type_code          := 'A';
22938 l_segment                     := NULL;
22939 l_ccid                        := NULL;
22940 l_adr_transaction_coa_id      := NULL;
22941 l_adr_accounting_coa_id       := NULL;
22942 l_adr_flexfield_segment_code  := NULL;
22943 l_adr_flex_value_set_id       := NULL;
22944 l_adr_value_type_code         := NULL;
22945 l_adr_value_combination_id    := NULL;
22946 l_adr_value_segment_code      := NULL;
22947 
22948 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22949 l_bflow_class_code           := '';    -- 4219869 Business Flow
22950 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22951 l_budgetary_control_flag     := 'Y';
22952 
22953 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22954 l_bflow_applied_to_amt       := NULL; -- 5132302
22955 l_entered_amt_idx            := NULL;          -- 4262811
22956 l_accted_amt_idx             := NULL;          -- 4262811
22957 l_acc_rev_flag               := NULL;          -- 4262811
22958 l_accrual_line_num           := NULL;          -- 4262811
22959 l_tmp_amt                    := NULL;          -- 4262811
22960 --
22961  
22962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22963     l_balance_type_code <> 'B' THEN
22964 IF ((p_source_12 IS NULL AND 
22965 (NVL(p_source_13,'
22966 ') =  'STANDARD' OR 
22967 NVL(p_source_13,'
22968 ') =  'MIXED' OR 
22972 ') =  'INTEREST') AND 
22969 NVL(p_source_13,'
22970 ') =  'EXPENSE REPORT' OR 
22971 NVL(p_source_13,'
22973 (NVL(p_source_8,'
22974 ') =  'ITEM' OR 
22975 NVL(p_source_8,'
22976 ') =  'ACCRUAL' OR 
22977 NVL(p_source_8,'
22978 ') =  'MISCELLANEOUS' OR 
22979 NVL(p_source_8,'
22980 ') =  'FREIGHT' OR 
22981 NVL(p_source_8,'
22982 ') =  'IPV')
22983 ) OR (p_source_12 IS NOT NULL AND 
22984 NVL(p_source_8,'
22985 ') =  'IPV')
22986 ) AND NVL(p_source_9,'
22987 ') =  'Y' AND 
22988 NVL(p_source_14,'
22989 ') =  'Downward' AND 
22990 (NVL(p_source_3,'
22991 ') =  'UnAnticipated' OR 
22992 NVL(p_source_3,'
22993 ') =  'Partial') AND 
22994 NVL(p_source_11,'
22995 ') <>  'Y'
22996  THEN 
22997 
22998    --
22999    XLA_AE_LINES_PKG.SetNewLine;
23000 
23001    p_balance_type_code          := l_balance_type_code;
23002    -- set the flag so later we will know whether the gain loss line needs to be created
23003    
23004    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23005      p_actual_flag :='A';
23006    END IF;
23007 
23008    --
23009    -- bulk performance
23010    --
23011    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23012                                       p_header_num   => 0); -- 4262811
23013    --
23014    -- set accounting line options
23015    --
23016    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23017            p_natural_side_code          => 'C'
23018          , p_gain_or_loss_flag          => 'N'
23019          , p_gl_transfer_mode_code      => 'S'
23020          , p_acct_entry_type_code       => 'A'
23021          , p_switch_side_flag           => 'N'
23022          , p_merge_duplicate_code       => 'N'
23023          );
23024    --
23025    l_acc_rev_natural_side_code := 'D';  -- 4262811
23026    -- 
23027    --
23028    -- set accounting line type info
23029    --
23030    xla_ae_lines_pkg.SetAcctLineType
23031       (p_component_type             => l_component_type
23032       ,p_event_type_code            => l_event_type_code
23033       ,p_line_definition_owner_code => l_line_definition_owner_code
23034       ,p_line_definition_code       => l_line_definition_code
23035       ,p_accounting_line_code       => l_component_code
23036       ,p_accounting_line_type_code  => l_component_type_code
23037       ,p_accounting_line_appl_id    => l_component_appl_id
23038       ,p_amb_context_code           => l_amb_context_code
23039       ,p_entity_code                => l_entity_code
23040       ,p_event_class_code           => l_event_class_code);
23041    --
23042    -- set accounting class
23043    --
23044    xla_ae_lines_pkg.SetAcctClass(
23045            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
23046          , p_ae_header_id           => l_ae_header_id
23047          );
23048 
23049    --
23050    -- set rounding class
23051    --
23052    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23053                       'ACCOUNTSPAYABLE';
23054 
23055    --
23056    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23057    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23058    --
23059    -- bulk performance
23060    --
23061    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23062 
23063    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23064       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23065 
23066    -- 4955764
23067    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23069 
23070    -- 4458381 Public Sector Enh
23071    
23072    --
23073    -- set accounting attributes for the line type
23074    --
23075    l_entered_amt_idx := 24;
23076    l_accted_amt_idx  := 29;
23077    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
23078    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23079    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
23080    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23081    l_rec_acct_attrs.array_num_value(2)  := 
23082 xla_ae_sources_pkg.GetSystemSourceNum(
23083    p_source_code           => 'XLA_EVENT_APPL_ID'
23084  , p_source_type_code      => 'Y'
23085  , p_source_application_id =>  602
23086 );
23087    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23088    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
23089    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23090    l_rec_acct_attrs.array_char_value(4)  := 
23091 xla_ae_sources_pkg.GetSystemSourceChar(
23092    p_source_code           => 'XLA_ENTITY_CODE'
23093  , p_source_type_code      => 'Y'
23094  , p_source_application_id =>  602
23095 );
23096    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23097    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
23098    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23099    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
23100    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
23104    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23101    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
23102    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
23103    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
23105    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
23106    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
23107    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
23108    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
23109    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
23110    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23111    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
23112    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
23113    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
23114    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
23115    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
23116    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
23117    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
23118    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
23119    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
23120    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
23121    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
23122    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
23123    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
23124    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
23125    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
23126    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
23127    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
23128    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
23129    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
23130    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
23131    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
23132    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
23133    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
23134    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
23135    l_rec_acct_attrs.array_num_value(24)  := p_source_54;
23136    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
23137    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
23138    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
23139    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
23140    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
23141    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
23142    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
23143    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
23144    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
23145    l_rec_acct_attrs.array_num_value(29)  := p_source_54;
23146    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
23147    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
23148    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
23149    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
23150    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
23151    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
23152    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
23153    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
23154    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
23155    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
23156    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
23157    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
23158    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
23159    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
23160    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
23161    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
23162    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
23163    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
23164    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
23165    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
23166    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
23167    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
23168    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
23169    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
23170    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
23171    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
23172    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
23173    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
23174    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
23175    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
23176 
23177    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23178    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23179 
23180    ---------------------------------------------------------------------------------------------------------------
23181    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23182    ---------------------------------------------------------------------------------------------------------------
23186    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23183    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23184 
23185    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23187 
23188    IF xla_accounting_cache_pkg.GetValueChar
23189          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23190          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23191    AND l_bflow_method_code = 'PRIOR_ENTRY'
23192 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23193    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23194          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23195        )
23196    THEN
23197          xla_ae_lines_pkg.BflowUpgEntry
23198            (p_business_method_code    => l_bflow_method_code
23199            ,p_business_class_code     => l_bflow_class_code
23200            ,p_balance_type            => l_balance_type_code);
23201    ELSE
23202       NULL;
23203 -- No business flow processing for business flow method of NONE.
23204    END IF;
23205 
23206    --
23207    -- call analytical criteria
23208    --
23209    
23210    --
23211    -- call description
23212    --
23213    
23214 xla_ae_lines_pkg.SetLineDescription(
23215    p_ae_header_id => l_ae_header_id
23216   ,p_description  => Description_2 (
23217      p_application_id         => p_application_id
23218    , p_ae_header_id           => l_ae_header_id 
23219 , p_source_1 => p_source_1
23220    )
23221 );
23222 
23223 
23224    --
23225    -- call ADRs
23226    -- Bug 4922099
23227    --
23228    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23229         (NVL(l_actual_upg_option, 'N') = 'O') OR
23230         (NVL(l_enc_upg_option, 'N') = 'O')
23231       )
23232    THEN
23233    NULL;
23234    --
23235    --
23236    
23237   l_ccid := AcctDerRule_3(
23238            p_application_id           => p_application_id
23239          , p_ae_header_id             => l_ae_header_id 
23240 , p_source_2 => p_source_2
23241          , x_transaction_coa_id       => l_adr_transaction_coa_id
23242          , x_accounting_coa_id        => l_adr_accounting_coa_id
23243          , x_value_type_code          => l_adr_value_type_code
23244          , p_side                     => 'NA'
23245    );
23246 
23247    xla_ae_lines_pkg.set_ccid(
23248     p_code_combination_id          => l_ccid
23249   , p_value_type_code              => l_adr_value_type_code
23250   , p_transaction_coa_id           => l_adr_transaction_coa_id
23251   , p_accounting_coa_id            => l_adr_accounting_coa_id
23252   , p_adr_code                     => 'AP_INVOICE_DIST'
23253   , p_adr_type_code                => 'S'
23254   , p_component_type               => l_component_type
23255   , p_component_code               => l_component_code
23256   , p_component_type_code          => l_component_type_code
23257   , p_component_appl_id            => l_component_appl_id
23258   , p_amb_context_code             => l_amb_context_code
23259   , p_side                         => 'NA'
23260   );
23261 
23262 
23263    l_segment := AcctDerRule_6(
23264            p_application_id           => p_application_id
23265          , p_ae_header_id             => l_ae_header_id 
23266 , p_source_3 => p_source_3
23267          , x_transaction_coa_id       => l_adr_transaction_coa_id
23268          , x_accounting_coa_id        => l_adr_accounting_coa_id
23269          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
23270          , x_flex_value_set_id        => l_adr_flex_value_set_id
23271          , x_value_type_code          => l_adr_value_type_code
23272          , x_value_combination_id     => l_adr_value_combination_id
23273          , x_value_segment_code       => l_adr_value_segment_code
23274          , p_side                     => 'NA'
23275          , p_override_seg_flag        => 'Y'
23276    );
23277 
23278    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
23279 
23280       xla_ae_lines_pkg.set_segment(
23281           p_to_segment_code         => 'GL_ACCOUNT'
23282         , p_segment_value           => l_segment
23283         , p_from_segment_code       => l_adr_value_segment_code
23284         , p_from_combination_id     => l_adr_value_combination_id
23285         , p_value_type_code         => l_adr_value_type_code
23286         , p_transaction_coa_id      => l_adr_transaction_coa_id
23287         , p_accounting_coa_id       => l_adr_accounting_coa_id
23288         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
23289         , p_flex_value_set_id       => l_adr_flex_value_set_id
23290         , p_adr_code                => 'FV_445002_DWD_PYA_UNANCPT_ACCT'
23291         , p_adr_type_code           => 'S'
23292         , p_component_type          => l_component_type
23293         , p_component_code          => l_component_code
23294         , p_component_type_code     => l_component_type_code
23295         , p_component_appl_id       => l_component_appl_id
23296         , p_amb_context_code        => l_amb_context_code
23297         , p_entity_code             => 'AP_INVOICES'
23298         , p_event_class_code        => 'INVOICES'
23299         , p_side                    => 'NA'
23300         );
23301 
23302   END IF;
23303 
23304    --
23305    --
23306    END IF;
23307    --
23308    -- Bug 4922099
23312         (l_bflow_method_code = 'PRIOR_ENTRY')
23309    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23310           (NVL(l_enc_upg_option, 'N') = 'O')
23311         ) AND
23313       )
23314    THEN
23315       IF
23316       --
23317       1 = 2
23318       --
23319       THEN
23320       xla_accounting_err_pkg.build_message
23321                                     (p_appli_s_name            => 'XLA'
23322                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23323                                     ,p_token_1                 => 'LINE_NUMBER'
23324                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23325                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23326                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23327                                                                              l_component_type
23328                                                                             ,l_component_code
23329                                                                             ,l_component_type_code
23330                                                                             ,l_component_appl_id
23331                                                                             ,l_amb_context_code
23332                                                                             ,l_entity_code
23333                                                                             ,l_event_class_code
23334                                                                            )
23335                                     ,p_token_3                 => 'OWNER'
23336                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23337                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23338                                                                           ,p_lookup_code    => l_component_type_code
23339                                                                          )
23340                                     ,p_token_4                 => 'PRODUCT_NAME'
23341                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23342                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23343                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23344                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23345                                     ,p_ae_header_id            =>  NULL
23346                                        );
23347 
23348         IF (C_LEVEL_ERROR>= g_log_level) THEN
23349                  trace
23350                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23351                       ,p_level    => C_LEVEL_ERROR
23352                       ,p_module   => l_log_module);
23353         END IF;
23354       END IF;
23355    END IF;
23356    --
23357    --
23358    ------------------------------------------------------------------------------------------------
23359    -- 4219869 Business Flow
23360    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23361    -- Prior Entry.  Currently, the following code is always generated.
23362    ------------------------------------------------------------------------------------------------
23363    XLA_AE_LINES_PKG.ValidateCurrentLine;
23364 
23365    ------------------------------------------------------------------------------------
23366    -- 4219869 Business Flow
23367    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23368    ------------------------------------------------------------------------------------
23369    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23370 
23371    ----------------------------------------------------------------------------------
23372    -- 4219869 Business Flow
23373    -- Update journal entry status -- Need to generate this within IF <condition>
23374    ----------------------------------------------------------------------------------
23375    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23376          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23377          ,p_balance_type_code => l_balance_type_code
23378          );
23379 
23380    -------------------------------------------------------------------------------------------
23381    -- 4262811 - Generate the Accrual Reversal lines
23382    -------------------------------------------------------------------------------------------
23383    BEGIN
23384       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23385                               (g_array_event(p_event_id).array_value_num('header_index'));
23386       IF l_acc_rev_flag IS NULL THEN
23387          l_acc_rev_flag := 'N';
23388       END IF;
23389    EXCEPTION
23390       WHEN OTHERS THEN
23391          l_acc_rev_flag := 'N';
23392    END;
23393    --
23394    IF (l_acc_rev_flag = 'Y') THEN
23395 
23396        -- 4645092  ------------------------------------------------------------------------------
23397        -- To allow MPA report to determine if it should generate report process
23398        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23399        ------------------------------------------------------------------------------------------
23400 
23401        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23402        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23406    --
23403    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23404    -- call ADRs
23405    -- Bug 4922099
23407    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23408         (NVL(l_actual_upg_option, 'N') = 'O') OR
23409         (NVL(l_enc_upg_option, 'N') = 'O')
23410       )
23411    THEN
23412    NULL;
23413    --
23414    --
23415    
23416   l_ccid := AcctDerRule_3(
23417            p_application_id           => p_application_id
23418          , p_ae_header_id             => l_ae_header_id 
23419 , p_source_2 => p_source_2
23420          , x_transaction_coa_id       => l_adr_transaction_coa_id
23421          , x_accounting_coa_id        => l_adr_accounting_coa_id
23422          , x_value_type_code          => l_adr_value_type_code
23423          , p_side                     => 'NA'
23424    );
23425 
23426    xla_ae_lines_pkg.set_ccid(
23427     p_code_combination_id          => l_ccid
23428   , p_value_type_code              => l_adr_value_type_code
23429   , p_transaction_coa_id           => l_adr_transaction_coa_id
23430   , p_accounting_coa_id            => l_adr_accounting_coa_id
23431   , p_adr_code                     => 'AP_INVOICE_DIST'
23432   , p_adr_type_code                => 'S'
23433   , p_component_type               => l_component_type
23434   , p_component_code               => l_component_code
23435   , p_component_type_code          => l_component_type_code
23436   , p_component_appl_id            => l_component_appl_id
23437   , p_amb_context_code             => l_amb_context_code
23438   , p_side                         => 'NA'
23439   );
23440 
23441 
23442    l_segment := AcctDerRule_6(
23443            p_application_id           => p_application_id
23444          , p_ae_header_id             => l_ae_header_id 
23445 , p_source_3 => p_source_3
23446          , x_transaction_coa_id       => l_adr_transaction_coa_id
23447          , x_accounting_coa_id        => l_adr_accounting_coa_id
23448          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
23449          , x_flex_value_set_id        => l_adr_flex_value_set_id
23450          , x_value_type_code          => l_adr_value_type_code
23451          , x_value_combination_id     => l_adr_value_combination_id
23452          , x_value_segment_code       => l_adr_value_segment_code
23453          , p_side                     => 'NA'
23454          , p_override_seg_flag        => 'Y'
23455    );
23456 
23457    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
23458 
23459       xla_ae_lines_pkg.set_segment(
23460           p_to_segment_code         => 'GL_ACCOUNT'
23461         , p_segment_value           => l_segment
23462         , p_from_segment_code       => l_adr_value_segment_code
23463         , p_from_combination_id     => l_adr_value_combination_id
23464         , p_value_type_code         => l_adr_value_type_code
23465         , p_transaction_coa_id      => l_adr_transaction_coa_id
23466         , p_accounting_coa_id       => l_adr_accounting_coa_id
23467         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
23468         , p_flex_value_set_id       => l_adr_flex_value_set_id
23469         , p_adr_code                => 'FV_445002_DWD_PYA_UNANCPT_ACCT'
23470         , p_adr_type_code           => 'S'
23471         , p_component_type          => l_component_type
23472         , p_component_code          => l_component_code
23473         , p_component_type_code     => l_component_type_code
23474         , p_component_appl_id       => l_component_appl_id
23475         , p_amb_context_code        => l_amb_context_code
23476         , p_entity_code             => 'AP_INVOICES'
23477         , p_event_class_code        => 'INVOICES'
23478         , p_side                    => 'NA'
23479         );
23480 
23481   END IF;
23482 
23483    --
23484    --
23485    END IF;
23486 
23487        --
23488        -- Update the line information that should be overwritten
23489        --
23490        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23491                                          p_header_num   => 1);
23492        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23493 
23494        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23495 
23496        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23497           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23498        END IF;
23499 
23500       --
23501       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23502       --
23503       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23504           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23505       ELSE
23506           ---------------------------------------------------------------------------------------------------
23507           -- 4262811a Switch Sign
23508           ---------------------------------------------------------------------------------------------------
23509           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23510           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23511                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23515           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23512           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23513                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23514           -- 5132302
23516                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23517 
23518       END IF;
23519 
23520       -- 4955764
23521       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23522       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23523 
23524 
23525       XLA_AE_LINES_PKG.ValidateCurrentLine;
23526       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23527 
23528       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23529                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23530                ,p_balance_type_code => l_balance_type_code);
23531 
23532    END IF;
23533 
23534    -----------------------------------------------------------------------------------------
23535    -- 4262811 Multiperiod Accounting
23536    -----------------------------------------------------------------------------------------
23537      -- No MPA option is assigned.
23538 
23539 
23540 END IF;
23541 END IF;
23542 --
23543 
23544 --
23545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23546    trace
23547       (p_msg      => 'END of AcctLineType_43'
23548       ,p_level    => C_LEVEL_PROCEDURE
23549       ,p_module   => l_log_module);
23550 END IF;
23551 --
23552 EXCEPTION
23553   WHEN xla_exceptions_pkg.application_exception THEN
23554       RAISE;
23555   WHEN OTHERS THEN
23556        xla_exceptions_pkg.raise_message
23557            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_43');
23558 END AcctLineType_43;
23559 --
23560 
23561 ---------------------------------------
23562 --
23563 -- PRIVATE FUNCTION
23564 --         AcctLineType_44
23565 --
23566 ---------------------------------------
23567 PROCEDURE AcctLineType_44 (
23568   p_application_id        IN NUMBER
23569  ,p_event_id              IN NUMBER
23570  ,p_calculate_acctd_flag  IN VARCHAR2
23571  ,p_calculate_g_l_flag    IN VARCHAR2
23572  ,p_actual_flag           IN OUT VARCHAR2
23573  ,p_balance_type_code     OUT VARCHAR2
23574  ,p_gain_or_loss_ref      OUT VARCHAR2
23575  
23576 --Invoice Distribution Description
23577  , p_source_1            IN VARCHAR2
23578 --Invoice Distribution Account
23579  , p_source_2            IN NUMBER
23580 --Invoice Distribution Type
23581  , p_source_8            IN VARCHAR2
23582  , p_source_8_meaning    IN VARCHAR2
23583 --Federal Prior Year Flag
23584  , p_source_9            IN VARCHAR2
23585 --Accrue on Receipt Option
23586  , p_source_11            IN VARCHAR2
23587  , p_source_11_meaning    IN VARCHAR2
23588 --Purchase Order Distribution Identifier
23589  , p_source_12            IN NUMBER
23590 --Invoice Type
23591  , p_source_13            IN VARCHAR2
23592  , p_source_13_meaning    IN VARCHAR2
23593 --Federal Adjustment Type
23594  , p_source_14            IN VARCHAR2
23595 --Accounting Reversal Indicator
23596  , p_source_15            IN VARCHAR2
23597 --Distribution Link Type
23598  , p_source_17            IN VARCHAR2
23599 --Allocation to Main Distribution Identifier
23600  , p_source_19            IN NUMBER
23601 --Invoice Identifier
23602  , p_source_20            IN NUMBER
23603 --Business Flow Accounts Payable Application Identifier
23604  , p_source_21            IN NUMBER
23605 --Business Flow Invoice Distribution Type
23606  , p_source_22            IN VARCHAR2
23607 --Business Flow Invoice Entity Code
23608  , p_source_23            IN VARCHAR2
23609 --Business Flow Invoice Distribution Identifier
23610  , p_source_24            IN NUMBER
23611 --Business Flow Invoice Identifier
23612  , p_source_25            IN NUMBER
23613 --Invoice Distribution Identifier
23614  , p_source_26            IN NUMBER
23615 --Payables Encumbrance Upgrade Credit Account
23616  , p_source_27            IN NUMBER
23617 --Payables Encumbrance Upgrade Credit Amount
23618  , p_source_28            IN NUMBER
23619 --Invoice Currency Code
23620  , p_source_29            IN VARCHAR2
23621 --Payables Encumbrance Upgrade Credit Base Amount
23622  , p_source_30            IN NUMBER
23623 --Payables Encumbrance Upgrade Debit Account
23624  , p_source_31            IN NUMBER
23625 --Payables Encumbrance Upgrade Debit Amount
23626  , p_source_32            IN NUMBER
23627 --Payables Encumbrance Upgrade Debit Base Amount
23628  , p_source_33            IN NUMBER
23629 --Payables Encumbrance Upgrade Option
23630  , p_source_34            IN VARCHAR2
23631 --Invoice Exchange Date
23632  , p_source_36            IN DATE
23633 --Invoice Exchange Rate
23634  , p_source_37            IN NUMBER
23635 --Invoice Exchange Rate Type
23636  , p_source_38            IN VARCHAR2
23637 --Deferred Accounting End Date
23638  , p_source_39            IN DATE
23639 --Deferred Accounting Option
23640  , p_source_40            IN VARCHAR2
23641 --Deferred Accounting Start Date
23642  , p_source_41            IN DATE
23643 --Override Accounted Amount Indicator
23644  , p_source_42            IN VARCHAR2
23645  , p_source_42_meaning    IN VARCHAR2
23646 --Invoice Supplier Identifier
23647  , p_source_43            IN NUMBER
23651  , p_source_45            IN VARCHAR2
23648 --Invoice Supplier Site Identifier
23649  , p_source_44            IN NUMBER
23650 --Third Party Type
23652 --Parent Reversal Identifier
23653  , p_source_46            IN NUMBER
23654 --Invoice Distribution Statistical Amount
23655  , p_source_47            IN NUMBER
23656 --Invoice Distribution Tax Line Identifier
23657  , p_source_48            IN NUMBER
23658 --Invoice Distribution Tax Distribution Identifier from Tax
23659  , p_source_49            IN NUMBER
23660 --Invoice Distribution Summary Tax Line Identifier
23661  , p_source_50            IN NUMBER
23662 --Payables Upgrade Credit Encumbrance Type Identifier
23663  , p_source_51            IN NUMBER
23664 --Payables Upgrade Debit Encumbrance Type Identifier
23665  , p_source_52            IN NUMBER
23666 --Invoice Distribution Amount
23667  , p_source_55            IN NUMBER
23668 --Invoice Distribution Ledger Amount
23669  , p_source_56            IN NUMBER
23670 )
23671 IS
23672 
23673 l_component_type              VARCHAR2(80);
23674 l_component_code              VARCHAR2(30);
23675 l_component_type_code         VARCHAR2(1);
23676 l_component_appl_id           INTEGER;
23677 l_amb_context_code            VARCHAR2(30);
23678 l_entity_code                 VARCHAR2(30);
23679 l_event_class_code            VARCHAR2(30);
23680 l_ae_header_id                NUMBER;
23681 l_event_type_code             VARCHAR2(30);
23682 l_line_definition_code        VARCHAR2(30);
23683 l_line_definition_owner_code  VARCHAR2(1);
23684 --
23685 -- adr variables
23686 l_segment                     VARCHAR2(30);
23687 l_ccid                        NUMBER;
23688 l_adr_transaction_coa_id      NUMBER;
23689 l_adr_accounting_coa_id       NUMBER;
23690 l_adr_flexfield_segment_code  VARCHAR2(30);
23691 l_adr_flex_value_set_id       NUMBER;
23692 l_adr_value_type_code         VARCHAR2(30);
23693 l_adr_value_combination_id    NUMBER;
23694 l_adr_value_segment_code      VARCHAR2(30);
23695 
23696 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23697 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23698 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23699 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23700 
23701 -- 4262811 Variables ------------------------------------------------------------------------------------------
23702 l_entered_amt_idx             NUMBER;
23703 l_accted_amt_idx              NUMBER;
23704 l_acc_rev_flag                VARCHAR2(1);
23705 l_accrual_line_num            NUMBER;
23706 l_tmp_amt                     NUMBER;
23707 l_acc_rev_natural_side_code   VARCHAR2(1);
23708 
23709 l_num_entries                 NUMBER;
23710 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23711 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23712 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23713 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23714 l_recog_line_1                NUMBER;
23715 l_recog_line_2                NUMBER;
23716 
23717 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23718 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23719 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23720 
23721 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23722 
23723 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23724 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23725 
23726 ---------------------------------------------------------------------------------------------------------------
23727 
23728 
23729 --
23730 -- bulk performance
23731 --
23732 l_balance_type_code           VARCHAR2(1);
23733 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23734 l_log_module                  VARCHAR2(240);
23735 
23736 --
23737 -- Upgrade strategy
23738 --
23739 l_actual_upg_option           VARCHAR2(1);
23740 l_enc_upg_option           VARCHAR2(1);
23741 
23742 --
23743 BEGIN
23744 --
23745 IF g_log_enabled THEN
23746       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
23747 END IF;
23748 --
23749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23750 
23751       trace
23752          (p_msg      => 'BEGIN of AcctLineType_44'
23753          ,p_level    => C_LEVEL_PROCEDURE
23754          ,p_module   => l_log_module);
23755 
23756 END IF;
23757 --
23758 l_component_type             := 'AMB_JLT';
23759 l_component_code             := 'FV_AP_INV_ UPWARD_PYA_CR';
23760 l_component_type_code        := 'S';
23761 l_component_appl_id          :=  200;
23762 l_amb_context_code           := 'DEFAULT';
23763 l_entity_code                := 'AP_INVOICES';
23764 l_event_class_code           := 'INVOICES';
23765 l_event_type_code            := 'INVOICES_ALL';
23766 l_line_definition_owner_code := 'S';
23767 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
23768 --
23769 l_balance_type_code          := 'A';
23770 l_segment                     := NULL;
23771 l_ccid                        := NULL;
23772 l_adr_transaction_coa_id      := NULL;
23773 l_adr_accounting_coa_id       := NULL;
23774 l_adr_flexfield_segment_code  := NULL;
23775 l_adr_flex_value_set_id       := NULL;
23779 
23776 l_adr_value_type_code         := NULL;
23777 l_adr_value_combination_id    := NULL;
23778 l_adr_value_segment_code      := NULL;
23780 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23781 l_bflow_class_code           := '';    -- 4219869 Business Flow
23782 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23783 l_budgetary_control_flag     := 'Y';
23784 
23785 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23786 l_bflow_applied_to_amt       := NULL; -- 5132302
23787 l_entered_amt_idx            := NULL;          -- 4262811
23788 l_accted_amt_idx             := NULL;          -- 4262811
23789 l_acc_rev_flag               := NULL;          -- 4262811
23790 l_accrual_line_num           := NULL;          -- 4262811
23791 l_tmp_amt                    := NULL;          -- 4262811
23792 --
23793  
23794 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23795     l_balance_type_code <> 'B' THEN
23796 IF ((NVL(p_source_9,'
23797 ') =  'Y' AND 
23798 p_source_12 IS NULL AND 
23799 (NVL(p_source_13,'
23800 ') =  'MIXED' OR 
23801 NVL(p_source_13,'
23802 ') =  'STANDARD' OR 
23803 NVL(p_source_13,'
23804 ') =  'INTEREST' OR 
23805 NVL(p_source_13,'
23806 ') =  'EXPENSE REPORT') AND 
23807 (NVL(p_source_8,'
23808 ') =  'ITEM' OR 
23809 NVL(p_source_8,'
23810 ') =  'ACCRUAL' OR 
23811 NVL(p_source_8,'
23812 ') =  'FREIGHT' OR 
23813 NVL(p_source_8,'
23814 ') =  'MISCELLANEOUS' OR 
23815 NVL(p_source_8,'
23816 ') =  'IPV')
23817 ) OR (NVL(p_source_9,'
23818 ') =  'Y' AND 
23819 NVL(p_source_8,'
23820 ') =  'IPV' AND 
23821 p_source_12 IS NOT NULL )
23822 ) AND NVL(p_source_14,'
23823 ') =  'Upward'
23824  THEN 
23825 
23826    --
23827    XLA_AE_LINES_PKG.SetNewLine;
23828 
23829    p_balance_type_code          := l_balance_type_code;
23830    -- set the flag so later we will know whether the gain loss line needs to be created
23831    
23832    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23833      p_actual_flag :='A';
23834    END IF;
23835 
23836    --
23837    -- bulk performance
23838    --
23839    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23840                                       p_header_num   => 0); -- 4262811
23841    --
23842    -- set accounting line options
23843    --
23844    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23845            p_natural_side_code          => 'C'
23846          , p_gain_or_loss_flag          => 'N'
23847          , p_gl_transfer_mode_code      => 'S'
23848          , p_acct_entry_type_code       => 'A'
23849          , p_switch_side_flag           => 'N'
23850          , p_merge_duplicate_code       => 'N'
23851          );
23852    --
23853    l_acc_rev_natural_side_code := 'D';  -- 4262811
23854    -- 
23855    --
23856    -- set accounting line type info
23857    --
23858    xla_ae_lines_pkg.SetAcctLineType
23859       (p_component_type             => l_component_type
23860       ,p_event_type_code            => l_event_type_code
23861       ,p_line_definition_owner_code => l_line_definition_owner_code
23862       ,p_line_definition_code       => l_line_definition_code
23863       ,p_accounting_line_code       => l_component_code
23864       ,p_accounting_line_type_code  => l_component_type_code
23865       ,p_accounting_line_appl_id    => l_component_appl_id
23866       ,p_amb_context_code           => l_amb_context_code
23867       ,p_entity_code                => l_entity_code
23868       ,p_event_class_code           => l_event_class_code);
23869    --
23870    -- set accounting class
23871    --
23872    xla_ae_lines_pkg.SetAcctClass(
23873            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
23874          , p_ae_header_id           => l_ae_header_id
23875          );
23876 
23877    --
23878    -- set rounding class
23879    --
23880    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23881                       'ACCOUNTSPAYABLE';
23882 
23883    --
23884    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23885    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23886    --
23887    -- bulk performance
23888    --
23889    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23890 
23891    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23892       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23893 
23894    -- 4955764
23895    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23896       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23897 
23898    -- 4458381 Public Sector Enh
23899    
23900    --
23901    -- set accounting attributes for the line type
23902    --
23903    l_entered_amt_idx := 24;
23904    l_accted_amt_idx  := 29;
23905    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
23906    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23907    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
23908    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23909    l_rec_acct_attrs.array_num_value(2)  := 
23913  , p_source_application_id =>  602
23910 xla_ae_sources_pkg.GetSystemSourceNum(
23911    p_source_code           => 'XLA_EVENT_APPL_ID'
23912  , p_source_type_code      => 'Y'
23914 );
23915    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23916    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
23917    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23918    l_rec_acct_attrs.array_char_value(4)  := 
23919 xla_ae_sources_pkg.GetSystemSourceChar(
23920    p_source_code           => 'XLA_ENTITY_CODE'
23921  , p_source_type_code      => 'Y'
23922  , p_source_application_id =>  602
23923 );
23924    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23925    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
23926    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23927    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
23928    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
23929    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
23930    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
23931    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
23932    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23933    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
23934    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
23935    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
23936    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
23937    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
23938    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23939    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
23940    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
23941    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
23942    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
23943    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
23944    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
23945    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
23946    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
23947    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
23948    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
23949    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
23950    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
23951    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
23952    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
23953    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
23954    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
23955    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
23956    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
23957    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
23958    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
23959    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
23960    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
23961    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
23962    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
23963    l_rec_acct_attrs.array_num_value(24)  := p_source_55;
23964    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
23965    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
23966    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
23967    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
23968    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
23969    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
23970    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
23971    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
23972    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
23973    l_rec_acct_attrs.array_num_value(29)  := p_source_56;
23974    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
23975    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
23976    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
23977    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
23978    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
23979    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
23980    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
23981    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
23982    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
23983    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
23984    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
23985    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
23986    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
23987    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
23988    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
23989    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
23990    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
23991    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
23992    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
23993    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
23994    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
23995    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
23999    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
23996    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
23997    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
23998    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
24000    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
24001    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
24002    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
24003    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
24004 
24005    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24006    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24007 
24008    ---------------------------------------------------------------------------------------------------------------
24009    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24010    ---------------------------------------------------------------------------------------------------------------
24011    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24012 
24013    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24014    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24015 
24016    IF xla_accounting_cache_pkg.GetValueChar
24017          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24018          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24019    AND l_bflow_method_code = 'PRIOR_ENTRY'
24020 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24021    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24022          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24023        )
24024    THEN
24025          xla_ae_lines_pkg.BflowUpgEntry
24026            (p_business_method_code    => l_bflow_method_code
24027            ,p_business_class_code     => l_bflow_class_code
24028            ,p_balance_type            => l_balance_type_code);
24029    ELSE
24030       NULL;
24031 -- No business flow processing for business flow method of NONE.
24032    END IF;
24033 
24034    --
24035    -- call analytical criteria
24036    --
24037    
24038    --
24039    -- call description
24040    --
24041    
24042 xla_ae_lines_pkg.SetLineDescription(
24043    p_ae_header_id => l_ae_header_id
24044   ,p_description  => Description_2 (
24045      p_application_id         => p_application_id
24046    , p_ae_header_id           => l_ae_header_id 
24047 , p_source_1 => p_source_1
24048    )
24049 );
24050 
24051 
24052    --
24053    -- call ADRs
24054    -- Bug 4922099
24055    --
24056    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24057         (NVL(l_actual_upg_option, 'N') = 'O') OR
24058         (NVL(l_enc_upg_option, 'N') = 'O')
24059       )
24060    THEN
24061    NULL;
24062    --
24063    --
24064    
24065   l_ccid := AcctDerRule_3(
24066            p_application_id           => p_application_id
24067          , p_ae_header_id             => l_ae_header_id 
24068 , p_source_2 => p_source_2
24069          , x_transaction_coa_id       => l_adr_transaction_coa_id
24070          , x_accounting_coa_id        => l_adr_accounting_coa_id
24071          , x_value_type_code          => l_adr_value_type_code
24072          , p_side                     => 'NA'
24073    );
24074 
24075    xla_ae_lines_pkg.set_ccid(
24076     p_code_combination_id          => l_ccid
24077   , p_value_type_code              => l_adr_value_type_code
24078   , p_transaction_coa_id           => l_adr_transaction_coa_id
24079   , p_accounting_coa_id            => l_adr_accounting_coa_id
24080   , p_adr_code                     => 'AP_INVOICE_DIST'
24081   , p_adr_type_code                => 'S'
24082   , p_component_type               => l_component_type
24083   , p_component_code               => l_component_code
24084   , p_component_type_code          => l_component_type_code
24085   , p_component_appl_id            => l_component_appl_id
24086   , p_amb_context_code             => l_amb_context_code
24087   , p_side                         => 'NA'
24088   );
24089 
24090 
24091    l_segment := AcctDerRule_14(
24092            p_application_id           => p_application_id
24093          , p_ae_header_id             => l_ae_header_id 
24094 , p_source_11 => p_source_11
24095 , p_source_11_meaning => p_source_11_meaning
24096 , p_source_12 => p_source_12
24097          , x_transaction_coa_id       => l_adr_transaction_coa_id
24098          , x_accounting_coa_id        => l_adr_accounting_coa_id
24099          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
24100          , x_flex_value_set_id        => l_adr_flex_value_set_id
24101          , x_value_type_code          => l_adr_value_type_code
24102          , x_value_combination_id     => l_adr_value_combination_id
24103          , x_value_segment_code       => l_adr_value_segment_code
24104          , p_side                     => 'NA'
24105          , p_override_seg_flag        => 'Y'
24106    );
24107 
24108    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
24109 
24110       xla_ae_lines_pkg.set_segment(
24111           p_to_segment_code         => 'GL_ACCOUNT'
24112         , p_segment_value           => l_segment
24113         , p_from_segment_code       => l_adr_value_segment_code
24114         , p_from_combination_id     => l_adr_value_combination_id
24118         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
24115         , p_value_type_code         => l_adr_value_type_code
24116         , p_transaction_coa_id      => l_adr_transaction_coa_id
24117         , p_accounting_coa_id       => l_adr_accounting_coa_id
24119         , p_flex_value_set_id       => l_adr_flex_value_set_id
24120         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
24121         , p_adr_type_code           => 'S'
24122         , p_component_type          => l_component_type
24123         , p_component_code          => l_component_code
24124         , p_component_type_code     => l_component_type_code
24125         , p_component_appl_id       => l_component_appl_id
24126         , p_amb_context_code        => l_amb_context_code
24127         , p_entity_code             => 'AP_INVOICES'
24128         , p_event_class_code        => 'INVOICES'
24129         , p_side                    => 'NA'
24130         );
24131 
24132   END IF;
24133 
24134    --
24135    --
24136    END IF;
24137    --
24138    -- Bug 4922099
24139    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24140           (NVL(l_enc_upg_option, 'N') = 'O')
24141         ) AND
24142         (l_bflow_method_code = 'PRIOR_ENTRY')
24143       )
24144    THEN
24145       IF
24146       --
24147       1 = 2
24148       --
24149       THEN
24150       xla_accounting_err_pkg.build_message
24151                                     (p_appli_s_name            => 'XLA'
24152                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24153                                     ,p_token_1                 => 'LINE_NUMBER'
24154                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24155                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24156                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24157                                                                              l_component_type
24158                                                                             ,l_component_code
24159                                                                             ,l_component_type_code
24160                                                                             ,l_component_appl_id
24161                                                                             ,l_amb_context_code
24162                                                                             ,l_entity_code
24163                                                                             ,l_event_class_code
24164                                                                            )
24165                                     ,p_token_3                 => 'OWNER'
24166                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24167                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24168                                                                           ,p_lookup_code    => l_component_type_code
24169                                                                          )
24170                                     ,p_token_4                 => 'PRODUCT_NAME'
24171                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24172                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24173                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24174                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24175                                     ,p_ae_header_id            =>  NULL
24176                                        );
24177 
24178         IF (C_LEVEL_ERROR>= g_log_level) THEN
24179                  trace
24180                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24181                       ,p_level    => C_LEVEL_ERROR
24182                       ,p_module   => l_log_module);
24183         END IF;
24184       END IF;
24185    END IF;
24186    --
24187    --
24188    ------------------------------------------------------------------------------------------------
24189    -- 4219869 Business Flow
24190    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24191    -- Prior Entry.  Currently, the following code is always generated.
24192    ------------------------------------------------------------------------------------------------
24193    XLA_AE_LINES_PKG.ValidateCurrentLine;
24194 
24195    ------------------------------------------------------------------------------------
24196    -- 4219869 Business Flow
24197    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24198    ------------------------------------------------------------------------------------
24199    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24200 
24201    ----------------------------------------------------------------------------------
24202    -- 4219869 Business Flow
24203    -- Update journal entry status -- Need to generate this within IF <condition>
24204    ----------------------------------------------------------------------------------
24205    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24206          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24207          ,p_balance_type_code => l_balance_type_code
24208          );
24212    -------------------------------------------------------------------------------------------
24209 
24210    -------------------------------------------------------------------------------------------
24211    -- 4262811 - Generate the Accrual Reversal lines
24213    BEGIN
24214       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24215                               (g_array_event(p_event_id).array_value_num('header_index'));
24216       IF l_acc_rev_flag IS NULL THEN
24217          l_acc_rev_flag := 'N';
24218       END IF;
24219    EXCEPTION
24220       WHEN OTHERS THEN
24221          l_acc_rev_flag := 'N';
24222    END;
24223    --
24224    IF (l_acc_rev_flag = 'Y') THEN
24225 
24226        -- 4645092  ------------------------------------------------------------------------------
24227        -- To allow MPA report to determine if it should generate report process
24228        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24229        ------------------------------------------------------------------------------------------
24230 
24231        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24232        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24233    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24234    -- call ADRs
24235    -- Bug 4922099
24236    --
24237    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24238         (NVL(l_actual_upg_option, 'N') = 'O') OR
24239         (NVL(l_enc_upg_option, 'N') = 'O')
24240       )
24241    THEN
24242    NULL;
24243    --
24244    --
24245    
24246   l_ccid := AcctDerRule_3(
24247            p_application_id           => p_application_id
24248          , p_ae_header_id             => l_ae_header_id 
24249 , p_source_2 => p_source_2
24250          , x_transaction_coa_id       => l_adr_transaction_coa_id
24251          , x_accounting_coa_id        => l_adr_accounting_coa_id
24252          , x_value_type_code          => l_adr_value_type_code
24253          , p_side                     => 'NA'
24254    );
24255 
24256    xla_ae_lines_pkg.set_ccid(
24257     p_code_combination_id          => l_ccid
24258   , p_value_type_code              => l_adr_value_type_code
24259   , p_transaction_coa_id           => l_adr_transaction_coa_id
24260   , p_accounting_coa_id            => l_adr_accounting_coa_id
24261   , p_adr_code                     => 'AP_INVOICE_DIST'
24262   , p_adr_type_code                => 'S'
24263   , p_component_type               => l_component_type
24264   , p_component_code               => l_component_code
24265   , p_component_type_code          => l_component_type_code
24266   , p_component_appl_id            => l_component_appl_id
24267   , p_amb_context_code             => l_amb_context_code
24268   , p_side                         => 'NA'
24269   );
24270 
24271 
24272    l_segment := AcctDerRule_14(
24273            p_application_id           => p_application_id
24274          , p_ae_header_id             => l_ae_header_id 
24275 , p_source_11 => p_source_11
24276 , p_source_11_meaning => p_source_11_meaning
24277 , p_source_12 => p_source_12
24278          , x_transaction_coa_id       => l_adr_transaction_coa_id
24279          , x_accounting_coa_id        => l_adr_accounting_coa_id
24280          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
24281          , x_flex_value_set_id        => l_adr_flex_value_set_id
24282          , x_value_type_code          => l_adr_value_type_code
24283          , x_value_combination_id     => l_adr_value_combination_id
24284          , x_value_segment_code       => l_adr_value_segment_code
24285          , p_side                     => 'NA'
24286          , p_override_seg_flag        => 'Y'
24287    );
24288 
24289    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
24290 
24291       xla_ae_lines_pkg.set_segment(
24292           p_to_segment_code         => 'GL_ACCOUNT'
24293         , p_segment_value           => l_segment
24294         , p_from_segment_code       => l_adr_value_segment_code
24295         , p_from_combination_id     => l_adr_value_combination_id
24296         , p_value_type_code         => l_adr_value_type_code
24297         , p_transaction_coa_id      => l_adr_transaction_coa_id
24298         , p_accounting_coa_id       => l_adr_accounting_coa_id
24299         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
24300         , p_flex_value_set_id       => l_adr_flex_value_set_id
24301         , p_adr_code                => 'FV_4X9101_UPWARD_PYA_CR'
24302         , p_adr_type_code           => 'S'
24303         , p_component_type          => l_component_type
24304         , p_component_code          => l_component_code
24305         , p_component_type_code     => l_component_type_code
24306         , p_component_appl_id       => l_component_appl_id
24307         , p_amb_context_code        => l_amb_context_code
24308         , p_entity_code             => 'AP_INVOICES'
24309         , p_event_class_code        => 'INVOICES'
24310         , p_side                    => 'NA'
24311         );
24312 
24313   END IF;
24314 
24315    --
24316    --
24317    END IF;
24318 
24319        --
24320        -- Update the line information that should be overwritten
24321        --
24322        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24323                                          p_header_num   => 1);
24324        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24325 
24326        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24327 
24331 
24328        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24329           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24330        END IF;
24332       --
24333       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24334       --
24335       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24336           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24337       ELSE
24338           ---------------------------------------------------------------------------------------------------
24339           -- 4262811a Switch Sign
24340           ---------------------------------------------------------------------------------------------------
24341           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24342           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24343                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24344           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24345                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24346           -- 5132302
24347           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24348                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24349 
24350       END IF;
24351 
24352       -- 4955764
24353       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24354       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24355 
24356 
24357       XLA_AE_LINES_PKG.ValidateCurrentLine;
24358       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24359 
24360       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24361                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24362                ,p_balance_type_code => l_balance_type_code);
24363 
24364    END IF;
24365 
24366    -----------------------------------------------------------------------------------------
24367    -- 4262811 Multiperiod Accounting
24368    -----------------------------------------------------------------------------------------
24369      -- No MPA option is assigned.
24370 
24371 
24372 END IF;
24373 END IF;
24374 --
24375 
24376 --
24377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24378    trace
24379       (p_msg      => 'END of AcctLineType_44'
24380       ,p_level    => C_LEVEL_PROCEDURE
24381       ,p_module   => l_log_module);
24382 END IF;
24383 --
24384 EXCEPTION
24385   WHEN xla_exceptions_pkg.application_exception THEN
24386       RAISE;
24387   WHEN OTHERS THEN
24388        xla_exceptions_pkg.raise_message
24389            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_44');
24390 END AcctLineType_44;
24391 --
24392 
24393 ---------------------------------------
24394 --
24395 -- PRIVATE FUNCTION
24396 --         AcctLineType_45
24397 --
24398 ---------------------------------------
24399 PROCEDURE AcctLineType_45 (
24400   p_application_id        IN NUMBER
24401  ,p_event_id              IN NUMBER
24402  ,p_calculate_acctd_flag  IN VARCHAR2
24403  ,p_calculate_g_l_flag    IN VARCHAR2
24404  ,p_actual_flag           IN OUT VARCHAR2
24405  ,p_balance_type_code     OUT VARCHAR2
24406  ,p_gain_or_loss_ref      OUT VARCHAR2
24407  
24408 --Invoice Distribution Description
24409  , p_source_1            IN VARCHAR2
24410 --Invoice Distribution Account
24411  , p_source_2            IN NUMBER
24412 --Federal Fund Category
24413  , p_source_4            IN VARCHAR2
24414 --Federal Fund Expired Status
24415  , p_source_5            IN VARCHAR2
24416 --Federal Fund Category Description
24417  , p_source_6            IN VARCHAR2
24418 --Invoice Distribution Type
24419  , p_source_8            IN VARCHAR2
24420  , p_source_8_meaning    IN VARCHAR2
24421 --Federal Prior Year Flag
24422  , p_source_9            IN VARCHAR2
24423 --Purchase Order Distribution Identifier
24424  , p_source_12            IN NUMBER
24425 --Invoice Type
24426  , p_source_13            IN VARCHAR2
24427  , p_source_13_meaning    IN VARCHAR2
24428 --Federal Adjustment Type
24429  , p_source_14            IN VARCHAR2
24430 --Accounting Reversal Indicator
24431  , p_source_15            IN VARCHAR2
24432 --Distribution Link Type
24433  , p_source_17            IN VARCHAR2
24434 --Allocation to Main Distribution Identifier
24435  , p_source_19            IN NUMBER
24436 --Invoice Identifier
24437  , p_source_20            IN NUMBER
24438 --Business Flow Accounts Payable Application Identifier
24439  , p_source_21            IN NUMBER
24440 --Business Flow Invoice Distribution Type
24441  , p_source_22            IN VARCHAR2
24442 --Business Flow Invoice Entity Code
24443  , p_source_23            IN VARCHAR2
24444 --Business Flow Invoice Distribution Identifier
24445  , p_source_24            IN NUMBER
24446 --Business Flow Invoice Identifier
24447  , p_source_25            IN NUMBER
24448 --Invoice Distribution Identifier
24449  , p_source_26            IN NUMBER
24450 --Payables Encumbrance Upgrade Credit Account
24454 --Invoice Currency Code
24451  , p_source_27            IN NUMBER
24452 --Payables Encumbrance Upgrade Credit Amount
24453  , p_source_28            IN NUMBER
24455  , p_source_29            IN VARCHAR2
24456 --Payables Encumbrance Upgrade Credit Base Amount
24457  , p_source_30            IN NUMBER
24458 --Payables Encumbrance Upgrade Debit Account
24459  , p_source_31            IN NUMBER
24460 --Payables Encumbrance Upgrade Debit Amount
24461  , p_source_32            IN NUMBER
24462 --Payables Encumbrance Upgrade Debit Base Amount
24463  , p_source_33            IN NUMBER
24464 --Payables Encumbrance Upgrade Option
24465  , p_source_34            IN VARCHAR2
24466 --Invoice Exchange Date
24467  , p_source_36            IN DATE
24468 --Invoice Exchange Rate
24469  , p_source_37            IN NUMBER
24470 --Invoice Exchange Rate Type
24471  , p_source_38            IN VARCHAR2
24472 --Deferred Accounting End Date
24473  , p_source_39            IN DATE
24474 --Deferred Accounting Option
24475  , p_source_40            IN VARCHAR2
24476 --Deferred Accounting Start Date
24477  , p_source_41            IN DATE
24478 --Override Accounted Amount Indicator
24479  , p_source_42            IN VARCHAR2
24480  , p_source_42_meaning    IN VARCHAR2
24481 --Invoice Supplier Identifier
24482  , p_source_43            IN NUMBER
24483 --Invoice Supplier Site Identifier
24484  , p_source_44            IN NUMBER
24485 --Third Party Type
24486  , p_source_45            IN VARCHAR2
24487 --Parent Reversal Identifier
24488  , p_source_46            IN NUMBER
24489 --Invoice Distribution Statistical Amount
24490  , p_source_47            IN NUMBER
24491 --Invoice Distribution Tax Line Identifier
24492  , p_source_48            IN NUMBER
24493 --Invoice Distribution Tax Distribution Identifier from Tax
24494  , p_source_49            IN NUMBER
24495 --Invoice Distribution Summary Tax Line Identifier
24496  , p_source_50            IN NUMBER
24497 --Payables Upgrade Credit Encumbrance Type Identifier
24498  , p_source_51            IN NUMBER
24499 --Payables Upgrade Debit Encumbrance Type Identifier
24500  , p_source_52            IN NUMBER
24501 --Invoice Distribution Amount
24502  , p_source_55            IN NUMBER
24503 --Invoice Distribution Ledger Amount
24504  , p_source_56            IN NUMBER
24505 )
24506 IS
24507 
24508 l_component_type              VARCHAR2(80);
24509 l_component_code              VARCHAR2(30);
24510 l_component_type_code         VARCHAR2(1);
24511 l_component_appl_id           INTEGER;
24512 l_amb_context_code            VARCHAR2(30);
24513 l_entity_code                 VARCHAR2(30);
24514 l_event_class_code            VARCHAR2(30);
24515 l_ae_header_id                NUMBER;
24516 l_event_type_code             VARCHAR2(30);
24517 l_line_definition_code        VARCHAR2(30);
24518 l_line_definition_owner_code  VARCHAR2(1);
24519 --
24520 -- adr variables
24521 l_segment                     VARCHAR2(30);
24522 l_ccid                        NUMBER;
24523 l_adr_transaction_coa_id      NUMBER;
24524 l_adr_accounting_coa_id       NUMBER;
24525 l_adr_flexfield_segment_code  VARCHAR2(30);
24526 l_adr_flex_value_set_id       NUMBER;
24527 l_adr_value_type_code         VARCHAR2(30);
24528 l_adr_value_combination_id    NUMBER;
24529 l_adr_value_segment_code      VARCHAR2(30);
24530 
24531 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24532 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24533 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24534 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24535 
24536 -- 4262811 Variables ------------------------------------------------------------------------------------------
24537 l_entered_amt_idx             NUMBER;
24538 l_accted_amt_idx              NUMBER;
24539 l_acc_rev_flag                VARCHAR2(1);
24540 l_accrual_line_num            NUMBER;
24541 l_tmp_amt                     NUMBER;
24542 l_acc_rev_natural_side_code   VARCHAR2(1);
24543 
24544 l_num_entries                 NUMBER;
24545 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24546 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24547 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24548 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24549 l_recog_line_1                NUMBER;
24550 l_recog_line_2                NUMBER;
24551 
24552 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24553 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24554 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24555 
24556 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24557 
24558 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24559 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24560 
24561 ---------------------------------------------------------------------------------------------------------------
24562 
24563 
24564 --
24565 -- bulk performance
24566 --
24567 l_balance_type_code           VARCHAR2(1);
24568 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24569 l_log_module                  VARCHAR2(240);
24570 
24571 --
24572 -- Upgrade strategy
24573 --
24574 l_actual_upg_option           VARCHAR2(1);
24578 BEGIN
24575 l_enc_upg_option           VARCHAR2(1);
24576 
24577 --
24579 --
24580 IF g_log_enabled THEN
24581       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
24582 END IF;
24583 --
24584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24585 
24586       trace
24587          (p_msg      => 'BEGIN of AcctLineType_45'
24588          ,p_level    => C_LEVEL_PROCEDURE
24589          ,p_module   => l_log_module);
24590 
24591 END IF;
24592 --
24593 l_component_type             := 'AMB_JLT';
24594 l_component_code             := 'FV_AP_INV_ UPWARD_PYA_DR';
24595 l_component_type_code        := 'S';
24596 l_component_appl_id          :=  200;
24597 l_amb_context_code           := 'DEFAULT';
24598 l_entity_code                := 'AP_INVOICES';
24599 l_event_class_code           := 'INVOICES';
24600 l_event_type_code            := 'INVOICES_ALL';
24601 l_line_definition_owner_code := 'S';
24602 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
24603 --
24604 l_balance_type_code          := 'A';
24605 l_segment                     := NULL;
24606 l_ccid                        := NULL;
24607 l_adr_transaction_coa_id      := NULL;
24608 l_adr_accounting_coa_id       := NULL;
24609 l_adr_flexfield_segment_code  := NULL;
24610 l_adr_flex_value_set_id       := NULL;
24611 l_adr_value_type_code         := NULL;
24612 l_adr_value_combination_id    := NULL;
24613 l_adr_value_segment_code      := NULL;
24614 
24615 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24616 l_bflow_class_code           := '';    -- 4219869 Business Flow
24617 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24618 l_budgetary_control_flag     := 'Y';
24619 
24620 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24621 l_bflow_applied_to_amt       := NULL; -- 5132302
24622 l_entered_amt_idx            := NULL;          -- 4262811
24623 l_accted_amt_idx             := NULL;          -- 4262811
24624 l_acc_rev_flag               := NULL;          -- 4262811
24625 l_accrual_line_num           := NULL;          -- 4262811
24626 l_tmp_amt                    := NULL;          -- 4262811
24627 --
24628  
24629 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24630     l_balance_type_code <> 'B' THEN
24631 IF ((NVL(p_source_9,'
24632 ') =  'Y' AND 
24633 p_source_12 IS NULL AND 
24634 (NVL(p_source_13,'
24635 ') =  'STANDARD' OR 
24636 NVL(p_source_13,'
24637 ') =  'MIXED' OR 
24638 NVL(p_source_13,'
24639 ') =  'INTEREST' OR 
24640 NVL(p_source_13,'
24641 ') =  'EXPENSE REPORT') AND 
24642 (NVL(p_source_8,'
24643 ') =  'ITEM' OR 
24644 NVL(p_source_8,'
24645 ') =  'FREIGHT' OR 
24646 NVL(p_source_8,'
24647 ') =  'MISCELLANEOUS' OR 
24648 NVL(p_source_8,'
24649 ') =  'ACCRUAL' OR 
24650 NVL(p_source_8,'
24651 ') =  'IPV')
24652 ) OR (NVL(p_source_9,'
24653 ') =  'Y' AND 
24654 NVL(p_source_8,'
24655 ') =  'IPV' AND 
24656 p_source_12 IS NOT NULL )
24657 ) AND NVL(p_source_14,'
24658 ') =  'Upward'
24659  THEN 
24660 
24661    --
24662    XLA_AE_LINES_PKG.SetNewLine;
24663 
24664    p_balance_type_code          := l_balance_type_code;
24665    -- set the flag so later we will know whether the gain loss line needs to be created
24666    
24667    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24668      p_actual_flag :='A';
24669    END IF;
24670 
24671    --
24672    -- bulk performance
24673    --
24674    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24675                                       p_header_num   => 0); -- 4262811
24676    --
24677    -- set accounting line options
24678    --
24679    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24680            p_natural_side_code          => 'D'
24681          , p_gain_or_loss_flag          => 'N'
24682          , p_gl_transfer_mode_code      => 'S'
24683          , p_acct_entry_type_code       => 'A'
24684          , p_switch_side_flag           => 'N'
24685          , p_merge_duplicate_code       => 'N'
24686          );
24687    --
24688    l_acc_rev_natural_side_code := 'C';  -- 4262811
24689    -- 
24690    --
24691    -- set accounting line type info
24692    --
24693    xla_ae_lines_pkg.SetAcctLineType
24694       (p_component_type             => l_component_type
24695       ,p_event_type_code            => l_event_type_code
24696       ,p_line_definition_owner_code => l_line_definition_owner_code
24697       ,p_line_definition_code       => l_line_definition_code
24698       ,p_accounting_line_code       => l_component_code
24699       ,p_accounting_line_type_code  => l_component_type_code
24700       ,p_accounting_line_appl_id    => l_component_appl_id
24701       ,p_amb_context_code           => l_amb_context_code
24702       ,p_entity_code                => l_entity_code
24703       ,p_event_class_code           => l_event_class_code);
24704    --
24705    -- set accounting class
24706    --
24707    xla_ae_lines_pkg.SetAcctClass(
24708            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
24709          , p_ae_header_id           => l_ae_header_id
24710          );
24711 
24712    --
24713    -- set rounding class
24714    --
24715    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24719    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24716                       'ACCOUNTSPAYABLE';
24717 
24718    --
24720    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24721    --
24722    -- bulk performance
24723    --
24724    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24725 
24726    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24727       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24728 
24729    -- 4955764
24730    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24731       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24732 
24733    -- 4458381 Public Sector Enh
24734    
24735    --
24736    -- set accounting attributes for the line type
24737    --
24738    l_entered_amt_idx := 24;
24739    l_accted_amt_idx  := 29;
24740    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
24741    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24742    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
24743    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
24744    l_rec_acct_attrs.array_num_value(2)  := 
24745 xla_ae_sources_pkg.GetSystemSourceNum(
24746    p_source_code           => 'XLA_EVENT_APPL_ID'
24747  , p_source_type_code      => 'Y'
24748  , p_source_application_id =>  602
24749 );
24750    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
24751    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
24752    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
24753    l_rec_acct_attrs.array_char_value(4)  := 
24754 xla_ae_sources_pkg.GetSystemSourceChar(
24755    p_source_code           => 'XLA_ENTITY_CODE'
24756  , p_source_type_code      => 'Y'
24757  , p_source_application_id =>  602
24758 );
24759    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
24760    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
24761    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
24762    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
24763    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
24764    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
24765    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
24766    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
24767    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
24768    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
24769    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
24770    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
24771    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
24772    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
24773    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
24774    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
24775    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
24776    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
24777    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
24778    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
24779    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
24780    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
24781    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
24782    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
24783    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
24784    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
24785    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
24786    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
24787    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
24788    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
24789    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
24790    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
24791    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
24792    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
24793    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
24794    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
24795    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
24796    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
24797    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
24798    l_rec_acct_attrs.array_num_value(24)  := p_source_55;
24799    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
24800    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
24801    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
24802    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
24803    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
24804    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
24805    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
24806    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
24807    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
24808    l_rec_acct_attrs.array_num_value(29)  := p_source_56;
24809    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
24810    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
24811    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
24815    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
24812    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
24813    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
24814    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
24816    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
24817    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
24818    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
24819    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
24820    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
24821    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
24822    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
24823    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
24824    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
24825    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
24826    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
24827    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
24828    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
24829    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
24830    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
24831    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
24832    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
24833    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
24834    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
24835    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
24836    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
24837    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
24838    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
24839 
24840    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24841    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24842 
24843    ---------------------------------------------------------------------------------------------------------------
24844    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24845    ---------------------------------------------------------------------------------------------------------------
24846    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24847 
24848    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24849    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24850 
24851    IF xla_accounting_cache_pkg.GetValueChar
24852          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24853          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24854    AND l_bflow_method_code = 'PRIOR_ENTRY'
24855 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24856    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24857          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24858        )
24859    THEN
24860          xla_ae_lines_pkg.BflowUpgEntry
24861            (p_business_method_code    => l_bflow_method_code
24862            ,p_business_class_code     => l_bflow_class_code
24863            ,p_balance_type            => l_balance_type_code);
24864    ELSE
24865       NULL;
24866 -- No business flow processing for business flow method of NONE.
24867    END IF;
24868 
24869    --
24870    -- call analytical criteria
24871    --
24872    
24873    --
24874    -- call description
24875    --
24876    
24877 xla_ae_lines_pkg.SetLineDescription(
24878    p_ae_header_id => l_ae_header_id
24879   ,p_description  => Description_2 (
24880      p_application_id         => p_application_id
24881    , p_ae_header_id           => l_ae_header_id 
24882 , p_source_1 => p_source_1
24883    )
24884 );
24885 
24886 
24887    --
24888    -- call ADRs
24889    -- Bug 4922099
24890    --
24891    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24892         (NVL(l_actual_upg_option, 'N') = 'O') OR
24893         (NVL(l_enc_upg_option, 'N') = 'O')
24894       )
24895    THEN
24896    NULL;
24897    --
24898    --
24899    
24900   l_ccid := AcctDerRule_3(
24901            p_application_id           => p_application_id
24902          , p_ae_header_id             => l_ae_header_id 
24903 , p_source_2 => p_source_2
24904          , x_transaction_coa_id       => l_adr_transaction_coa_id
24905          , x_accounting_coa_id        => l_adr_accounting_coa_id
24906          , x_value_type_code          => l_adr_value_type_code
24907          , p_side                     => 'NA'
24908    );
24909 
24910    xla_ae_lines_pkg.set_ccid(
24911     p_code_combination_id          => l_ccid
24912   , p_value_type_code              => l_adr_value_type_code
24913   , p_transaction_coa_id           => l_adr_transaction_coa_id
24914   , p_accounting_coa_id            => l_adr_accounting_coa_id
24915   , p_adr_code                     => 'AP_INVOICE_DIST'
24916   , p_adr_type_code                => 'S'
24917   , p_component_type               => l_component_type
24918   , p_component_code               => l_component_code
24919   , p_component_type_code          => l_component_type_code
24920   , p_component_appl_id            => l_component_appl_id
24921   , p_amb_context_code             => l_amb_context_code
24922   , p_side                         => 'NA'
24923   );
24924 
24925 
24929 , p_source_4 => p_source_4
24926    l_segment := AcctDerRule_8(
24927            p_application_id           => p_application_id
24928          , p_ae_header_id             => l_ae_header_id 
24930 , p_source_5 => p_source_5
24931 , p_source_6 => p_source_6
24932          , x_transaction_coa_id       => l_adr_transaction_coa_id
24933          , x_accounting_coa_id        => l_adr_accounting_coa_id
24934          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
24935          , x_flex_value_set_id        => l_adr_flex_value_set_id
24936          , x_value_type_code          => l_adr_value_type_code
24937          , x_value_combination_id     => l_adr_value_combination_id
24938          , x_value_segment_code       => l_adr_value_segment_code
24939          , p_side                     => 'NA'
24940          , p_override_seg_flag        => 'Y'
24941    );
24942 
24943    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
24944 
24945       xla_ae_lines_pkg.set_segment(
24946           p_to_segment_code         => 'GL_ACCOUNT'
24947         , p_segment_value           => l_segment
24948         , p_from_segment_code       => l_adr_value_segment_code
24949         , p_from_combination_id     => l_adr_value_combination_id
24950         , p_value_type_code         => l_adr_value_type_code
24951         , p_transaction_coa_id      => l_adr_transaction_coa_id
24952         , p_accounting_coa_id       => l_adr_accounting_coa_id
24953         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
24954         , p_flex_value_set_id       => l_adr_flex_value_set_id
24955         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
24956         , p_adr_type_code           => 'S'
24957         , p_component_type          => l_component_type
24958         , p_component_code          => l_component_code
24959         , p_component_type_code     => l_component_type_code
24960         , p_component_appl_id       => l_component_appl_id
24961         , p_amb_context_code        => l_amb_context_code
24962         , p_entity_code             => 'AP_INVOICES'
24963         , p_event_class_code        => 'INVOICES'
24964         , p_side                    => 'NA'
24965         );
24966 
24967   END IF;
24968 
24969    --
24970    --
24971    END IF;
24972    --
24973    -- Bug 4922099
24974    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24975           (NVL(l_enc_upg_option, 'N') = 'O')
24976         ) AND
24977         (l_bflow_method_code = 'PRIOR_ENTRY')
24978       )
24979    THEN
24980       IF
24981       --
24982       1 = 2
24983       --
24984       THEN
24985       xla_accounting_err_pkg.build_message
24986                                     (p_appli_s_name            => 'XLA'
24987                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24988                                     ,p_token_1                 => 'LINE_NUMBER'
24989                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24990                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24991                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24992                                                                              l_component_type
24993                                                                             ,l_component_code
24994                                                                             ,l_component_type_code
24995                                                                             ,l_component_appl_id
24996                                                                             ,l_amb_context_code
24997                                                                             ,l_entity_code
24998                                                                             ,l_event_class_code
24999                                                                            )
25000                                     ,p_token_3                 => 'OWNER'
25001                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25002                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25003                                                                           ,p_lookup_code    => l_component_type_code
25004                                                                          )
25005                                     ,p_token_4                 => 'PRODUCT_NAME'
25006                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25007                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25008                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25009                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25010                                     ,p_ae_header_id            =>  NULL
25011                                        );
25012 
25013         IF (C_LEVEL_ERROR>= g_log_level) THEN
25014                  trace
25015                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25016                       ,p_level    => C_LEVEL_ERROR
25017                       ,p_module   => l_log_module);
25018         END IF;
25019       END IF;
25020    END IF;
25021    --
25022    --
25023    ------------------------------------------------------------------------------------------------
25024    -- 4219869 Business Flow
25028    XLA_AE_LINES_PKG.ValidateCurrentLine;
25025    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25026    -- Prior Entry.  Currently, the following code is always generated.
25027    ------------------------------------------------------------------------------------------------
25029 
25030    ------------------------------------------------------------------------------------
25031    -- 4219869 Business Flow
25032    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25033    ------------------------------------------------------------------------------------
25034    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25035 
25036    ----------------------------------------------------------------------------------
25037    -- 4219869 Business Flow
25038    -- Update journal entry status -- Need to generate this within IF <condition>
25039    ----------------------------------------------------------------------------------
25040    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25041          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25042          ,p_balance_type_code => l_balance_type_code
25043          );
25044 
25045    -------------------------------------------------------------------------------------------
25046    -- 4262811 - Generate the Accrual Reversal lines
25047    -------------------------------------------------------------------------------------------
25048    BEGIN
25049       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25050                               (g_array_event(p_event_id).array_value_num('header_index'));
25051       IF l_acc_rev_flag IS NULL THEN
25052          l_acc_rev_flag := 'N';
25053       END IF;
25054    EXCEPTION
25055       WHEN OTHERS THEN
25056          l_acc_rev_flag := 'N';
25057    END;
25058    --
25059    IF (l_acc_rev_flag = 'Y') THEN
25060 
25061        -- 4645092  ------------------------------------------------------------------------------
25062        -- To allow MPA report to determine if it should generate report process
25063        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25064        ------------------------------------------------------------------------------------------
25065 
25066        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25067        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25068    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25069    -- call ADRs
25070    -- Bug 4922099
25071    --
25072    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25073         (NVL(l_actual_upg_option, 'N') = 'O') OR
25074         (NVL(l_enc_upg_option, 'N') = 'O')
25075       )
25076    THEN
25077    NULL;
25078    --
25079    --
25080    
25081   l_ccid := AcctDerRule_3(
25082            p_application_id           => p_application_id
25083          , p_ae_header_id             => l_ae_header_id 
25084 , p_source_2 => p_source_2
25085          , x_transaction_coa_id       => l_adr_transaction_coa_id
25086          , x_accounting_coa_id        => l_adr_accounting_coa_id
25087          , x_value_type_code          => l_adr_value_type_code
25088          , p_side                     => 'NA'
25089    );
25090 
25091    xla_ae_lines_pkg.set_ccid(
25092     p_code_combination_id          => l_ccid
25093   , p_value_type_code              => l_adr_value_type_code
25094   , p_transaction_coa_id           => l_adr_transaction_coa_id
25095   , p_accounting_coa_id            => l_adr_accounting_coa_id
25096   , p_adr_code                     => 'AP_INVOICE_DIST'
25097   , p_adr_type_code                => 'S'
25098   , p_component_type               => l_component_type
25099   , p_component_code               => l_component_code
25100   , p_component_type_code          => l_component_type_code
25101   , p_component_appl_id            => l_component_appl_id
25102   , p_amb_context_code             => l_amb_context_code
25103   , p_side                         => 'NA'
25104   );
25105 
25106 
25107    l_segment := AcctDerRule_8(
25108            p_application_id           => p_application_id
25109          , p_ae_header_id             => l_ae_header_id 
25110 , p_source_4 => p_source_4
25111 , p_source_5 => p_source_5
25112 , p_source_6 => p_source_6
25113          , x_transaction_coa_id       => l_adr_transaction_coa_id
25114          , x_accounting_coa_id        => l_adr_accounting_coa_id
25115          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
25116          , x_flex_value_set_id        => l_adr_flex_value_set_id
25117          , x_value_type_code          => l_adr_value_type_code
25118          , x_value_combination_id     => l_adr_value_combination_id
25119          , x_value_segment_code       => l_adr_value_segment_code
25120          , p_side                     => 'NA'
25121          , p_override_seg_flag        => 'Y'
25122    );
25123 
25124    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
25125 
25126       xla_ae_lines_pkg.set_segment(
25127           p_to_segment_code         => 'GL_ACCOUNT'
25128         , p_segment_value           => l_segment
25129         , p_from_segment_code       => l_adr_value_segment_code
25130         , p_from_combination_id     => l_adr_value_combination_id
25131         , p_value_type_code         => l_adr_value_type_code
25132         , p_transaction_coa_id      => l_adr_transaction_coa_id
25133         , p_accounting_coa_id       => l_adr_accounting_coa_id
25134         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
25138         , p_component_type          => l_component_type
25135         , p_flex_value_set_id       => l_adr_flex_value_set_id
25136         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
25137         , p_adr_type_code           => 'S'
25139         , p_component_code          => l_component_code
25140         , p_component_type_code     => l_component_type_code
25141         , p_component_appl_id       => l_component_appl_id
25142         , p_amb_context_code        => l_amb_context_code
25143         , p_entity_code             => 'AP_INVOICES'
25144         , p_event_class_code        => 'INVOICES'
25145         , p_side                    => 'NA'
25146         );
25147 
25148   END IF;
25149 
25150    --
25151    --
25152    END IF;
25153 
25154        --
25155        -- Update the line information that should be overwritten
25156        --
25157        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25158                                          p_header_num   => 1);
25159        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25160 
25161        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25162 
25163        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25164           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25165        END IF;
25166 
25167       --
25168       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25169       --
25170       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25171           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25172       ELSE
25173           ---------------------------------------------------------------------------------------------------
25174           -- 4262811a Switch Sign
25175           ---------------------------------------------------------------------------------------------------
25176           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25177           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25178                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25179           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25180                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25181           -- 5132302
25182           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25183                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25184 
25185       END IF;
25186 
25187       -- 4955764
25188       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25190 
25191 
25192       XLA_AE_LINES_PKG.ValidateCurrentLine;
25193       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25194 
25195       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25196                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25197                ,p_balance_type_code => l_balance_type_code);
25198 
25199    END IF;
25200 
25201    -----------------------------------------------------------------------------------------
25202    -- 4262811 Multiperiod Accounting
25203    -----------------------------------------------------------------------------------------
25204      -- No MPA option is assigned.
25205 
25206 
25207 END IF;
25208 END IF;
25209 --
25210 
25211 --
25212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25213    trace
25214       (p_msg      => 'END of AcctLineType_45'
25215       ,p_level    => C_LEVEL_PROCEDURE
25216       ,p_module   => l_log_module);
25217 END IF;
25218 --
25219 EXCEPTION
25220   WHEN xla_exceptions_pkg.application_exception THEN
25221       RAISE;
25222   WHEN OTHERS THEN
25223        xla_exceptions_pkg.raise_message
25224            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_45');
25225 END AcctLineType_45;
25226 --
25227 
25228 ---------------------------------------
25229 --
25230 -- PRIVATE FUNCTION
25231 --         AcctLineType_46
25232 --
25233 ---------------------------------------
25234 PROCEDURE AcctLineType_46 (
25235   p_application_id        IN NUMBER
25236  ,p_event_id              IN NUMBER
25237  ,p_calculate_acctd_flag  IN VARCHAR2
25238  ,p_calculate_g_l_flag    IN VARCHAR2
25239  ,p_actual_flag           IN OUT VARCHAR2
25240  ,p_balance_type_code     OUT VARCHAR2
25241  ,p_gain_or_loss_ref      OUT VARCHAR2
25242  
25243 --Invoice Distribution Description
25244  , p_source_1            IN VARCHAR2
25245 --Invoice Distribution Account
25246  , p_source_2            IN NUMBER
25247 --Federal Fund Category
25248  , p_source_4            IN VARCHAR2
25249 --Federal Fund Expired Status
25250  , p_source_5            IN VARCHAR2
25251 --Federal Fund Category Description
25252  , p_source_6            IN VARCHAR2
25253 --Invoice Distribution Type
25254  , p_source_8            IN VARCHAR2
25255  , p_source_8_meaning    IN VARCHAR2
25259  , p_source_17            IN VARCHAR2
25256 --Accounting Reversal Indicator
25257  , p_source_15            IN VARCHAR2
25258 --Distribution Link Type
25260 --Allocation to Main Distribution Identifier
25261  , p_source_19            IN NUMBER
25262 --Invoice Identifier
25263  , p_source_20            IN NUMBER
25264 --Business Flow Accounts Payable Application Identifier
25265  , p_source_21            IN NUMBER
25266 --Business Flow Invoice Distribution Type
25267  , p_source_22            IN VARCHAR2
25268 --Business Flow Invoice Entity Code
25269  , p_source_23            IN VARCHAR2
25270 --Business Flow Invoice Distribution Identifier
25271  , p_source_24            IN NUMBER
25272 --Business Flow Invoice Identifier
25273  , p_source_25            IN NUMBER
25274 --Invoice Distribution Identifier
25275  , p_source_26            IN NUMBER
25276 --Payables Encumbrance Upgrade Credit Account
25277  , p_source_27            IN NUMBER
25278 --Payables Encumbrance Upgrade Credit Amount
25279  , p_source_28            IN NUMBER
25280 --Invoice Currency Code
25281  , p_source_29            IN VARCHAR2
25282 --Payables Encumbrance Upgrade Credit Base Amount
25283  , p_source_30            IN NUMBER
25284 --Payables Encumbrance Upgrade Debit Account
25285  , p_source_31            IN NUMBER
25286 --Payables Encumbrance Upgrade Debit Amount
25287  , p_source_32            IN NUMBER
25288 --Payables Encumbrance Upgrade Debit Base Amount
25289  , p_source_33            IN NUMBER
25290 --Payables Encumbrance Upgrade Option
25291  , p_source_34            IN VARCHAR2
25292 --Invoice Exchange Date
25293  , p_source_36            IN DATE
25294 --Invoice Exchange Rate
25295  , p_source_37            IN NUMBER
25296 --Invoice Exchange Rate Type
25297  , p_source_38            IN VARCHAR2
25298 --Deferred Accounting End Date
25299  , p_source_39            IN DATE
25300 --Deferred Accounting Option
25301  , p_source_40            IN VARCHAR2
25302 --Deferred Accounting Start Date
25303  , p_source_41            IN DATE
25304 --Override Accounted Amount Indicator
25305  , p_source_42            IN VARCHAR2
25306  , p_source_42_meaning    IN VARCHAR2
25307 --Invoice Supplier Identifier
25308  , p_source_43            IN NUMBER
25309 --Invoice Supplier Site Identifier
25310  , p_source_44            IN NUMBER
25311 --Third Party Type
25312  , p_source_45            IN VARCHAR2
25313 --Parent Reversal Identifier
25314  , p_source_46            IN NUMBER
25315 --Invoice Distribution Statistical Amount
25316  , p_source_47            IN NUMBER
25317 --Invoice Distribution Tax Line Identifier
25318  , p_source_48            IN NUMBER
25319 --Invoice Distribution Tax Distribution Identifier from Tax
25320  , p_source_49            IN NUMBER
25321 --Invoice Distribution Summary Tax Line Identifier
25322  , p_source_50            IN NUMBER
25323 --Payables Upgrade Credit Encumbrance Type Identifier
25324  , p_source_51            IN NUMBER
25325 --Payables Upgrade Debit Encumbrance Type Identifier
25326  , p_source_52            IN NUMBER
25327 --Invoice Distribution Amount
25328  , p_source_55            IN NUMBER
25329 --Amount for Variance Amount
25330  , p_source_59            IN NUMBER
25331 --Purchasing Encumbrance Option
25332  , p_source_60            IN VARCHAR2
25333  , p_source_60_meaning    IN VARCHAR2
25334 --Variance Amount in Ledger Currency
25335  , p_source_61            IN NUMBER
25336 )
25337 IS
25338 
25339 l_component_type              VARCHAR2(80);
25340 l_component_code              VARCHAR2(30);
25341 l_component_type_code         VARCHAR2(1);
25342 l_component_appl_id           INTEGER;
25343 l_amb_context_code            VARCHAR2(30);
25344 l_entity_code                 VARCHAR2(30);
25345 l_event_class_code            VARCHAR2(30);
25346 l_ae_header_id                NUMBER;
25347 l_event_type_code             VARCHAR2(30);
25348 l_line_definition_code        VARCHAR2(30);
25349 l_line_definition_owner_code  VARCHAR2(1);
25350 --
25351 -- adr variables
25352 l_segment                     VARCHAR2(30);
25353 l_ccid                        NUMBER;
25354 l_adr_transaction_coa_id      NUMBER;
25355 l_adr_accounting_coa_id       NUMBER;
25356 l_adr_flexfield_segment_code  VARCHAR2(30);
25357 l_adr_flex_value_set_id       NUMBER;
25358 l_adr_value_type_code         VARCHAR2(30);
25359 l_adr_value_combination_id    NUMBER;
25360 l_adr_value_segment_code      VARCHAR2(30);
25361 
25362 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25363 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25364 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25365 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25366 
25367 -- 4262811 Variables ------------------------------------------------------------------------------------------
25368 l_entered_amt_idx             NUMBER;
25369 l_accted_amt_idx              NUMBER;
25370 l_acc_rev_flag                VARCHAR2(1);
25371 l_accrual_line_num            NUMBER;
25372 l_tmp_amt                     NUMBER;
25373 l_acc_rev_natural_side_code   VARCHAR2(1);
25374 
25375 l_num_entries                 NUMBER;
25376 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25377 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25378 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25382 
25379 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25380 l_recog_line_1                NUMBER;
25381 l_recog_line_2                NUMBER;
25383 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25384 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25385 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25386 
25387 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25388 
25389 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25390 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25391 
25392 ---------------------------------------------------------------------------------------------------------------
25393 
25394 
25395 --
25396 -- bulk performance
25397 --
25398 l_balance_type_code           VARCHAR2(1);
25399 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25400 l_log_module                  VARCHAR2(240);
25401 
25402 --
25403 -- Upgrade strategy
25404 --
25405 l_actual_upg_option           VARCHAR2(1);
25406 l_enc_upg_option           VARCHAR2(1);
25407 
25408 --
25409 BEGIN
25410 --
25411 IF g_log_enabled THEN
25412       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
25413 END IF;
25414 --
25415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25416 
25417       trace
25418          (p_msg      => 'BEGIN of AcctLineType_46'
25419          ,p_level    => C_LEVEL_PROCEDURE
25420          ,p_module   => l_log_module);
25421 
25422 END IF;
25423 --
25424 l_component_type             := 'AMB_JLT';
25425 l_component_code             := 'FV_AP_INV_AMT_VAR_CR';
25426 l_component_type_code        := 'S';
25427 l_component_appl_id          :=  200;
25428 l_amb_context_code           := 'DEFAULT';
25429 l_entity_code                := 'AP_INVOICES';
25430 l_event_class_code           := 'INVOICES';
25431 l_event_type_code            := 'INVOICES_ALL';
25432 l_line_definition_owner_code := 'S';
25433 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
25434 --
25435 l_balance_type_code          := 'A';
25436 l_segment                     := NULL;
25437 l_ccid                        := NULL;
25438 l_adr_transaction_coa_id      := NULL;
25439 l_adr_accounting_coa_id       := NULL;
25440 l_adr_flexfield_segment_code  := NULL;
25441 l_adr_flex_value_set_id       := NULL;
25442 l_adr_value_type_code         := NULL;
25443 l_adr_value_combination_id    := NULL;
25444 l_adr_value_segment_code      := NULL;
25445 
25446 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25447 l_bflow_class_code           := '';    -- 4219869 Business Flow
25448 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25449 l_budgetary_control_flag     := 'Y';
25450 
25451 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25452 l_bflow_applied_to_amt       := NULL; -- 5132302
25453 l_entered_amt_idx            := NULL;          -- 4262811
25454 l_accted_amt_idx             := NULL;          -- 4262811
25455 l_acc_rev_flag               := NULL;          -- 4262811
25456 l_accrual_line_num           := NULL;          -- 4262811
25457 l_tmp_amt                    := NULL;          -- 4262811
25458 --
25459  
25460 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25461     l_balance_type_code <> 'B' THEN
25462 IF NVL(p_source_8,'
25463 ') <>  'ACCRUAL' AND 
25464 p_source_59 IS NOT NULL AND 
25465 NVL(p_source_60,'
25466 ') =  'Y'
25467  THEN 
25468 
25469    --
25470    XLA_AE_LINES_PKG.SetNewLine;
25471 
25472    p_balance_type_code          := l_balance_type_code;
25473    -- set the flag so later we will know whether the gain loss line needs to be created
25474    
25475    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25476      p_actual_flag :='A';
25477    END IF;
25478 
25479    --
25480    -- bulk performance
25481    --
25482    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25483                                       p_header_num   => 0); -- 4262811
25484    --
25485    -- set accounting line options
25486    --
25487    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25488            p_natural_side_code          => 'C'
25489          , p_gain_or_loss_flag          => 'N'
25490          , p_gl_transfer_mode_code      => 'S'
25491          , p_acct_entry_type_code       => 'A'
25492          , p_switch_side_flag           => 'N'
25493          , p_merge_duplicate_code       => 'N'
25494          );
25495    --
25496    l_acc_rev_natural_side_code := 'D';  -- 4262811
25497    -- 
25498    --
25499    -- set accounting line type info
25500    --
25501    xla_ae_lines_pkg.SetAcctLineType
25502       (p_component_type             => l_component_type
25503       ,p_event_type_code            => l_event_type_code
25504       ,p_line_definition_owner_code => l_line_definition_owner_code
25505       ,p_line_definition_code       => l_line_definition_code
25506       ,p_accounting_line_code       => l_component_code
25507       ,p_accounting_line_type_code  => l_component_type_code
25508       ,p_accounting_line_appl_id    => l_component_appl_id
25509       ,p_amb_context_code           => l_amb_context_code
25510       ,p_entity_code                => l_entity_code
25511       ,p_event_class_code           => l_event_class_code);
25515    xla_ae_lines_pkg.SetAcctClass(
25512    --
25513    -- set accounting class
25514    --
25516            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
25517          , p_ae_header_id           => l_ae_header_id
25518          );
25519 
25520    --
25521    -- set rounding class
25522    --
25523    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25524                       'ACCOUNTSPAYABLE';
25525 
25526    --
25527    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25528    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25529    --
25530    -- bulk performance
25531    --
25532    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25533 
25534    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25535       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25536 
25537    -- 4955764
25538    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25539       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25540 
25541    -- 4458381 Public Sector Enh
25542    
25543    --
25544    -- set accounting attributes for the line type
25545    --
25546    l_entered_amt_idx := 24;
25547    l_accted_amt_idx  := 29;
25548    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
25549    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25550    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
25551    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
25552    l_rec_acct_attrs.array_num_value(2)  := 
25553 xla_ae_sources_pkg.GetSystemSourceNum(
25554    p_source_code           => 'XLA_EVENT_APPL_ID'
25555  , p_source_type_code      => 'Y'
25556  , p_source_application_id =>  602
25557 );
25558    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
25559    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
25560    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
25561    l_rec_acct_attrs.array_char_value(4)  := 
25562 xla_ae_sources_pkg.GetSystemSourceChar(
25563    p_source_code           => 'XLA_ENTITY_CODE'
25564  , p_source_type_code      => 'Y'
25565  , p_source_application_id =>  602
25566 );
25567    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
25568    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
25569    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
25570    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
25571    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
25572    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
25573    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
25574    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
25575    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
25576    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
25577    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
25578    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
25579    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
25580    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
25581    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
25582    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
25583    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
25584    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
25585    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
25586    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
25587    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
25588    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
25589    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
25590    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
25591    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
25592    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
25593    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
25594    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
25595    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
25596    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
25597    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
25598    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
25599    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
25600    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
25601    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
25602    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
25603    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
25604    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
25605    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
25606    l_rec_acct_attrs.array_num_value(24)  := p_source_59;
25607    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
25608    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
25609    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
25610    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
25611    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
25612    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
25613    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
25617    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
25614    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
25615    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
25616    l_rec_acct_attrs.array_num_value(29)  := p_source_61;
25618    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
25619    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
25620    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
25621    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
25622    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
25623    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
25624    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
25625    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
25626    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
25627    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
25628    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
25629    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
25630    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
25631    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
25632    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
25633    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
25634    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
25635    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
25636    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
25637    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
25638    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
25639    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
25640    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
25641    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
25642    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
25643    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
25644    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
25645    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
25646    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
25647 
25648    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25649    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25650 
25651    ---------------------------------------------------------------------------------------------------------------
25652    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25653    ---------------------------------------------------------------------------------------------------------------
25654    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25655 
25656    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25657    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25658 
25659    IF xla_accounting_cache_pkg.GetValueChar
25660          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25661          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25662    AND l_bflow_method_code = 'PRIOR_ENTRY'
25663 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25664    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25665          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25666        )
25667    THEN
25668          xla_ae_lines_pkg.BflowUpgEntry
25669            (p_business_method_code    => l_bflow_method_code
25670            ,p_business_class_code     => l_bflow_class_code
25671            ,p_balance_type            => l_balance_type_code);
25672    ELSE
25673       NULL;
25674 -- No business flow processing for business flow method of NONE.
25675    END IF;
25676 
25677    --
25678    -- call analytical criteria
25679    --
25680    
25681    --
25682    -- call description
25683    --
25684    
25685 xla_ae_lines_pkg.SetLineDescription(
25686    p_ae_header_id => l_ae_header_id
25687   ,p_description  => Description_2 (
25688      p_application_id         => p_application_id
25689    , p_ae_header_id           => l_ae_header_id 
25690 , p_source_1 => p_source_1
25691    )
25692 );
25693 
25694 
25695    --
25696    -- call ADRs
25697    -- Bug 4922099
25698    --
25699    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25700         (NVL(l_actual_upg_option, 'N') = 'O') OR
25701         (NVL(l_enc_upg_option, 'N') = 'O')
25702       )
25703    THEN
25704    NULL;
25705    --
25706    --
25707    
25708   l_ccid := AcctDerRule_3(
25709            p_application_id           => p_application_id
25710          , p_ae_header_id             => l_ae_header_id 
25711 , p_source_2 => p_source_2
25712          , x_transaction_coa_id       => l_adr_transaction_coa_id
25713          , x_accounting_coa_id        => l_adr_accounting_coa_id
25714          , x_value_type_code          => l_adr_value_type_code
25715          , p_side                     => 'NA'
25716    );
25717 
25718    xla_ae_lines_pkg.set_ccid(
25719     p_code_combination_id          => l_ccid
25720   , p_value_type_code              => l_adr_value_type_code
25721   , p_transaction_coa_id           => l_adr_transaction_coa_id
25722   , p_accounting_coa_id            => l_adr_accounting_coa_id
25723   , p_adr_code                     => 'AP_INVOICE_DIST'
25727   , p_component_type_code          => l_component_type_code
25724   , p_adr_type_code                => 'S'
25725   , p_component_type               => l_component_type
25726   , p_component_code               => l_component_code
25728   , p_component_appl_id            => l_component_appl_id
25729   , p_amb_context_code             => l_amb_context_code
25730   , p_side                         => 'NA'
25731   );
25732 
25733 
25734    l_segment := AcctDerRule_8(
25735            p_application_id           => p_application_id
25736          , p_ae_header_id             => l_ae_header_id 
25737 , p_source_4 => p_source_4
25738 , p_source_5 => p_source_5
25739 , p_source_6 => p_source_6
25740          , x_transaction_coa_id       => l_adr_transaction_coa_id
25741          , x_accounting_coa_id        => l_adr_accounting_coa_id
25742          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
25743          , x_flex_value_set_id        => l_adr_flex_value_set_id
25744          , x_value_type_code          => l_adr_value_type_code
25745          , x_value_combination_id     => l_adr_value_combination_id
25746          , x_value_segment_code       => l_adr_value_segment_code
25747          , p_side                     => 'NA'
25748          , p_override_seg_flag        => 'Y'
25749    );
25750 
25751    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
25752 
25753       xla_ae_lines_pkg.set_segment(
25754           p_to_segment_code         => 'GL_ACCOUNT'
25755         , p_segment_value           => l_segment
25756         , p_from_segment_code       => l_adr_value_segment_code
25757         , p_from_combination_id     => l_adr_value_combination_id
25758         , p_value_type_code         => l_adr_value_type_code
25759         , p_transaction_coa_id      => l_adr_transaction_coa_id
25760         , p_accounting_coa_id       => l_adr_accounting_coa_id
25761         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
25762         , p_flex_value_set_id       => l_adr_flex_value_set_id
25763         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
25764         , p_adr_type_code           => 'S'
25765         , p_component_type          => l_component_type
25766         , p_component_code          => l_component_code
25767         , p_component_type_code     => l_component_type_code
25768         , p_component_appl_id       => l_component_appl_id
25769         , p_amb_context_code        => l_amb_context_code
25770         , p_entity_code             => 'AP_INVOICES'
25771         , p_event_class_code        => 'INVOICES'
25772         , p_side                    => 'NA'
25773         );
25774 
25775   END IF;
25776 
25777    --
25778    --
25779    END IF;
25780    --
25781    -- Bug 4922099
25782    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25783           (NVL(l_enc_upg_option, 'N') = 'O')
25784         ) AND
25785         (l_bflow_method_code = 'PRIOR_ENTRY')
25786       )
25787    THEN
25788       IF
25789       --
25790       1 = 2
25791       --
25792       THEN
25793       xla_accounting_err_pkg.build_message
25794                                     (p_appli_s_name            => 'XLA'
25795                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25796                                     ,p_token_1                 => 'LINE_NUMBER'
25797                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25798                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25799                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25800                                                                              l_component_type
25801                                                                             ,l_component_code
25802                                                                             ,l_component_type_code
25803                                                                             ,l_component_appl_id
25804                                                                             ,l_amb_context_code
25805                                                                             ,l_entity_code
25806                                                                             ,l_event_class_code
25807                                                                            )
25808                                     ,p_token_3                 => 'OWNER'
25809                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25810                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25811                                                                           ,p_lookup_code    => l_component_type_code
25812                                                                          )
25813                                     ,p_token_4                 => 'PRODUCT_NAME'
25814                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25815                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25816                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25817                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25818                                     ,p_ae_header_id            =>  NULL
25819                                        );
25820 
25821         IF (C_LEVEL_ERROR>= g_log_level) THEN
25822                  trace
25823                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25827       END IF;
25824                       ,p_level    => C_LEVEL_ERROR
25825                       ,p_module   => l_log_module);
25826         END IF;
25828    END IF;
25829    --
25830    --
25831    ------------------------------------------------------------------------------------------------
25832    -- 4219869 Business Flow
25833    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25834    -- Prior Entry.  Currently, the following code is always generated.
25835    ------------------------------------------------------------------------------------------------
25836    XLA_AE_LINES_PKG.ValidateCurrentLine;
25837 
25838    ------------------------------------------------------------------------------------
25839    -- 4219869 Business Flow
25840    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25841    ------------------------------------------------------------------------------------
25842    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25843 
25844    ----------------------------------------------------------------------------------
25845    -- 4219869 Business Flow
25846    -- Update journal entry status -- Need to generate this within IF <condition>
25847    ----------------------------------------------------------------------------------
25848    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25849          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25850          ,p_balance_type_code => l_balance_type_code
25851          );
25852 
25853    -------------------------------------------------------------------------------------------
25854    -- 4262811 - Generate the Accrual Reversal lines
25855    -------------------------------------------------------------------------------------------
25856    BEGIN
25857       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25858                               (g_array_event(p_event_id).array_value_num('header_index'));
25859       IF l_acc_rev_flag IS NULL THEN
25860          l_acc_rev_flag := 'N';
25861       END IF;
25862    EXCEPTION
25863       WHEN OTHERS THEN
25864          l_acc_rev_flag := 'N';
25865    END;
25866    --
25867    IF (l_acc_rev_flag = 'Y') THEN
25868 
25869        -- 4645092  ------------------------------------------------------------------------------
25870        -- To allow MPA report to determine if it should generate report process
25871        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25872        ------------------------------------------------------------------------------------------
25873 
25874        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25875        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25876    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25877    -- call ADRs
25878    -- Bug 4922099
25879    --
25880    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25881         (NVL(l_actual_upg_option, 'N') = 'O') OR
25882         (NVL(l_enc_upg_option, 'N') = 'O')
25883       )
25884    THEN
25885    NULL;
25886    --
25887    --
25888    
25889   l_ccid := AcctDerRule_3(
25890            p_application_id           => p_application_id
25891          , p_ae_header_id             => l_ae_header_id 
25892 , p_source_2 => p_source_2
25893          , x_transaction_coa_id       => l_adr_transaction_coa_id
25894          , x_accounting_coa_id        => l_adr_accounting_coa_id
25895          , x_value_type_code          => l_adr_value_type_code
25896          , p_side                     => 'NA'
25897    );
25898 
25899    xla_ae_lines_pkg.set_ccid(
25900     p_code_combination_id          => l_ccid
25901   , p_value_type_code              => l_adr_value_type_code
25902   , p_transaction_coa_id           => l_adr_transaction_coa_id
25903   , p_accounting_coa_id            => l_adr_accounting_coa_id
25904   , p_adr_code                     => 'AP_INVOICE_DIST'
25905   , p_adr_type_code                => 'S'
25906   , p_component_type               => l_component_type
25907   , p_component_code               => l_component_code
25908   , p_component_type_code          => l_component_type_code
25909   , p_component_appl_id            => l_component_appl_id
25910   , p_amb_context_code             => l_amb_context_code
25911   , p_side                         => 'NA'
25912   );
25913 
25914 
25915    l_segment := AcctDerRule_8(
25916            p_application_id           => p_application_id
25917          , p_ae_header_id             => l_ae_header_id 
25918 , p_source_4 => p_source_4
25919 , p_source_5 => p_source_5
25920 , p_source_6 => p_source_6
25921          , x_transaction_coa_id       => l_adr_transaction_coa_id
25922          , x_accounting_coa_id        => l_adr_accounting_coa_id
25923          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
25924          , x_flex_value_set_id        => l_adr_flex_value_set_id
25925          , x_value_type_code          => l_adr_value_type_code
25926          , x_value_combination_id     => l_adr_value_combination_id
25927          , x_value_segment_code       => l_adr_value_segment_code
25928          , p_side                     => 'NA'
25929          , p_override_seg_flag        => 'Y'
25930    );
25931 
25932    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
25933 
25934       xla_ae_lines_pkg.set_segment(
25935           p_to_segment_code         => 'GL_ACCOUNT'
25939         , p_value_type_code         => l_adr_value_type_code
25936         , p_segment_value           => l_segment
25937         , p_from_segment_code       => l_adr_value_segment_code
25938         , p_from_combination_id     => l_adr_value_combination_id
25940         , p_transaction_coa_id      => l_adr_transaction_coa_id
25941         , p_accounting_coa_id       => l_adr_accounting_coa_id
25942         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
25943         , p_flex_value_set_id       => l_adr_flex_value_set_id
25944         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
25945         , p_adr_type_code           => 'S'
25946         , p_component_type          => l_component_type
25947         , p_component_code          => l_component_code
25948         , p_component_type_code     => l_component_type_code
25949         , p_component_appl_id       => l_component_appl_id
25950         , p_amb_context_code        => l_amb_context_code
25951         , p_entity_code             => 'AP_INVOICES'
25952         , p_event_class_code        => 'INVOICES'
25953         , p_side                    => 'NA'
25954         );
25955 
25956   END IF;
25957 
25958    --
25959    --
25960    END IF;
25961 
25962        --
25963        -- Update the line information that should be overwritten
25964        --
25965        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25966                                          p_header_num   => 1);
25967        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25968 
25969        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25970 
25971        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25972           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25973        END IF;
25974 
25975       --
25976       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25977       --
25978       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25979           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25980       ELSE
25981           ---------------------------------------------------------------------------------------------------
25982           -- 4262811a Switch Sign
25983           ---------------------------------------------------------------------------------------------------
25984           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25985           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25986                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25987           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25988                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25989           -- 5132302
25990           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25991                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25992 
25993       END IF;
25994 
25995       -- 4955764
25996       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25997       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25998 
25999 
26000       XLA_AE_LINES_PKG.ValidateCurrentLine;
26001       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26002 
26003       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26004                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26005                ,p_balance_type_code => l_balance_type_code);
26006 
26007    END IF;
26008 
26009    -----------------------------------------------------------------------------------------
26010    -- 4262811 Multiperiod Accounting
26011    -----------------------------------------------------------------------------------------
26012      -- No MPA option is assigned.
26013 
26014 
26015 END IF;
26016 END IF;
26017 --
26018 
26019 --
26020 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26021    trace
26022       (p_msg      => 'END of AcctLineType_46'
26023       ,p_level    => C_LEVEL_PROCEDURE
26024       ,p_module   => l_log_module);
26025 END IF;
26026 --
26027 EXCEPTION
26028   WHEN xla_exceptions_pkg.application_exception THEN
26029       RAISE;
26030   WHEN OTHERS THEN
26031        xla_exceptions_pkg.raise_message
26032            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_46');
26033 END AcctLineType_46;
26034 --
26035 
26036 ---------------------------------------
26037 --
26038 -- PRIVATE FUNCTION
26039 --         AcctLineType_47
26040 --
26041 ---------------------------------------
26042 PROCEDURE AcctLineType_47 (
26043   p_application_id        IN NUMBER
26044  ,p_event_id              IN NUMBER
26045  ,p_calculate_acctd_flag  IN VARCHAR2
26046  ,p_calculate_g_l_flag    IN VARCHAR2
26047  ,p_actual_flag           IN OUT VARCHAR2
26048  ,p_balance_type_code     OUT VARCHAR2
26049  ,p_gain_or_loss_ref      OUT VARCHAR2
26050  
26051 --Invoice Distribution Description
26052  , p_source_1            IN VARCHAR2
26053 --Invoice Distribution Account
26057  , p_source_8_meaning    IN VARCHAR2
26054  , p_source_2            IN NUMBER
26055 --Invoice Distribution Type
26056  , p_source_8            IN VARCHAR2
26058 --Accounting Reversal Indicator
26059  , p_source_15            IN VARCHAR2
26060 --Distribution Link Type
26061  , p_source_17            IN VARCHAR2
26062 --Allocation to Main Distribution Identifier
26063  , p_source_19            IN NUMBER
26064 --Invoice Identifier
26065  , p_source_20            IN NUMBER
26066 --Business Flow Accounts Payable Application Identifier
26067  , p_source_21            IN NUMBER
26068 --Business Flow Invoice Distribution Type
26069  , p_source_22            IN VARCHAR2
26070 --Business Flow Invoice Entity Code
26071  , p_source_23            IN VARCHAR2
26072 --Business Flow Invoice Distribution Identifier
26073  , p_source_24            IN NUMBER
26074 --Business Flow Invoice Identifier
26075  , p_source_25            IN NUMBER
26076 --Invoice Distribution Identifier
26077  , p_source_26            IN NUMBER
26078 --Payables Encumbrance Upgrade Credit Account
26079  , p_source_27            IN NUMBER
26080 --Payables Encumbrance Upgrade Credit Amount
26081  , p_source_28            IN NUMBER
26082 --Invoice Currency Code
26083  , p_source_29            IN VARCHAR2
26084 --Payables Encumbrance Upgrade Credit Base Amount
26085  , p_source_30            IN NUMBER
26086 --Payables Encumbrance Upgrade Debit Account
26087  , p_source_31            IN NUMBER
26088 --Payables Encumbrance Upgrade Debit Amount
26089  , p_source_32            IN NUMBER
26090 --Payables Encumbrance Upgrade Debit Base Amount
26091  , p_source_33            IN NUMBER
26092 --Payables Encumbrance Upgrade Option
26093  , p_source_34            IN VARCHAR2
26094 --Invoice Exchange Date
26095  , p_source_36            IN DATE
26096 --Invoice Exchange Rate
26097  , p_source_37            IN NUMBER
26098 --Invoice Exchange Rate Type
26099  , p_source_38            IN VARCHAR2
26100 --Deferred Accounting End Date
26101  , p_source_39            IN DATE
26102 --Deferred Accounting Option
26103  , p_source_40            IN VARCHAR2
26104 --Deferred Accounting Start Date
26105  , p_source_41            IN DATE
26106 --Override Accounted Amount Indicator
26107  , p_source_42            IN VARCHAR2
26108  , p_source_42_meaning    IN VARCHAR2
26109 --Invoice Supplier Identifier
26110  , p_source_43            IN NUMBER
26111 --Invoice Supplier Site Identifier
26112  , p_source_44            IN NUMBER
26113 --Third Party Type
26114  , p_source_45            IN VARCHAR2
26115 --Parent Reversal Identifier
26116  , p_source_46            IN NUMBER
26117 --Invoice Distribution Statistical Amount
26118  , p_source_47            IN NUMBER
26119 --Invoice Distribution Tax Line Identifier
26120  , p_source_48            IN NUMBER
26121 --Invoice Distribution Tax Distribution Identifier from Tax
26122  , p_source_49            IN NUMBER
26123 --Invoice Distribution Summary Tax Line Identifier
26124  , p_source_50            IN NUMBER
26125 --Payables Upgrade Credit Encumbrance Type Identifier
26126  , p_source_51            IN NUMBER
26127 --Payables Upgrade Debit Encumbrance Type Identifier
26128  , p_source_52            IN NUMBER
26129 --Invoice Distribution Amount
26130  , p_source_55            IN NUMBER
26131 --Amount for Variance Amount
26132  , p_source_59            IN NUMBER
26133 --Purchasing Encumbrance Option
26134  , p_source_60            IN VARCHAR2
26135  , p_source_60_meaning    IN VARCHAR2
26136 --Variance Amount in Ledger Currency
26137  , p_source_61            IN NUMBER
26138 )
26139 IS
26140 
26141 l_component_type              VARCHAR2(80);
26142 l_component_code              VARCHAR2(30);
26143 l_component_type_code         VARCHAR2(1);
26144 l_component_appl_id           INTEGER;
26145 l_amb_context_code            VARCHAR2(30);
26146 l_entity_code                 VARCHAR2(30);
26147 l_event_class_code            VARCHAR2(30);
26148 l_ae_header_id                NUMBER;
26149 l_event_type_code             VARCHAR2(30);
26150 l_line_definition_code        VARCHAR2(30);
26151 l_line_definition_owner_code  VARCHAR2(1);
26152 --
26153 -- adr variables
26154 l_segment                     VARCHAR2(30);
26155 l_ccid                        NUMBER;
26156 l_adr_transaction_coa_id      NUMBER;
26157 l_adr_accounting_coa_id       NUMBER;
26158 l_adr_flexfield_segment_code  VARCHAR2(30);
26159 l_adr_flex_value_set_id       NUMBER;
26160 l_adr_value_type_code         VARCHAR2(30);
26161 l_adr_value_combination_id    NUMBER;
26162 l_adr_value_segment_code      VARCHAR2(30);
26163 
26164 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26165 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26166 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26167 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26168 
26169 -- 4262811 Variables ------------------------------------------------------------------------------------------
26170 l_entered_amt_idx             NUMBER;
26171 l_accted_amt_idx              NUMBER;
26172 l_acc_rev_flag                VARCHAR2(1);
26173 l_accrual_line_num            NUMBER;
26174 l_tmp_amt                     NUMBER;
26175 l_acc_rev_natural_side_code   VARCHAR2(1);
26176 
26177 l_num_entries                 NUMBER;
26178 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26182 l_recog_line_1                NUMBER;
26179 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26180 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26181 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26183 l_recog_line_2                NUMBER;
26184 
26185 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26186 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26187 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26188 
26189 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26190 
26191 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26192 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26193 
26194 ---------------------------------------------------------------------------------------------------------------
26195 
26196 
26197 --
26198 -- bulk performance
26199 --
26200 l_balance_type_code           VARCHAR2(1);
26201 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26202 l_log_module                  VARCHAR2(240);
26203 
26204 --
26205 -- Upgrade strategy
26206 --
26207 l_actual_upg_option           VARCHAR2(1);
26208 l_enc_upg_option           VARCHAR2(1);
26209 
26210 --
26211 BEGIN
26212 --
26213 IF g_log_enabled THEN
26214       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
26215 END IF;
26216 --
26217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26218 
26219       trace
26220          (p_msg      => 'BEGIN of AcctLineType_47'
26221          ,p_level    => C_LEVEL_PROCEDURE
26222          ,p_module   => l_log_module);
26223 
26224 END IF;
26225 --
26226 l_component_type             := 'AMB_JLT';
26227 l_component_code             := 'FV_AP_INV_AMT_VAR_DR';
26228 l_component_type_code        := 'S';
26229 l_component_appl_id          :=  200;
26230 l_amb_context_code           := 'DEFAULT';
26231 l_entity_code                := 'AP_INVOICES';
26232 l_event_class_code           := 'INVOICES';
26233 l_event_type_code            := 'INVOICES_ALL';
26234 l_line_definition_owner_code := 'S';
26235 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
26236 --
26237 l_balance_type_code          := 'A';
26238 l_segment                     := NULL;
26239 l_ccid                        := NULL;
26240 l_adr_transaction_coa_id      := NULL;
26241 l_adr_accounting_coa_id       := NULL;
26242 l_adr_flexfield_segment_code  := NULL;
26243 l_adr_flex_value_set_id       := NULL;
26244 l_adr_value_type_code         := NULL;
26245 l_adr_value_combination_id    := NULL;
26246 l_adr_value_segment_code      := NULL;
26247 
26248 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26249 l_bflow_class_code           := '';    -- 4219869 Business Flow
26250 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26251 l_budgetary_control_flag     := 'Y';
26252 
26253 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26254 l_bflow_applied_to_amt       := NULL; -- 5132302
26255 l_entered_amt_idx            := NULL;          -- 4262811
26256 l_accted_amt_idx             := NULL;          -- 4262811
26257 l_acc_rev_flag               := NULL;          -- 4262811
26258 l_accrual_line_num           := NULL;          -- 4262811
26259 l_tmp_amt                    := NULL;          -- 4262811
26260 --
26261  
26262 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26263     l_balance_type_code <> 'B' THEN
26264 IF NVL(p_source_8,'
26265 ') <>  'ACCRUAL' AND 
26266 p_source_59 IS NOT NULL AND 
26267 NVL(p_source_60,'
26268 ') =  'Y'
26269  THEN 
26270 
26271    --
26272    XLA_AE_LINES_PKG.SetNewLine;
26273 
26274    p_balance_type_code          := l_balance_type_code;
26275    -- set the flag so later we will know whether the gain loss line needs to be created
26276    
26277    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26278      p_actual_flag :='A';
26279    END IF;
26280 
26281    --
26282    -- bulk performance
26283    --
26284    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26285                                       p_header_num   => 0); -- 4262811
26286    --
26287    -- set accounting line options
26288    --
26289    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26290            p_natural_side_code          => 'D'
26291          , p_gain_or_loss_flag          => 'N'
26292          , p_gl_transfer_mode_code      => 'S'
26293          , p_acct_entry_type_code       => 'A'
26294          , p_switch_side_flag           => 'N'
26295          , p_merge_duplicate_code       => 'N'
26296          );
26297    --
26298    l_acc_rev_natural_side_code := 'C';  -- 4262811
26299    -- 
26300    --
26301    -- set accounting line type info
26302    --
26303    xla_ae_lines_pkg.SetAcctLineType
26304       (p_component_type             => l_component_type
26305       ,p_event_type_code            => l_event_type_code
26306       ,p_line_definition_owner_code => l_line_definition_owner_code
26307       ,p_line_definition_code       => l_line_definition_code
26308       ,p_accounting_line_code       => l_component_code
26309       ,p_accounting_line_type_code  => l_component_type_code
26310       ,p_accounting_line_appl_id    => l_component_appl_id
26311       ,p_amb_context_code           => l_amb_context_code
26315    -- set accounting class
26312       ,p_entity_code                => l_entity_code
26313       ,p_event_class_code           => l_event_class_code);
26314    --
26316    --
26317    xla_ae_lines_pkg.SetAcctClass(
26318            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
26319          , p_ae_header_id           => l_ae_header_id
26320          );
26321 
26322    --
26323    -- set rounding class
26324    --
26325    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26326                       'ACCOUNTSPAYABLE';
26327 
26328    --
26329    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26330    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26331    --
26332    -- bulk performance
26333    --
26334    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26335 
26336    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26337       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26338 
26339    -- 4955764
26340    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26341       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26342 
26343    -- 4458381 Public Sector Enh
26344    
26345    --
26346    -- set accounting attributes for the line type
26347    --
26348    l_entered_amt_idx := 24;
26349    l_accted_amt_idx  := 29;
26350    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
26351    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26352    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
26353    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
26354    l_rec_acct_attrs.array_num_value(2)  := 
26355 xla_ae_sources_pkg.GetSystemSourceNum(
26356    p_source_code           => 'XLA_EVENT_APPL_ID'
26357  , p_source_type_code      => 'Y'
26358  , p_source_application_id =>  602
26359 );
26360    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
26361    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
26362    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
26363    l_rec_acct_attrs.array_char_value(4)  := 
26364 xla_ae_sources_pkg.GetSystemSourceChar(
26365    p_source_code           => 'XLA_ENTITY_CODE'
26366  , p_source_type_code      => 'Y'
26367  , p_source_application_id =>  602
26368 );
26369    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
26370    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
26371    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
26372    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
26373    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
26374    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
26375    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
26376    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
26377    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
26378    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
26379    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
26380    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
26381    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
26382    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
26383    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
26384    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
26385    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
26386    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
26387    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
26388    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
26389    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
26390    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
26391    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
26392    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
26393    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
26394    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
26395    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
26396    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
26397    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
26398    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
26399    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
26400    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
26401    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
26402    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
26403    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
26404    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
26405    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
26406    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
26407    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
26408    l_rec_acct_attrs.array_num_value(24)  := p_source_59;
26409    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
26410    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
26411    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
26412    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
26416    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
26413    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
26414    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
26415    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
26417    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
26418    l_rec_acct_attrs.array_num_value(29)  := p_source_61;
26419    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
26420    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
26421    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
26422    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
26423    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
26424    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
26425    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
26426    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
26427    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
26428    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
26429    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
26430    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
26431    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
26432    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
26433    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
26434    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
26435    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
26436    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
26437    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
26438    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
26439    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
26440    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
26441    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
26442    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
26443    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
26444    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
26445    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
26446    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
26447    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
26448    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
26449 
26450    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26451    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26452 
26453    ---------------------------------------------------------------------------------------------------------------
26454    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26455    ---------------------------------------------------------------------------------------------------------------
26456    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26457 
26458    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26459    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26460 
26461    IF xla_accounting_cache_pkg.GetValueChar
26462          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26463          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26464    AND l_bflow_method_code = 'PRIOR_ENTRY'
26465 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26466    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26467          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26468        )
26469    THEN
26470          xla_ae_lines_pkg.BflowUpgEntry
26471            (p_business_method_code    => l_bflow_method_code
26472            ,p_business_class_code     => l_bflow_class_code
26473            ,p_balance_type            => l_balance_type_code);
26474    ELSE
26475       NULL;
26476 -- No business flow processing for business flow method of NONE.
26477    END IF;
26478 
26479    --
26480    -- call analytical criteria
26481    --
26482    
26483    --
26484    -- call description
26485    --
26486    
26487 xla_ae_lines_pkg.SetLineDescription(
26488    p_ae_header_id => l_ae_header_id
26489   ,p_description  => Description_2 (
26490      p_application_id         => p_application_id
26491    , p_ae_header_id           => l_ae_header_id 
26492 , p_source_1 => p_source_1
26493    )
26494 );
26495 
26496 
26497    --
26498    -- call ADRs
26499    -- Bug 4922099
26500    --
26501    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26502         (NVL(l_actual_upg_option, 'N') = 'O') OR
26503         (NVL(l_enc_upg_option, 'N') = 'O')
26504       )
26505    THEN
26506    NULL;
26507    --
26508    --
26509    
26510   l_ccid := AcctDerRule_3(
26511            p_application_id           => p_application_id
26512          , p_ae_header_id             => l_ae_header_id 
26513 , p_source_2 => p_source_2
26514          , x_transaction_coa_id       => l_adr_transaction_coa_id
26515          , x_accounting_coa_id        => l_adr_accounting_coa_id
26516          , x_value_type_code          => l_adr_value_type_code
26517          , p_side                     => 'NA'
26518    );
26519 
26520    xla_ae_lines_pkg.set_ccid(
26521     p_code_combination_id          => l_ccid
26522   , p_value_type_code              => l_adr_value_type_code
26523   , p_transaction_coa_id           => l_adr_transaction_coa_id
26527   , p_component_type               => l_component_type
26524   , p_accounting_coa_id            => l_adr_accounting_coa_id
26525   , p_adr_code                     => 'AP_INVOICE_DIST'
26526   , p_adr_type_code                => 'S'
26528   , p_component_code               => l_component_code
26529   , p_component_type_code          => l_component_type_code
26530   , p_component_appl_id            => l_component_appl_id
26531   , p_amb_context_code             => l_amb_context_code
26532   , p_side                         => 'NA'
26533   );
26534 
26535 
26536    l_segment := AcctDerRule_11(
26537            p_application_id           => p_application_id
26538          , p_ae_header_id             => l_ae_header_id 
26539          , x_transaction_coa_id       => l_adr_transaction_coa_id
26540          , x_accounting_coa_id        => l_adr_accounting_coa_id
26541          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
26542          , x_flex_value_set_id        => l_adr_flex_value_set_id
26543          , x_value_type_code          => l_adr_value_type_code
26544          , x_value_combination_id     => l_adr_value_combination_id
26545          , x_value_segment_code       => l_adr_value_segment_code
26546          , p_side                     => 'NA'
26547          , p_override_seg_flag        => 'Y'
26548    );
26549 
26550    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
26551 
26552       xla_ae_lines_pkg.set_segment(
26553           p_to_segment_code         => 'GL_ACCOUNT'
26554         , p_segment_value           => l_segment
26555         , p_from_segment_code       => l_adr_value_segment_code
26556         , p_from_combination_id     => l_adr_value_combination_id
26557         , p_value_type_code         => l_adr_value_type_code
26558         , p_transaction_coa_id      => l_adr_transaction_coa_id
26559         , p_accounting_coa_id       => l_adr_accounting_coa_id
26560         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
26561         , p_flex_value_set_id       => l_adr_flex_value_set_id
26562         , p_adr_code                => 'FV_48X101_PAYABLES'
26563         , p_adr_type_code           => 'S'
26564         , p_component_type          => l_component_type
26565         , p_component_code          => l_component_code
26566         , p_component_type_code     => l_component_type_code
26567         , p_component_appl_id       => l_component_appl_id
26568         , p_amb_context_code        => l_amb_context_code
26569         , p_entity_code             => 'AP_INVOICES'
26570         , p_event_class_code        => 'INVOICES'
26571         , p_side                    => 'NA'
26572         );
26573 
26574   END IF;
26575 
26576    --
26577    --
26578    END IF;
26579    --
26580    -- Bug 4922099
26581    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26582           (NVL(l_enc_upg_option, 'N') = 'O')
26583         ) AND
26584         (l_bflow_method_code = 'PRIOR_ENTRY')
26585       )
26586    THEN
26587       IF
26588       --
26589       1 = 2
26590       --
26591       THEN
26592       xla_accounting_err_pkg.build_message
26593                                     (p_appli_s_name            => 'XLA'
26594                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26595                                     ,p_token_1                 => 'LINE_NUMBER'
26596                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26597                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26598                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26599                                                                              l_component_type
26600                                                                             ,l_component_code
26601                                                                             ,l_component_type_code
26602                                                                             ,l_component_appl_id
26603                                                                             ,l_amb_context_code
26604                                                                             ,l_entity_code
26605                                                                             ,l_event_class_code
26606                                                                            )
26607                                     ,p_token_3                 => 'OWNER'
26608                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26609                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26610                                                                           ,p_lookup_code    => l_component_type_code
26611                                                                          )
26612                                     ,p_token_4                 => 'PRODUCT_NAME'
26613                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26614                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26615                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26616                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26617                                     ,p_ae_header_id            =>  NULL
26618                                        );
26619 
26623                       ,p_level    => C_LEVEL_ERROR
26620         IF (C_LEVEL_ERROR>= g_log_level) THEN
26621                  trace
26622                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26624                       ,p_module   => l_log_module);
26625         END IF;
26626       END IF;
26627    END IF;
26628    --
26629    --
26630    ------------------------------------------------------------------------------------------------
26631    -- 4219869 Business Flow
26632    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26633    -- Prior Entry.  Currently, the following code is always generated.
26634    ------------------------------------------------------------------------------------------------
26635    XLA_AE_LINES_PKG.ValidateCurrentLine;
26636 
26637    ------------------------------------------------------------------------------------
26638    -- 4219869 Business Flow
26639    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26640    ------------------------------------------------------------------------------------
26641    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26642 
26643    ----------------------------------------------------------------------------------
26644    -- 4219869 Business Flow
26645    -- Update journal entry status -- Need to generate this within IF <condition>
26646    ----------------------------------------------------------------------------------
26647    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26648          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26649          ,p_balance_type_code => l_balance_type_code
26650          );
26651 
26652    -------------------------------------------------------------------------------------------
26653    -- 4262811 - Generate the Accrual Reversal lines
26654    -------------------------------------------------------------------------------------------
26655    BEGIN
26656       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26657                               (g_array_event(p_event_id).array_value_num('header_index'));
26658       IF l_acc_rev_flag IS NULL THEN
26659          l_acc_rev_flag := 'N';
26660       END IF;
26661    EXCEPTION
26662       WHEN OTHERS THEN
26663          l_acc_rev_flag := 'N';
26664    END;
26665    --
26666    IF (l_acc_rev_flag = 'Y') THEN
26667 
26668        -- 4645092  ------------------------------------------------------------------------------
26669        -- To allow MPA report to determine if it should generate report process
26670        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26671        ------------------------------------------------------------------------------------------
26672 
26673        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26674        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26675    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26676    -- call ADRs
26677    -- Bug 4922099
26678    --
26679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26680         (NVL(l_actual_upg_option, 'N') = 'O') OR
26681         (NVL(l_enc_upg_option, 'N') = 'O')
26682       )
26683    THEN
26684    NULL;
26685    --
26686    --
26687    
26688   l_ccid := AcctDerRule_3(
26689            p_application_id           => p_application_id
26690          , p_ae_header_id             => l_ae_header_id 
26691 , p_source_2 => p_source_2
26692          , x_transaction_coa_id       => l_adr_transaction_coa_id
26693          , x_accounting_coa_id        => l_adr_accounting_coa_id
26694          , x_value_type_code          => l_adr_value_type_code
26695          , p_side                     => 'NA'
26696    );
26697 
26698    xla_ae_lines_pkg.set_ccid(
26699     p_code_combination_id          => l_ccid
26700   , p_value_type_code              => l_adr_value_type_code
26701   , p_transaction_coa_id           => l_adr_transaction_coa_id
26702   , p_accounting_coa_id            => l_adr_accounting_coa_id
26703   , p_adr_code                     => 'AP_INVOICE_DIST'
26704   , p_adr_type_code                => 'S'
26705   , p_component_type               => l_component_type
26706   , p_component_code               => l_component_code
26707   , p_component_type_code          => l_component_type_code
26708   , p_component_appl_id            => l_component_appl_id
26709   , p_amb_context_code             => l_amb_context_code
26710   , p_side                         => 'NA'
26711   );
26712 
26713 
26714    l_segment := AcctDerRule_11(
26715            p_application_id           => p_application_id
26716          , p_ae_header_id             => l_ae_header_id 
26717          , x_transaction_coa_id       => l_adr_transaction_coa_id
26718          , x_accounting_coa_id        => l_adr_accounting_coa_id
26719          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
26720          , x_flex_value_set_id        => l_adr_flex_value_set_id
26721          , x_value_type_code          => l_adr_value_type_code
26722          , x_value_combination_id     => l_adr_value_combination_id
26723          , x_value_segment_code       => l_adr_value_segment_code
26724          , p_side                     => 'NA'
26725          , p_override_seg_flag        => 'Y'
26726    );
26727 
26728    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
26729 
26730       xla_ae_lines_pkg.set_segment(
26731           p_to_segment_code         => 'GL_ACCOUNT'
26735         , p_value_type_code         => l_adr_value_type_code
26732         , p_segment_value           => l_segment
26733         , p_from_segment_code       => l_adr_value_segment_code
26734         , p_from_combination_id     => l_adr_value_combination_id
26736         , p_transaction_coa_id      => l_adr_transaction_coa_id
26737         , p_accounting_coa_id       => l_adr_accounting_coa_id
26738         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
26739         , p_flex_value_set_id       => l_adr_flex_value_set_id
26740         , p_adr_code                => 'FV_48X101_PAYABLES'
26741         , p_adr_type_code           => 'S'
26742         , p_component_type          => l_component_type
26743         , p_component_code          => l_component_code
26744         , p_component_type_code     => l_component_type_code
26745         , p_component_appl_id       => l_component_appl_id
26746         , p_amb_context_code        => l_amb_context_code
26747         , p_entity_code             => 'AP_INVOICES'
26748         , p_event_class_code        => 'INVOICES'
26749         , p_side                    => 'NA'
26750         );
26751 
26752   END IF;
26753 
26754    --
26755    --
26756    END IF;
26757 
26758        --
26759        -- Update the line information that should be overwritten
26760        --
26761        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26762                                          p_header_num   => 1);
26763        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26764 
26765        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26766 
26767        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26768           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26769        END IF;
26770 
26771       --
26772       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26773       --
26774       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26775           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26776       ELSE
26777           ---------------------------------------------------------------------------------------------------
26778           -- 4262811a Switch Sign
26779           ---------------------------------------------------------------------------------------------------
26780           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26781           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26782                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26783           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26784                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26785           -- 5132302
26786           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26787                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26788 
26789       END IF;
26790 
26791       -- 4955764
26792       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26793       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26794 
26795 
26796       XLA_AE_LINES_PKG.ValidateCurrentLine;
26797       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26798 
26799       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26800                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26801                ,p_balance_type_code => l_balance_type_code);
26802 
26803    END IF;
26804 
26805    -----------------------------------------------------------------------------------------
26806    -- 4262811 Multiperiod Accounting
26807    -----------------------------------------------------------------------------------------
26808      -- No MPA option is assigned.
26809 
26810 
26811 END IF;
26812 END IF;
26813 --
26814 
26815 --
26816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26817    trace
26818       (p_msg      => 'END of AcctLineType_47'
26819       ,p_level    => C_LEVEL_PROCEDURE
26820       ,p_module   => l_log_module);
26821 END IF;
26822 --
26823 EXCEPTION
26824   WHEN xla_exceptions_pkg.application_exception THEN
26825       RAISE;
26826   WHEN OTHERS THEN
26827        xla_exceptions_pkg.raise_message
26828            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_47');
26829 END AcctLineType_47;
26830 --
26831 
26832 ---------------------------------------
26833 --
26834 -- PRIVATE FUNCTION
26835 --         AcctLineType_48
26836 --
26837 ---------------------------------------
26838 PROCEDURE AcctLineType_48 (
26839   p_application_id        IN NUMBER
26840  ,p_event_id              IN NUMBER
26841  ,p_calculate_acctd_flag  IN VARCHAR2
26842  ,p_calculate_g_l_flag    IN VARCHAR2
26843  ,p_actual_flag           IN OUT VARCHAR2
26844  ,p_balance_type_code     OUT VARCHAR2
26845  ,p_gain_or_loss_ref      OUT VARCHAR2
26846  
26847 --Invoice Distribution Description
26848  , p_source_1            IN VARCHAR2
26852  , p_source_6            IN VARCHAR2
26849 --Invoice Distribution Account
26850  , p_source_2            IN NUMBER
26851 --Federal Fund Category Description
26853 --Accounting Reversal Indicator
26854  , p_source_15            IN VARCHAR2
26855 --Distribution Link Type
26856  , p_source_17            IN VARCHAR2
26857 --Allocation to Main Distribution Identifier
26858  , p_source_19            IN NUMBER
26859 --Invoice Identifier
26860  , p_source_20            IN NUMBER
26861 --Business Flow Accounts Payable Application Identifier
26862  , p_source_21            IN NUMBER
26863 --Business Flow Invoice Distribution Type
26864  , p_source_22            IN VARCHAR2
26865 --Business Flow Invoice Entity Code
26866  , p_source_23            IN VARCHAR2
26867 --Business Flow Invoice Distribution Identifier
26868  , p_source_24            IN NUMBER
26869 --Business Flow Invoice Identifier
26870  , p_source_25            IN NUMBER
26871 --Invoice Distribution Identifier
26872  , p_source_26            IN NUMBER
26873 --Payables Encumbrance Upgrade Credit Account
26874  , p_source_27            IN NUMBER
26875 --Payables Encumbrance Upgrade Credit Amount
26876  , p_source_28            IN NUMBER
26877 --Invoice Currency Code
26878  , p_source_29            IN VARCHAR2
26879 --Payables Encumbrance Upgrade Credit Base Amount
26880  , p_source_30            IN NUMBER
26881 --Payables Encumbrance Upgrade Debit Account
26882  , p_source_31            IN NUMBER
26883 --Payables Encumbrance Upgrade Debit Amount
26884  , p_source_32            IN NUMBER
26885 --Payables Encumbrance Upgrade Debit Base Amount
26886  , p_source_33            IN NUMBER
26887 --Payables Encumbrance Upgrade Option
26888  , p_source_34            IN VARCHAR2
26889 --Invoice Exchange Date
26890  , p_source_36            IN DATE
26891 --Invoice Exchange Rate
26892  , p_source_37            IN NUMBER
26893 --Invoice Exchange Rate Type
26894  , p_source_38            IN VARCHAR2
26895 --Deferred Accounting End Date
26896  , p_source_39            IN DATE
26897 --Deferred Accounting Option
26898  , p_source_40            IN VARCHAR2
26899 --Deferred Accounting Start Date
26900  , p_source_41            IN DATE
26901 --Override Accounted Amount Indicator
26902  , p_source_42            IN VARCHAR2
26903  , p_source_42_meaning    IN VARCHAR2
26904 --Invoice Supplier Identifier
26905  , p_source_43            IN NUMBER
26906 --Invoice Supplier Site Identifier
26907  , p_source_44            IN NUMBER
26908 --Third Party Type
26909  , p_source_45            IN VARCHAR2
26910 --Parent Reversal Identifier
26911  , p_source_46            IN NUMBER
26912 --Invoice Distribution Statistical Amount
26913  , p_source_47            IN NUMBER
26914 --Invoice Distribution Tax Line Identifier
26915  , p_source_48            IN NUMBER
26916 --Invoice Distribution Tax Distribution Identifier from Tax
26917  , p_source_49            IN NUMBER
26918 --Invoice Distribution Summary Tax Line Identifier
26919  , p_source_50            IN NUMBER
26920 --Payables Upgrade Credit Encumbrance Type Identifier
26921  , p_source_51            IN NUMBER
26922 --Payables Upgrade Debit Encumbrance Type Identifier
26923  , p_source_52            IN NUMBER
26924 --Invoice Distribution Amount
26925  , p_source_55            IN NUMBER
26926 --Invoice Distribution Ledger Amount Before Rounding
26927  , p_source_58            IN NUMBER
26928 )
26929 IS
26930 
26931 l_component_type              VARCHAR2(80);
26932 l_component_code              VARCHAR2(30);
26933 l_component_type_code         VARCHAR2(1);
26934 l_component_appl_id           INTEGER;
26935 l_amb_context_code            VARCHAR2(30);
26936 l_entity_code                 VARCHAR2(30);
26937 l_event_class_code            VARCHAR2(30);
26938 l_ae_header_id                NUMBER;
26939 l_event_type_code             VARCHAR2(30);
26940 l_line_definition_code        VARCHAR2(30);
26941 l_line_definition_owner_code  VARCHAR2(1);
26942 --
26943 -- adr variables
26944 l_segment                     VARCHAR2(30);
26945 l_ccid                        NUMBER;
26946 l_adr_transaction_coa_id      NUMBER;
26947 l_adr_accounting_coa_id       NUMBER;
26948 l_adr_flexfield_segment_code  VARCHAR2(30);
26949 l_adr_flex_value_set_id       NUMBER;
26950 l_adr_value_type_code         VARCHAR2(30);
26951 l_adr_value_combination_id    NUMBER;
26952 l_adr_value_segment_code      VARCHAR2(30);
26953 
26954 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26955 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26956 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26957 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26958 
26959 -- 4262811 Variables ------------------------------------------------------------------------------------------
26960 l_entered_amt_idx             NUMBER;
26961 l_accted_amt_idx              NUMBER;
26962 l_acc_rev_flag                VARCHAR2(1);
26963 l_accrual_line_num            NUMBER;
26964 l_tmp_amt                     NUMBER;
26965 l_acc_rev_natural_side_code   VARCHAR2(1);
26966 
26967 l_num_entries                 NUMBER;
26968 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26969 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26970 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26971 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26972 l_recog_line_1                NUMBER;
26973 l_recog_line_2                NUMBER;
26974 
26978 
26975 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26976 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26977 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26979 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26980 
26981 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26982 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26983 
26984 ---------------------------------------------------------------------------------------------------------------
26985 
26986 
26987 --
26988 -- bulk performance
26989 --
26990 l_balance_type_code           VARCHAR2(1);
26991 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26992 l_log_module                  VARCHAR2(240);
26993 
26994 --
26995 -- Upgrade strategy
26996 --
26997 l_actual_upg_option           VARCHAR2(1);
26998 l_enc_upg_option           VARCHAR2(1);
26999 
27000 --
27001 BEGIN
27002 --
27003 IF g_log_enabled THEN
27004       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
27005 END IF;
27006 --
27007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27008 
27009       trace
27010          (p_msg      => 'BEGIN of AcctLineType_48'
27011          ,p_level    => C_LEVEL_PROCEDURE
27012          ,p_module   => l_log_module);
27013 
27014 END IF;
27015 --
27016 l_component_type             := 'AMB_JLT';
27017 l_component_code             := 'FV_AP_INV_DIRECT_FUND_CR';
27018 l_component_type_code        := 'S';
27019 l_component_appl_id          :=  200;
27020 l_amb_context_code           := 'DEFAULT';
27021 l_entity_code                := 'AP_INVOICES';
27022 l_event_class_code           := 'INVOICES';
27023 l_event_type_code            := 'INVOICES_ALL';
27024 l_line_definition_owner_code := 'S';
27025 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
27026 --
27027 l_balance_type_code          := 'A';
27028 l_segment                     := NULL;
27029 l_ccid                        := NULL;
27030 l_adr_transaction_coa_id      := NULL;
27031 l_adr_accounting_coa_id       := NULL;
27032 l_adr_flexfield_segment_code  := NULL;
27033 l_adr_flex_value_set_id       := NULL;
27034 l_adr_value_type_code         := NULL;
27035 l_adr_value_combination_id    := NULL;
27036 l_adr_value_segment_code      := NULL;
27037 
27038 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27039 l_bflow_class_code           := 'FV_DIRECT_FUND_CR';    -- 4219869 Business Flow
27040 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27041 l_budgetary_control_flag     := 'Y';
27042 
27043 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27044 l_bflow_applied_to_amt       := NULL; -- 5132302
27045 l_entered_amt_idx            := NULL;          -- 4262811
27046 l_accted_amt_idx             := NULL;          -- 4262811
27047 l_acc_rev_flag               := NULL;          -- 4262811
27048 l_accrual_line_num           := NULL;          -- 4262811
27049 l_tmp_amt                    := NULL;          -- 4262811
27050 --
27051  
27052 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27053     l_balance_type_code <> 'B' THEN
27054 IF NVL(p_source_6,'
27055 ') =  'Direct'
27056  THEN 
27057 
27058    --
27059    XLA_AE_LINES_PKG.SetNewLine;
27060 
27061    p_balance_type_code          := l_balance_type_code;
27062    -- set the flag so later we will know whether the gain loss line needs to be created
27063    
27064    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27065      p_actual_flag :='A';
27066    END IF;
27067 
27068    --
27069    -- bulk performance
27070    --
27071    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27072                                       p_header_num   => 0); -- 4262811
27073    --
27074    -- set accounting line options
27075    --
27076    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27077            p_natural_side_code          => 'C'
27078          , p_gain_or_loss_flag          => 'N'
27079          , p_gl_transfer_mode_code      => 'S'
27080          , p_acct_entry_type_code       => 'A'
27081          , p_switch_side_flag           => 'N'
27082          , p_merge_duplicate_code       => 'N'
27083          );
27084    --
27085    l_acc_rev_natural_side_code := 'D';  -- 4262811
27086    -- 
27087    --
27088    -- set accounting line type info
27089    --
27090    xla_ae_lines_pkg.SetAcctLineType
27091       (p_component_type             => l_component_type
27092       ,p_event_type_code            => l_event_type_code
27093       ,p_line_definition_owner_code => l_line_definition_owner_code
27094       ,p_line_definition_code       => l_line_definition_code
27095       ,p_accounting_line_code       => l_component_code
27096       ,p_accounting_line_type_code  => l_component_type_code
27097       ,p_accounting_line_appl_id    => l_component_appl_id
27098       ,p_amb_context_code           => l_amb_context_code
27099       ,p_entity_code                => l_entity_code
27100       ,p_event_class_code           => l_event_class_code);
27101    --
27102    -- set accounting class
27103    --
27104    xla_ae_lines_pkg.SetAcctClass(
27105            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
27109    --
27106          , p_ae_header_id           => l_ae_header_id
27107          );
27108 
27110    -- set rounding class
27111    --
27112    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27113                       'ACCOUNTSPAYABLE';
27114 
27115    --
27116    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27117    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27118    --
27119    -- bulk performance
27120    --
27121    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27122 
27123    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27124       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27125 
27126    -- 4955764
27127    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27129 
27130    -- 4458381 Public Sector Enh
27131    
27132    --
27133    -- set accounting attributes for the line type
27134    --
27135    l_entered_amt_idx := 24;
27136    l_accted_amt_idx  := 29;
27137    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
27138    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27139    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
27140    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
27141    l_rec_acct_attrs.array_num_value(2)  := 
27142 xla_ae_sources_pkg.GetSystemSourceNum(
27143    p_source_code           => 'XLA_EVENT_APPL_ID'
27144  , p_source_type_code      => 'Y'
27145  , p_source_application_id =>  602
27146 );
27147    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
27148    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
27149    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
27150    l_rec_acct_attrs.array_char_value(4)  := 
27151 xla_ae_sources_pkg.GetSystemSourceChar(
27152    p_source_code           => 'XLA_ENTITY_CODE'
27153  , p_source_type_code      => 'Y'
27154  , p_source_application_id =>  602
27155 );
27156    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
27157    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
27158    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
27159    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
27160    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
27161    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
27162    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
27163    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
27164    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27165    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
27166    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
27167    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
27168    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
27169    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
27170    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27171    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
27172    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
27173    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
27174    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
27175    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
27176    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
27177    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
27178    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
27179    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
27180    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
27181    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
27182    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
27183    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
27184    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
27185    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
27186    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
27187    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
27188    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
27189    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
27190    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
27191    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
27192    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
27193    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
27194    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
27195    l_rec_acct_attrs.array_num_value(24)  := p_source_55;
27196    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
27197    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
27198    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
27199    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
27200    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
27201    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
27202    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
27203    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
27204    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
27205    l_rec_acct_attrs.array_num_value(29)  := p_source_58;
27209    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
27206    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
27207    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
27208    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
27210    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
27211    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
27212    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
27213    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
27214    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
27215    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
27216    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
27217    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
27218    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
27219    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
27220    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
27221    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
27222    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
27223    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
27224    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
27225    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
27226    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
27227    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
27228    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
27229    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
27230    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
27231    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
27232    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
27233    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
27234    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
27235    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
27236 
27237    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27238    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27239 
27240    ---------------------------------------------------------------------------------------------------------------
27241    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27242    ---------------------------------------------------------------------------------------------------------------
27243    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27244 
27245    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27246    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27247 
27248    IF xla_accounting_cache_pkg.GetValueChar
27249          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27250          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27251    AND l_bflow_method_code = 'PRIOR_ENTRY'
27252 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27253    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27254          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27255        )
27256    THEN
27257          xla_ae_lines_pkg.BflowUpgEntry
27258            (p_business_method_code    => l_bflow_method_code
27259            ,p_business_class_code     => l_bflow_class_code
27260            ,p_balance_type            => l_balance_type_code);
27261    ELSE
27262       NULL;
27263 -- No business flow processing for business flow method of NONE.
27264    END IF;
27265 
27266    --
27267    -- call analytical criteria
27268    --
27269    
27270    --
27271    -- call description
27272    --
27273    
27274 xla_ae_lines_pkg.SetLineDescription(
27275    p_ae_header_id => l_ae_header_id
27276   ,p_description  => Description_2 (
27277      p_application_id         => p_application_id
27278    , p_ae_header_id           => l_ae_header_id 
27279 , p_source_1 => p_source_1
27280    )
27281 );
27282 
27283 
27284    --
27285    -- call ADRs
27286    -- Bug 4922099
27287    --
27288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27289         (NVL(l_actual_upg_option, 'N') = 'O') OR
27290         (NVL(l_enc_upg_option, 'N') = 'O')
27291       )
27292    THEN
27293    NULL;
27294    --
27295    --
27296    
27297   l_ccid := AcctDerRule_3(
27298            p_application_id           => p_application_id
27299          , p_ae_header_id             => l_ae_header_id 
27300 , p_source_2 => p_source_2
27301          , x_transaction_coa_id       => l_adr_transaction_coa_id
27302          , x_accounting_coa_id        => l_adr_accounting_coa_id
27303          , x_value_type_code          => l_adr_value_type_code
27304          , p_side                     => 'NA'
27305    );
27306 
27307    xla_ae_lines_pkg.set_ccid(
27308     p_code_combination_id          => l_ccid
27309   , p_value_type_code              => l_adr_value_type_code
27310   , p_transaction_coa_id           => l_adr_transaction_coa_id
27311   , p_accounting_coa_id            => l_adr_accounting_coa_id
27312   , p_adr_code                     => 'AP_INVOICE_DIST'
27313   , p_adr_type_code                => 'S'
27314   , p_component_type               => l_component_type
27318   , p_amb_context_code             => l_amb_context_code
27315   , p_component_code               => l_component_code
27316   , p_component_type_code          => l_component_type_code
27317   , p_component_appl_id            => l_component_appl_id
27319   , p_side                         => 'NA'
27320   );
27321 
27322 
27323    l_segment := AcctDerRule_15(
27324            p_application_id           => p_application_id
27325          , p_ae_header_id             => l_ae_header_id 
27326          , x_transaction_coa_id       => l_adr_transaction_coa_id
27327          , x_accounting_coa_id        => l_adr_accounting_coa_id
27328          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
27329          , x_flex_value_set_id        => l_adr_flex_value_set_id
27330          , x_value_type_code          => l_adr_value_type_code
27331          , x_value_combination_id     => l_adr_value_combination_id
27332          , x_value_segment_code       => l_adr_value_segment_code
27333          , p_side                     => 'NA'
27334          , p_override_seg_flag        => 'Y'
27335    );
27336 
27337    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
27338 
27339       xla_ae_lines_pkg.set_segment(
27340           p_to_segment_code         => 'GL_ACCOUNT'
27341         , p_segment_value           => l_segment
27342         , p_from_segment_code       => l_adr_value_segment_code
27343         , p_from_combination_id     => l_adr_value_combination_id
27344         , p_value_type_code         => l_adr_value_type_code
27345         , p_transaction_coa_id      => l_adr_transaction_coa_id
27346         , p_accounting_coa_id       => l_adr_accounting_coa_id
27347         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
27348         , p_flex_value_set_id       => l_adr_flex_value_set_id
27349         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
27350         , p_adr_type_code           => 'S'
27351         , p_component_type          => l_component_type
27352         , p_component_code          => l_component_code
27353         , p_component_type_code     => l_component_type_code
27354         , p_component_appl_id       => l_component_appl_id
27355         , p_amb_context_code        => l_amb_context_code
27356         , p_entity_code             => 'AP_INVOICES'
27357         , p_event_class_code        => 'INVOICES'
27358         , p_side                    => 'NA'
27359         );
27360 
27361   END IF;
27362 
27363    --
27364    --
27365    END IF;
27366    --
27367    -- Bug 4922099
27368    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27369           (NVL(l_enc_upg_option, 'N') = 'O')
27370         ) AND
27371         (l_bflow_method_code = 'PRIOR_ENTRY')
27372       )
27373    THEN
27374       IF
27375       --
27376       1 = 2
27377       --
27378       THEN
27379       xla_accounting_err_pkg.build_message
27380                                     (p_appli_s_name            => 'XLA'
27381                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27382                                     ,p_token_1                 => 'LINE_NUMBER'
27383                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27384                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27385                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27386                                                                              l_component_type
27387                                                                             ,l_component_code
27388                                                                             ,l_component_type_code
27389                                                                             ,l_component_appl_id
27390                                                                             ,l_amb_context_code
27391                                                                             ,l_entity_code
27392                                                                             ,l_event_class_code
27393                                                                            )
27394                                     ,p_token_3                 => 'OWNER'
27395                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27396                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27397                                                                           ,p_lookup_code    => l_component_type_code
27398                                                                          )
27399                                     ,p_token_4                 => 'PRODUCT_NAME'
27400                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27401                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27402                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27403                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27404                                     ,p_ae_header_id            =>  NULL
27405                                        );
27406 
27407         IF (C_LEVEL_ERROR>= g_log_level) THEN
27408                  trace
27409                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27410                       ,p_level    => C_LEVEL_ERROR
27414    END IF;
27411                       ,p_module   => l_log_module);
27412         END IF;
27413       END IF;
27415    --
27416    --
27417    ------------------------------------------------------------------------------------------------
27418    -- 4219869 Business Flow
27419    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27420    -- Prior Entry.  Currently, the following code is always generated.
27421    ------------------------------------------------------------------------------------------------
27422    XLA_AE_LINES_PKG.ValidateCurrentLine;
27423 
27424    ------------------------------------------------------------------------------------
27425    -- 4219869 Business Flow
27426    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27427    ------------------------------------------------------------------------------------
27428    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27429 
27430    ----------------------------------------------------------------------------------
27431    -- 4219869 Business Flow
27432    -- Update journal entry status -- Need to generate this within IF <condition>
27433    ----------------------------------------------------------------------------------
27434    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27435          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27436          ,p_balance_type_code => l_balance_type_code
27437          );
27438 
27439    -------------------------------------------------------------------------------------------
27440    -- 4262811 - Generate the Accrual Reversal lines
27441    -------------------------------------------------------------------------------------------
27442    BEGIN
27443       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27444                               (g_array_event(p_event_id).array_value_num('header_index'));
27445       IF l_acc_rev_flag IS NULL THEN
27446          l_acc_rev_flag := 'N';
27447       END IF;
27448    EXCEPTION
27449       WHEN OTHERS THEN
27450          l_acc_rev_flag := 'N';
27451    END;
27452    --
27453    IF (l_acc_rev_flag = 'Y') THEN
27454 
27455        -- 4645092  ------------------------------------------------------------------------------
27456        -- To allow MPA report to determine if it should generate report process
27457        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27458        ------------------------------------------------------------------------------------------
27459 
27460        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27461        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27462    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27463    -- call ADRs
27464    -- Bug 4922099
27465    --
27466    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27467         (NVL(l_actual_upg_option, 'N') = 'O') OR
27468         (NVL(l_enc_upg_option, 'N') = 'O')
27469       )
27470    THEN
27471    NULL;
27472    --
27473    --
27474    
27475   l_ccid := AcctDerRule_3(
27476            p_application_id           => p_application_id
27477          , p_ae_header_id             => l_ae_header_id 
27478 , p_source_2 => p_source_2
27479          , x_transaction_coa_id       => l_adr_transaction_coa_id
27480          , x_accounting_coa_id        => l_adr_accounting_coa_id
27481          , x_value_type_code          => l_adr_value_type_code
27482          , p_side                     => 'NA'
27483    );
27484 
27485    xla_ae_lines_pkg.set_ccid(
27486     p_code_combination_id          => l_ccid
27487   , p_value_type_code              => l_adr_value_type_code
27488   , p_transaction_coa_id           => l_adr_transaction_coa_id
27489   , p_accounting_coa_id            => l_adr_accounting_coa_id
27490   , p_adr_code                     => 'AP_INVOICE_DIST'
27491   , p_adr_type_code                => 'S'
27492   , p_component_type               => l_component_type
27493   , p_component_code               => l_component_code
27494   , p_component_type_code          => l_component_type_code
27495   , p_component_appl_id            => l_component_appl_id
27496   , p_amb_context_code             => l_amb_context_code
27497   , p_side                         => 'NA'
27498   );
27499 
27500 
27501    l_segment := AcctDerRule_15(
27502            p_application_id           => p_application_id
27503          , p_ae_header_id             => l_ae_header_id 
27504          , x_transaction_coa_id       => l_adr_transaction_coa_id
27505          , x_accounting_coa_id        => l_adr_accounting_coa_id
27506          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
27507          , x_flex_value_set_id        => l_adr_flex_value_set_id
27508          , x_value_type_code          => l_adr_value_type_code
27509          , x_value_combination_id     => l_adr_value_combination_id
27510          , x_value_segment_code       => l_adr_value_segment_code
27511          , p_side                     => 'NA'
27512          , p_override_seg_flag        => 'Y'
27513    );
27514 
27515    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
27516 
27517       xla_ae_lines_pkg.set_segment(
27518           p_to_segment_code         => 'GL_ACCOUNT'
27519         , p_segment_value           => l_segment
27520         , p_from_segment_code       => l_adr_value_segment_code
27521         , p_from_combination_id     => l_adr_value_combination_id
27525         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
27522         , p_value_type_code         => l_adr_value_type_code
27523         , p_transaction_coa_id      => l_adr_transaction_coa_id
27524         , p_accounting_coa_id       => l_adr_accounting_coa_id
27526         , p_flex_value_set_id       => l_adr_flex_value_set_id
27527         , p_adr_code                => 'FV_570001_UNEXP_APPR_ACCT'
27528         , p_adr_type_code           => 'S'
27529         , p_component_type          => l_component_type
27530         , p_component_code          => l_component_code
27531         , p_component_type_code     => l_component_type_code
27532         , p_component_appl_id       => l_component_appl_id
27533         , p_amb_context_code        => l_amb_context_code
27534         , p_entity_code             => 'AP_INVOICES'
27535         , p_event_class_code        => 'INVOICES'
27536         , p_side                    => 'NA'
27537         );
27538 
27539   END IF;
27540 
27541    --
27542    --
27543    END IF;
27544 
27545        --
27546        -- Update the line information that should be overwritten
27547        --
27548        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27549                                          p_header_num   => 1);
27550        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27551 
27552        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27553 
27554        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27555           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27556        END IF;
27557 
27558       --
27559       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27560       --
27561       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27562           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27563       ELSE
27564           ---------------------------------------------------------------------------------------------------
27565           -- 4262811a Switch Sign
27566           ---------------------------------------------------------------------------------------------------
27567           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27568           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27569                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27570           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27571                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27572           -- 5132302
27573           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27574                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27575 
27576       END IF;
27577 
27578       -- 4955764
27579       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27581 
27582 
27583       XLA_AE_LINES_PKG.ValidateCurrentLine;
27584       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27585 
27586       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27587                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27588                ,p_balance_type_code => l_balance_type_code);
27589 
27590    END IF;
27591 
27592    -----------------------------------------------------------------------------------------
27593    -- 4262811 Multiperiod Accounting
27594    -----------------------------------------------------------------------------------------
27595      -- No MPA option is assigned.
27596 
27597 
27598 END IF;
27599 END IF;
27600 --
27601 
27602 --
27603 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27604    trace
27605       (p_msg      => 'END of AcctLineType_48'
27606       ,p_level    => C_LEVEL_PROCEDURE
27607       ,p_module   => l_log_module);
27608 END IF;
27609 --
27610 EXCEPTION
27611   WHEN xla_exceptions_pkg.application_exception THEN
27612       RAISE;
27613   WHEN OTHERS THEN
27614        xla_exceptions_pkg.raise_message
27615            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_48');
27616 END AcctLineType_48;
27617 --
27618 
27619 ---------------------------------------
27620 --
27621 -- PRIVATE FUNCTION
27622 --         AcctLineType_49
27623 --
27624 ---------------------------------------
27625 PROCEDURE AcctLineType_49 (
27626   p_application_id        IN NUMBER
27627  ,p_event_id              IN NUMBER
27628  ,p_calculate_acctd_flag  IN VARCHAR2
27629  ,p_calculate_g_l_flag    IN VARCHAR2
27630  ,p_actual_flag           IN OUT VARCHAR2
27631  ,p_balance_type_code     OUT VARCHAR2
27632  ,p_gain_or_loss_ref      OUT VARCHAR2
27633  
27634 --Invoice Distribution Description
27635  , p_source_1            IN VARCHAR2
27636 --Invoice Distribution Account
27637  , p_source_2            IN NUMBER
27638 --Federal Fund Category Description
27639  , p_source_6            IN VARCHAR2
27640 --Accounting Reversal Indicator
27641  , p_source_15            IN VARCHAR2
27642 --Distribution Link Type
27646 --Invoice Identifier
27643  , p_source_17            IN VARCHAR2
27644 --Allocation to Main Distribution Identifier
27645  , p_source_19            IN NUMBER
27647  , p_source_20            IN NUMBER
27648 --Business Flow Accounts Payable Application Identifier
27649  , p_source_21            IN NUMBER
27650 --Business Flow Invoice Distribution Type
27651  , p_source_22            IN VARCHAR2
27652 --Business Flow Invoice Entity Code
27653  , p_source_23            IN VARCHAR2
27654 --Business Flow Invoice Distribution Identifier
27655  , p_source_24            IN NUMBER
27656 --Business Flow Invoice Identifier
27657  , p_source_25            IN NUMBER
27658 --Invoice Distribution Identifier
27659  , p_source_26            IN NUMBER
27660 --Payables Encumbrance Upgrade Credit Account
27661  , p_source_27            IN NUMBER
27662 --Payables Encumbrance Upgrade Credit Amount
27663  , p_source_28            IN NUMBER
27664 --Invoice Currency Code
27665  , p_source_29            IN VARCHAR2
27666 --Payables Encumbrance Upgrade Credit Base Amount
27667  , p_source_30            IN NUMBER
27668 --Payables Encumbrance Upgrade Debit Account
27669  , p_source_31            IN NUMBER
27670 --Payables Encumbrance Upgrade Debit Amount
27671  , p_source_32            IN NUMBER
27672 --Payables Encumbrance Upgrade Debit Base Amount
27673  , p_source_33            IN NUMBER
27674 --Payables Encumbrance Upgrade Option
27675  , p_source_34            IN VARCHAR2
27676 --Invoice Exchange Date
27677  , p_source_36            IN DATE
27678 --Invoice Exchange Rate
27679  , p_source_37            IN NUMBER
27680 --Invoice Exchange Rate Type
27681  , p_source_38            IN VARCHAR2
27682 --Deferred Accounting End Date
27683  , p_source_39            IN DATE
27684 --Deferred Accounting Option
27685  , p_source_40            IN VARCHAR2
27686 --Deferred Accounting Start Date
27687  , p_source_41            IN DATE
27688 --Override Accounted Amount Indicator
27689  , p_source_42            IN VARCHAR2
27690  , p_source_42_meaning    IN VARCHAR2
27691 --Invoice Supplier Identifier
27692  , p_source_43            IN NUMBER
27693 --Invoice Supplier Site Identifier
27694  , p_source_44            IN NUMBER
27695 --Third Party Type
27696  , p_source_45            IN VARCHAR2
27697 --Parent Reversal Identifier
27698  , p_source_46            IN NUMBER
27699 --Invoice Distribution Statistical Amount
27700  , p_source_47            IN NUMBER
27701 --Invoice Distribution Tax Line Identifier
27702  , p_source_48            IN NUMBER
27703 --Invoice Distribution Tax Distribution Identifier from Tax
27704  , p_source_49            IN NUMBER
27705 --Invoice Distribution Summary Tax Line Identifier
27706  , p_source_50            IN NUMBER
27707 --Payables Upgrade Credit Encumbrance Type Identifier
27708  , p_source_51            IN NUMBER
27709 --Payables Upgrade Debit Encumbrance Type Identifier
27710  , p_source_52            IN NUMBER
27711 --Invoice Distribution Amount
27712  , p_source_55            IN NUMBER
27713 --Invoice Distribution Ledger Amount Before Rounding
27714  , p_source_58            IN NUMBER
27715 )
27716 IS
27717 
27718 l_component_type              VARCHAR2(80);
27719 l_component_code              VARCHAR2(30);
27720 l_component_type_code         VARCHAR2(1);
27721 l_component_appl_id           INTEGER;
27722 l_amb_context_code            VARCHAR2(30);
27723 l_entity_code                 VARCHAR2(30);
27724 l_event_class_code            VARCHAR2(30);
27725 l_ae_header_id                NUMBER;
27726 l_event_type_code             VARCHAR2(30);
27727 l_line_definition_code        VARCHAR2(30);
27728 l_line_definition_owner_code  VARCHAR2(1);
27729 --
27730 -- adr variables
27731 l_segment                     VARCHAR2(30);
27732 l_ccid                        NUMBER;
27733 l_adr_transaction_coa_id      NUMBER;
27734 l_adr_accounting_coa_id       NUMBER;
27735 l_adr_flexfield_segment_code  VARCHAR2(30);
27736 l_adr_flex_value_set_id       NUMBER;
27737 l_adr_value_type_code         VARCHAR2(30);
27738 l_adr_value_combination_id    NUMBER;
27739 l_adr_value_segment_code      VARCHAR2(30);
27740 
27741 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27742 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27743 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27744 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27745 
27746 -- 4262811 Variables ------------------------------------------------------------------------------------------
27747 l_entered_amt_idx             NUMBER;
27748 l_accted_amt_idx              NUMBER;
27749 l_acc_rev_flag                VARCHAR2(1);
27750 l_accrual_line_num            NUMBER;
27751 l_tmp_amt                     NUMBER;
27752 l_acc_rev_natural_side_code   VARCHAR2(1);
27753 
27754 l_num_entries                 NUMBER;
27755 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27756 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27757 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27758 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27759 l_recog_line_1                NUMBER;
27760 l_recog_line_2                NUMBER;
27761 
27762 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27763 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27764 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27765 
27769 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27766 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27767 
27768 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27770 
27771 ---------------------------------------------------------------------------------------------------------------
27772 
27773 
27774 --
27775 -- bulk performance
27776 --
27777 l_balance_type_code           VARCHAR2(1);
27778 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27779 l_log_module                  VARCHAR2(240);
27780 
27781 --
27782 -- Upgrade strategy
27783 --
27784 l_actual_upg_option           VARCHAR2(1);
27785 l_enc_upg_option           VARCHAR2(1);
27786 
27787 --
27788 BEGIN
27789 --
27790 IF g_log_enabled THEN
27791       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
27792 END IF;
27793 --
27794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27795 
27796       trace
27797          (p_msg      => 'BEGIN of AcctLineType_49'
27798          ,p_level    => C_LEVEL_PROCEDURE
27799          ,p_module   => l_log_module);
27800 
27801 END IF;
27802 --
27803 l_component_type             := 'AMB_JLT';
27804 l_component_code             := 'FV_AP_INV_DIRECT_FUND_DR';
27805 l_component_type_code        := 'S';
27806 l_component_appl_id          :=  200;
27807 l_amb_context_code           := 'DEFAULT';
27808 l_entity_code                := 'AP_INVOICES';
27809 l_event_class_code           := 'INVOICES';
27810 l_event_type_code            := 'INVOICES_ALL';
27811 l_line_definition_owner_code := 'S';
27812 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
27813 --
27814 l_balance_type_code          := 'A';
27815 l_segment                     := NULL;
27816 l_ccid                        := NULL;
27817 l_adr_transaction_coa_id      := NULL;
27818 l_adr_accounting_coa_id       := NULL;
27819 l_adr_flexfield_segment_code  := NULL;
27820 l_adr_flex_value_set_id       := NULL;
27821 l_adr_value_type_code         := NULL;
27822 l_adr_value_combination_id    := NULL;
27823 l_adr_value_segment_code      := NULL;
27824 
27825 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27826 l_bflow_class_code           := 'FV_DIRECT_FUND_DR';    -- 4219869 Business Flow
27827 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27828 l_budgetary_control_flag     := 'Y';
27829 
27830 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27831 l_bflow_applied_to_amt       := NULL; -- 5132302
27832 l_entered_amt_idx            := NULL;          -- 4262811
27833 l_accted_amt_idx             := NULL;          -- 4262811
27834 l_acc_rev_flag               := NULL;          -- 4262811
27835 l_accrual_line_num           := NULL;          -- 4262811
27836 l_tmp_amt                    := NULL;          -- 4262811
27837 --
27838  
27839 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27840     l_balance_type_code <> 'B' THEN
27841 IF NVL(p_source_6,'
27842 ') =  'Direct'
27843  THEN 
27844 
27845    --
27846    XLA_AE_LINES_PKG.SetNewLine;
27847 
27848    p_balance_type_code          := l_balance_type_code;
27849    -- set the flag so later we will know whether the gain loss line needs to be created
27850    
27851    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27852      p_actual_flag :='A';
27853    END IF;
27854 
27855    --
27856    -- bulk performance
27857    --
27858    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27859                                       p_header_num   => 0); -- 4262811
27860    --
27861    -- set accounting line options
27862    --
27863    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27864            p_natural_side_code          => 'D'
27865          , p_gain_or_loss_flag          => 'N'
27866          , p_gl_transfer_mode_code      => 'S'
27867          , p_acct_entry_type_code       => 'A'
27868          , p_switch_side_flag           => 'N'
27869          , p_merge_duplicate_code       => 'N'
27870          );
27871    --
27872    l_acc_rev_natural_side_code := 'C';  -- 4262811
27873    -- 
27874    --
27875    -- set accounting line type info
27876    --
27877    xla_ae_lines_pkg.SetAcctLineType
27878       (p_component_type             => l_component_type
27879       ,p_event_type_code            => l_event_type_code
27880       ,p_line_definition_owner_code => l_line_definition_owner_code
27881       ,p_line_definition_code       => l_line_definition_code
27882       ,p_accounting_line_code       => l_component_code
27883       ,p_accounting_line_type_code  => l_component_type_code
27884       ,p_accounting_line_appl_id    => l_component_appl_id
27885       ,p_amb_context_code           => l_amb_context_code
27886       ,p_entity_code                => l_entity_code
27887       ,p_event_class_code           => l_event_class_code);
27888    --
27889    -- set accounting class
27890    --
27891    xla_ae_lines_pkg.SetAcctClass(
27892            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
27893          , p_ae_header_id           => l_ae_header_id
27894          );
27895 
27896    --
27897    -- set rounding class
27898    --
27899    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27900                       'ACCOUNTSPAYABLE';
27901 
27902    --
27906    -- bulk performance
27903    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27904    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27905    --
27907    --
27908    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27909 
27910    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27911       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27912 
27913    -- 4955764
27914    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27915       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27916 
27917    -- 4458381 Public Sector Enh
27918    
27919    --
27920    -- set accounting attributes for the line type
27921    --
27922    l_entered_amt_idx := 24;
27923    l_accted_amt_idx  := 29;
27924    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
27925    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27926    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
27927    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
27928    l_rec_acct_attrs.array_num_value(2)  := 
27929 xla_ae_sources_pkg.GetSystemSourceNum(
27930    p_source_code           => 'XLA_EVENT_APPL_ID'
27931  , p_source_type_code      => 'Y'
27932  , p_source_application_id =>  602
27933 );
27934    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
27935    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
27936    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
27937    l_rec_acct_attrs.array_char_value(4)  := 
27938 xla_ae_sources_pkg.GetSystemSourceChar(
27939    p_source_code           => 'XLA_ENTITY_CODE'
27940  , p_source_type_code      => 'Y'
27941  , p_source_application_id =>  602
27942 );
27943    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
27944    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
27945    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
27946    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
27947    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
27948    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
27949    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
27950    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
27951    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27952    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
27953    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
27954    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
27955    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
27956    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
27957    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27958    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
27959    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
27960    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
27961    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
27962    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
27963    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
27964    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
27965    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
27966    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
27967    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
27968    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
27969    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
27970    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
27971    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
27972    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
27973    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
27974    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
27975    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
27976    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
27977    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
27978    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
27979    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
27980    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
27981    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
27982    l_rec_acct_attrs.array_num_value(24)  := p_source_55;
27983    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
27984    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
27985    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
27986    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
27987    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
27988    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
27989    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
27990    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
27991    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
27992    l_rec_acct_attrs.array_num_value(29)  := p_source_58;
27993    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
27994    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
27995    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
27996    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
28000    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
27997    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
27998    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
27999    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
28001    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
28002    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
28003    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
28004    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
28005    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
28006    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
28007    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
28008    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
28009    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
28010    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
28011    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
28012    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
28013    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
28014    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
28015    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
28016    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
28017    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
28018    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
28019    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
28020    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
28021    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
28022    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
28023 
28024    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28025    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28026 
28027    ---------------------------------------------------------------------------------------------------------------
28028    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28029    ---------------------------------------------------------------------------------------------------------------
28030    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28031 
28032    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28033    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28034 
28035    IF xla_accounting_cache_pkg.GetValueChar
28036          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28037          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28038    AND l_bflow_method_code = 'PRIOR_ENTRY'
28039 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28040    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28041          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28042        )
28043    THEN
28044          xla_ae_lines_pkg.BflowUpgEntry
28045            (p_business_method_code    => l_bflow_method_code
28046            ,p_business_class_code     => l_bflow_class_code
28047            ,p_balance_type            => l_balance_type_code);
28048    ELSE
28049       NULL;
28050 -- No business flow processing for business flow method of NONE.
28051    END IF;
28052 
28053    --
28054    -- call analytical criteria
28055    --
28056    
28057    --
28058    -- call description
28059    --
28060    
28061 xla_ae_lines_pkg.SetLineDescription(
28062    p_ae_header_id => l_ae_header_id
28063   ,p_description  => Description_2 (
28064      p_application_id         => p_application_id
28065    , p_ae_header_id           => l_ae_header_id 
28066 , p_source_1 => p_source_1
28067    )
28068 );
28069 
28070 
28071    --
28072    -- call ADRs
28073    -- Bug 4922099
28074    --
28075    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28076         (NVL(l_actual_upg_option, 'N') = 'O') OR
28077         (NVL(l_enc_upg_option, 'N') = 'O')
28078       )
28079    THEN
28080    NULL;
28081    --
28082    --
28083    
28084   l_ccid := AcctDerRule_3(
28085            p_application_id           => p_application_id
28086          , p_ae_header_id             => l_ae_header_id 
28087 , p_source_2 => p_source_2
28088          , x_transaction_coa_id       => l_adr_transaction_coa_id
28089          , x_accounting_coa_id        => l_adr_accounting_coa_id
28090          , x_value_type_code          => l_adr_value_type_code
28091          , p_side                     => 'NA'
28092    );
28093 
28094    xla_ae_lines_pkg.set_ccid(
28095     p_code_combination_id          => l_ccid
28096   , p_value_type_code              => l_adr_value_type_code
28097   , p_transaction_coa_id           => l_adr_transaction_coa_id
28098   , p_accounting_coa_id            => l_adr_accounting_coa_id
28099   , p_adr_code                     => 'AP_INVOICE_DIST'
28100   , p_adr_type_code                => 'S'
28101   , p_component_type               => l_component_type
28102   , p_component_code               => l_component_code
28103   , p_component_type_code          => l_component_type_code
28104   , p_component_appl_id            => l_component_appl_id
28105   , p_amb_context_code             => l_amb_context_code
28109 
28106   , p_side                         => 'NA'
28107   );
28108 
28110    l_segment := AcctDerRule_4(
28111            p_application_id           => p_application_id
28112          , p_ae_header_id             => l_ae_header_id 
28113          , x_transaction_coa_id       => l_adr_transaction_coa_id
28114          , x_accounting_coa_id        => l_adr_accounting_coa_id
28115          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
28116          , x_flex_value_set_id        => l_adr_flex_value_set_id
28117          , x_value_type_code          => l_adr_value_type_code
28118          , x_value_combination_id     => l_adr_value_combination_id
28119          , x_value_segment_code       => l_adr_value_segment_code
28120          , p_side                     => 'NA'
28121          , p_override_seg_flag        => 'Y'
28122    );
28123 
28124    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
28125 
28126       xla_ae_lines_pkg.set_segment(
28127           p_to_segment_code         => 'GL_ACCOUNT'
28128         , p_segment_value           => l_segment
28129         , p_from_segment_code       => l_adr_value_segment_code
28130         , p_from_combination_id     => l_adr_value_combination_id
28131         , p_value_type_code         => l_adr_value_type_code
28132         , p_transaction_coa_id      => l_adr_transaction_coa_id
28133         , p_accounting_coa_id       => l_adr_accounting_coa_id
28134         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
28135         , p_flex_value_set_id       => l_adr_flex_value_set_id
28136         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
28137         , p_adr_type_code           => 'S'
28138         , p_component_type          => l_component_type
28139         , p_component_code          => l_component_code
28140         , p_component_type_code     => l_component_type_code
28141         , p_component_appl_id       => l_component_appl_id
28142         , p_amb_context_code        => l_amb_context_code
28143         , p_entity_code             => 'AP_INVOICES'
28144         , p_event_class_code        => 'INVOICES'
28145         , p_side                    => 'NA'
28146         );
28147 
28148   END IF;
28149 
28150    --
28151    --
28152    END IF;
28153    --
28154    -- Bug 4922099
28155    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28156           (NVL(l_enc_upg_option, 'N') = 'O')
28157         ) AND
28158         (l_bflow_method_code = 'PRIOR_ENTRY')
28159       )
28160    THEN
28161       IF
28162       --
28163       1 = 2
28164       --
28165       THEN
28166       xla_accounting_err_pkg.build_message
28167                                     (p_appli_s_name            => 'XLA'
28168                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28169                                     ,p_token_1                 => 'LINE_NUMBER'
28170                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28171                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28172                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28173                                                                              l_component_type
28174                                                                             ,l_component_code
28175                                                                             ,l_component_type_code
28176                                                                             ,l_component_appl_id
28177                                                                             ,l_amb_context_code
28178                                                                             ,l_entity_code
28179                                                                             ,l_event_class_code
28180                                                                            )
28181                                     ,p_token_3                 => 'OWNER'
28182                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28183                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28184                                                                           ,p_lookup_code    => l_component_type_code
28185                                                                          )
28186                                     ,p_token_4                 => 'PRODUCT_NAME'
28187                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28188                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28189                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28190                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28191                                     ,p_ae_header_id            =>  NULL
28192                                        );
28193 
28194         IF (C_LEVEL_ERROR>= g_log_level) THEN
28195                  trace
28196                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28197                       ,p_level    => C_LEVEL_ERROR
28198                       ,p_module   => l_log_module);
28199         END IF;
28200       END IF;
28201    END IF;
28202    --
28203    --
28204    ------------------------------------------------------------------------------------------------
28205    -- 4219869 Business Flow
28209    XLA_AE_LINES_PKG.ValidateCurrentLine;
28206    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28207    -- Prior Entry.  Currently, the following code is always generated.
28208    ------------------------------------------------------------------------------------------------
28210 
28211    ------------------------------------------------------------------------------------
28212    -- 4219869 Business Flow
28213    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28214    ------------------------------------------------------------------------------------
28215    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28216 
28217    ----------------------------------------------------------------------------------
28218    -- 4219869 Business Flow
28219    -- Update journal entry status -- Need to generate this within IF <condition>
28220    ----------------------------------------------------------------------------------
28221    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28222          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28223          ,p_balance_type_code => l_balance_type_code
28224          );
28225 
28226    -------------------------------------------------------------------------------------------
28227    -- 4262811 - Generate the Accrual Reversal lines
28228    -------------------------------------------------------------------------------------------
28229    BEGIN
28230       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28231                               (g_array_event(p_event_id).array_value_num('header_index'));
28232       IF l_acc_rev_flag IS NULL THEN
28233          l_acc_rev_flag := 'N';
28234       END IF;
28235    EXCEPTION
28236       WHEN OTHERS THEN
28237          l_acc_rev_flag := 'N';
28238    END;
28239    --
28240    IF (l_acc_rev_flag = 'Y') THEN
28241 
28242        -- 4645092  ------------------------------------------------------------------------------
28243        -- To allow MPA report to determine if it should generate report process
28244        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28245        ------------------------------------------------------------------------------------------
28246 
28247        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28248        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28249    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28250    -- call ADRs
28251    -- Bug 4922099
28252    --
28253    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28254         (NVL(l_actual_upg_option, 'N') = 'O') OR
28255         (NVL(l_enc_upg_option, 'N') = 'O')
28256       )
28257    THEN
28258    NULL;
28259    --
28260    --
28261    
28262   l_ccid := AcctDerRule_3(
28263            p_application_id           => p_application_id
28264          , p_ae_header_id             => l_ae_header_id 
28265 , p_source_2 => p_source_2
28266          , x_transaction_coa_id       => l_adr_transaction_coa_id
28267          , x_accounting_coa_id        => l_adr_accounting_coa_id
28268          , x_value_type_code          => l_adr_value_type_code
28269          , p_side                     => 'NA'
28270    );
28271 
28272    xla_ae_lines_pkg.set_ccid(
28273     p_code_combination_id          => l_ccid
28274   , p_value_type_code              => l_adr_value_type_code
28275   , p_transaction_coa_id           => l_adr_transaction_coa_id
28276   , p_accounting_coa_id            => l_adr_accounting_coa_id
28277   , p_adr_code                     => 'AP_INVOICE_DIST'
28278   , p_adr_type_code                => 'S'
28279   , p_component_type               => l_component_type
28280   , p_component_code               => l_component_code
28281   , p_component_type_code          => l_component_type_code
28282   , p_component_appl_id            => l_component_appl_id
28283   , p_amb_context_code             => l_amb_context_code
28284   , p_side                         => 'NA'
28285   );
28286 
28287 
28288    l_segment := AcctDerRule_4(
28289            p_application_id           => p_application_id
28290          , p_ae_header_id             => l_ae_header_id 
28291          , x_transaction_coa_id       => l_adr_transaction_coa_id
28292          , x_accounting_coa_id        => l_adr_accounting_coa_id
28293          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
28294          , x_flex_value_set_id        => l_adr_flex_value_set_id
28295          , x_value_type_code          => l_adr_value_type_code
28296          , x_value_combination_id     => l_adr_value_combination_id
28297          , x_value_segment_code       => l_adr_value_segment_code
28298          , p_side                     => 'NA'
28299          , p_override_seg_flag        => 'Y'
28300    );
28301 
28302    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
28303 
28304       xla_ae_lines_pkg.set_segment(
28305           p_to_segment_code         => 'GL_ACCOUNT'
28306         , p_segment_value           => l_segment
28307         , p_from_segment_code       => l_adr_value_segment_code
28308         , p_from_combination_id     => l_adr_value_combination_id
28309         , p_value_type_code         => l_adr_value_type_code
28310         , p_transaction_coa_id      => l_adr_transaction_coa_id
28311         , p_accounting_coa_id       => l_adr_accounting_coa_id
28312         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
28313         , p_flex_value_set_id       => l_adr_flex_value_set_id
28317         , p_component_code          => l_component_code
28314         , p_adr_code                => 'FV_310701_UNEXP_APPR_ACCT'
28315         , p_adr_type_code           => 'S'
28316         , p_component_type          => l_component_type
28318         , p_component_type_code     => l_component_type_code
28319         , p_component_appl_id       => l_component_appl_id
28320         , p_amb_context_code        => l_amb_context_code
28321         , p_entity_code             => 'AP_INVOICES'
28322         , p_event_class_code        => 'INVOICES'
28323         , p_side                    => 'NA'
28324         );
28325 
28326   END IF;
28327 
28328    --
28329    --
28330    END IF;
28331 
28332        --
28333        -- Update the line information that should be overwritten
28334        --
28335        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28336                                          p_header_num   => 1);
28337        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28338 
28339        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28340 
28341        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28342           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28343        END IF;
28344 
28345       --
28346       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28347       --
28348       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28349           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28350       ELSE
28351           ---------------------------------------------------------------------------------------------------
28352           -- 4262811a Switch Sign
28353           ---------------------------------------------------------------------------------------------------
28354           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28355           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28356                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28357           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28358                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28359           -- 5132302
28360           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28361                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28362 
28363       END IF;
28364 
28365       -- 4955764
28366       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28367       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28368 
28369 
28370       XLA_AE_LINES_PKG.ValidateCurrentLine;
28371       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28372 
28373       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28374                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28375                ,p_balance_type_code => l_balance_type_code);
28376 
28377    END IF;
28378 
28379    -----------------------------------------------------------------------------------------
28380    -- 4262811 Multiperiod Accounting
28381    -----------------------------------------------------------------------------------------
28382      -- No MPA option is assigned.
28383 
28384 
28385 END IF;
28386 END IF;
28387 --
28388 
28389 --
28390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28391    trace
28392       (p_msg      => 'END of AcctLineType_49'
28393       ,p_level    => C_LEVEL_PROCEDURE
28394       ,p_module   => l_log_module);
28395 END IF;
28396 --
28397 EXCEPTION
28398   WHEN xla_exceptions_pkg.application_exception THEN
28399       RAISE;
28400   WHEN OTHERS THEN
28401        xla_exceptions_pkg.raise_message
28402            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_49');
28403 END AcctLineType_49;
28404 --
28405 
28406 ---------------------------------------
28407 --
28408 -- PRIVATE FUNCTION
28409 --         AcctLineType_50
28410 --
28411 ---------------------------------------
28412 PROCEDURE AcctLineType_50 (
28413   p_application_id        IN NUMBER
28414  ,p_event_id              IN NUMBER
28415  ,p_calculate_acctd_flag  IN VARCHAR2
28416  ,p_calculate_g_l_flag    IN VARCHAR2
28417  ,p_actual_flag           IN OUT VARCHAR2
28418  ,p_balance_type_code     OUT VARCHAR2
28419  ,p_gain_or_loss_ref      OUT VARCHAR2
28420  
28421 --Invoice Distribution Description
28422  , p_source_1            IN VARCHAR2
28423 --Invoice Distribution Account
28424  , p_source_2            IN NUMBER
28425 --Federal Fund Category
28426  , p_source_4            IN VARCHAR2
28427 --Federal Fund Expired Status
28428  , p_source_5            IN VARCHAR2
28429 --Federal Fund Category Description
28430  , p_source_6            IN VARCHAR2
28431 --Invoice Distribution Type
28432  , p_source_8            IN VARCHAR2
28433  , p_source_8_meaning    IN VARCHAR2
28434 --Federal Prior Year Flag
28435  , p_source_9            IN VARCHAR2
28436 --Invoice Distribution Encumbrance Amount
28437  , p_source_10            IN NUMBER
28441  , p_source_17            IN VARCHAR2
28438 --Accounting Reversal Indicator
28439  , p_source_15            IN VARCHAR2
28440 --Distribution Link Type
28442 --Allocation to Main Distribution Identifier
28443  , p_source_19            IN NUMBER
28444 --Invoice Identifier
28445  , p_source_20            IN NUMBER
28446 --Business Flow Accounts Payable Application Identifier
28447  , p_source_21            IN NUMBER
28448 --Business Flow Invoice Distribution Type
28449  , p_source_22            IN VARCHAR2
28450 --Business Flow Invoice Entity Code
28451  , p_source_23            IN VARCHAR2
28452 --Business Flow Invoice Distribution Identifier
28453  , p_source_24            IN NUMBER
28454 --Business Flow Invoice Identifier
28455  , p_source_25            IN NUMBER
28456 --Invoice Distribution Identifier
28457  , p_source_26            IN NUMBER
28458 --Payables Encumbrance Upgrade Credit Account
28459  , p_source_27            IN NUMBER
28460 --Payables Encumbrance Upgrade Credit Amount
28461  , p_source_28            IN NUMBER
28462 --Invoice Currency Code
28463  , p_source_29            IN VARCHAR2
28464 --Payables Encumbrance Upgrade Credit Base Amount
28465  , p_source_30            IN NUMBER
28466 --Payables Encumbrance Upgrade Debit Account
28467  , p_source_31            IN NUMBER
28468 --Payables Encumbrance Upgrade Debit Amount
28469  , p_source_32            IN NUMBER
28470 --Payables Encumbrance Upgrade Debit Base Amount
28471  , p_source_33            IN NUMBER
28472 --Payables Encumbrance Upgrade Option
28473  , p_source_34            IN VARCHAR2
28474 --Invoice Exchange Date
28475  , p_source_36            IN DATE
28476 --Invoice Exchange Rate
28477  , p_source_37            IN NUMBER
28478 --Invoice Exchange Rate Type
28479  , p_source_38            IN VARCHAR2
28480 --Deferred Accounting End Date
28481  , p_source_39            IN DATE
28482 --Deferred Accounting Option
28483  , p_source_40            IN VARCHAR2
28484 --Deferred Accounting Start Date
28485  , p_source_41            IN DATE
28486 --Override Accounted Amount Indicator
28487  , p_source_42            IN VARCHAR2
28488  , p_source_42_meaning    IN VARCHAR2
28489 --Invoice Supplier Identifier
28490  , p_source_43            IN NUMBER
28491 --Invoice Supplier Site Identifier
28492  , p_source_44            IN NUMBER
28493 --Third Party Type
28494  , p_source_45            IN VARCHAR2
28495 --Parent Reversal Identifier
28496  , p_source_46            IN NUMBER
28497 --Invoice Distribution Statistical Amount
28498  , p_source_47            IN NUMBER
28499 --Invoice Distribution Tax Line Identifier
28500  , p_source_48            IN NUMBER
28501 --Invoice Distribution Tax Distribution Identifier from Tax
28502  , p_source_49            IN NUMBER
28503 --Invoice Distribution Summary Tax Line Identifier
28504  , p_source_50            IN NUMBER
28505 --Payables Upgrade Credit Encumbrance Type Identifier
28506  , p_source_51            IN NUMBER
28507 --Payables Upgrade Debit Encumbrance Type Identifier
28508  , p_source_52            IN NUMBER
28509 --Invoice Distribution Encumbrance Ledger Amount
28510  , p_source_53            IN NUMBER
28511 --Invoice Distribution Amount
28512  , p_source_55            IN NUMBER
28513 --Purchasing Encumbrance Option
28514  , p_source_60            IN VARCHAR2
28515  , p_source_60_meaning    IN VARCHAR2
28516 )
28517 IS
28518 
28519 l_component_type              VARCHAR2(80);
28520 l_component_code              VARCHAR2(30);
28521 l_component_type_code         VARCHAR2(1);
28522 l_component_appl_id           INTEGER;
28523 l_amb_context_code            VARCHAR2(30);
28524 l_entity_code                 VARCHAR2(30);
28525 l_event_class_code            VARCHAR2(30);
28526 l_ae_header_id                NUMBER;
28527 l_event_type_code             VARCHAR2(30);
28528 l_line_definition_code        VARCHAR2(30);
28529 l_line_definition_owner_code  VARCHAR2(1);
28530 --
28531 -- adr variables
28532 l_segment                     VARCHAR2(30);
28533 l_ccid                        NUMBER;
28534 l_adr_transaction_coa_id      NUMBER;
28535 l_adr_accounting_coa_id       NUMBER;
28536 l_adr_flexfield_segment_code  VARCHAR2(30);
28537 l_adr_flex_value_set_id       NUMBER;
28538 l_adr_value_type_code         VARCHAR2(30);
28539 l_adr_value_combination_id    NUMBER;
28540 l_adr_value_segment_code      VARCHAR2(30);
28541 
28542 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28543 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28544 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28545 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28546 
28547 -- 4262811 Variables ------------------------------------------------------------------------------------------
28548 l_entered_amt_idx             NUMBER;
28549 l_accted_amt_idx              NUMBER;
28550 l_acc_rev_flag                VARCHAR2(1);
28551 l_accrual_line_num            NUMBER;
28552 l_tmp_amt                     NUMBER;
28553 l_acc_rev_natural_side_code   VARCHAR2(1);
28554 
28555 l_num_entries                 NUMBER;
28556 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28557 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28558 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28559 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28560 l_recog_line_1                NUMBER;
28561 l_recog_line_2                NUMBER;
28562 
28566 
28563 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28564 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28565 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28567 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28568 
28569 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28570 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28571 
28572 ---------------------------------------------------------------------------------------------------------------
28573 
28574 
28575 --
28576 -- bulk performance
28577 --
28578 l_balance_type_code           VARCHAR2(1);
28579 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28580 l_log_module                  VARCHAR2(240);
28581 
28582 --
28583 -- Upgrade strategy
28584 --
28585 l_actual_upg_option           VARCHAR2(1);
28586 l_enc_upg_option           VARCHAR2(1);
28587 
28588 --
28589 BEGIN
28590 --
28591 IF g_log_enabled THEN
28592       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
28593 END IF;
28594 --
28595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28596 
28597       trace
28598          (p_msg      => 'BEGIN of AcctLineType_50'
28599          ,p_level    => C_LEVEL_PROCEDURE
28600          ,p_module   => l_log_module);
28601 
28602 END IF;
28603 --
28604 l_component_type             := 'AMB_JLT';
28605 l_component_code             := 'FV_AP_INV_PRICE_VAR_CR';
28606 l_component_type_code        := 'S';
28607 l_component_appl_id          :=  200;
28608 l_amb_context_code           := 'DEFAULT';
28609 l_entity_code                := 'AP_INVOICES';
28610 l_event_class_code           := 'INVOICES';
28611 l_event_type_code            := 'INVOICES_ALL';
28612 l_line_definition_owner_code := 'S';
28613 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
28614 --
28615 l_balance_type_code          := 'A';
28616 l_segment                     := NULL;
28617 l_ccid                        := NULL;
28618 l_adr_transaction_coa_id      := NULL;
28619 l_adr_accounting_coa_id       := NULL;
28620 l_adr_flexfield_segment_code  := NULL;
28621 l_adr_flex_value_set_id       := NULL;
28622 l_adr_value_type_code         := NULL;
28623 l_adr_value_combination_id    := NULL;
28624 l_adr_value_segment_code      := NULL;
28625 
28626 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28627 l_bflow_class_code           := '';    -- 4219869 Business Flow
28628 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28629 l_budgetary_control_flag     := 'Y';
28630 
28631 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28632 l_bflow_applied_to_amt       := NULL; -- 5132302
28633 l_entered_amt_idx            := NULL;          -- 4262811
28634 l_accted_amt_idx             := NULL;          -- 4262811
28635 l_acc_rev_flag               := NULL;          -- 4262811
28636 l_accrual_line_num           := NULL;          -- 4262811
28637 l_tmp_amt                    := NULL;          -- 4262811
28638 --
28639  
28640 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28641     l_balance_type_code <> 'B' THEN
28642 IF NVL(p_source_8,'
28643 ') =  'IPV' AND 
28644 NVL(p_source_60,'
28645 ') =  'Y' AND 
28646 ((p_source_53 <  0 AND 
28647 NVL(p_source_9,'
28648 ') =  'Y') OR 
28649 NVL(p_source_9,'
28650 ') =  'N')
28651  THEN 
28652 
28653    --
28654    XLA_AE_LINES_PKG.SetNewLine;
28655 
28656    p_balance_type_code          := l_balance_type_code;
28657    -- set the flag so later we will know whether the gain loss line needs to be created
28658    
28659    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28660      p_actual_flag :='A';
28661    END IF;
28662 
28663    --
28664    -- bulk performance
28665    --
28666    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28667                                       p_header_num   => 0); -- 4262811
28668    --
28669    -- set accounting line options
28670    --
28671    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28672            p_natural_side_code          => 'D'
28673          , p_gain_or_loss_flag          => 'N'
28674          , p_gl_transfer_mode_code      => 'S'
28675          , p_acct_entry_type_code       => 'A'
28676          , p_switch_side_flag           => 'N'
28677          , p_merge_duplicate_code       => 'N'
28678          );
28679    --
28680    l_acc_rev_natural_side_code := 'C';  -- 4262811
28681    -- 
28682    --
28683    -- set accounting line type info
28684    --
28685    xla_ae_lines_pkg.SetAcctLineType
28686       (p_component_type             => l_component_type
28687       ,p_event_type_code            => l_event_type_code
28688       ,p_line_definition_owner_code => l_line_definition_owner_code
28689       ,p_line_definition_code       => l_line_definition_code
28690       ,p_accounting_line_code       => l_component_code
28691       ,p_accounting_line_type_code  => l_component_type_code
28692       ,p_accounting_line_appl_id    => l_component_appl_id
28693       ,p_amb_context_code           => l_amb_context_code
28694       ,p_entity_code                => l_entity_code
28695       ,p_event_class_code           => l_event_class_code);
28696    --
28697    -- set accounting class
28698    --
28699    xla_ae_lines_pkg.SetAcctClass(
28700            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
28704    --
28701          , p_ae_header_id           => l_ae_header_id
28702          );
28703 
28705    -- set rounding class
28706    --
28707    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28708                       'ACCOUNTSPAYABLE';
28709 
28710    --
28711    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28712    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28713    --
28714    -- bulk performance
28715    --
28716    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28717 
28718    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28719       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28720 
28721    -- 4955764
28722    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28723       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28724 
28725    -- 4458381 Public Sector Enh
28726    
28727    --
28728    -- set accounting attributes for the line type
28729    --
28730    l_entered_amt_idx := 24;
28731    l_accted_amt_idx  := 29;
28732    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
28733    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28734    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
28735    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
28736    l_rec_acct_attrs.array_num_value(2)  := 
28737 xla_ae_sources_pkg.GetSystemSourceNum(
28738    p_source_code           => 'XLA_EVENT_APPL_ID'
28739  , p_source_type_code      => 'Y'
28740  , p_source_application_id =>  602
28741 );
28742    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
28743    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
28744    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
28745    l_rec_acct_attrs.array_char_value(4)  := 
28746 xla_ae_sources_pkg.GetSystemSourceChar(
28747    p_source_code           => 'XLA_ENTITY_CODE'
28748  , p_source_type_code      => 'Y'
28749  , p_source_application_id =>  602
28750 );
28751    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
28752    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
28753    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
28754    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
28755    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
28756    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
28757    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
28758    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
28759    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28760    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
28761    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
28762    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
28763    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
28764    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
28765    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28766    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
28767    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
28768    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
28769    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
28770    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
28771    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
28772    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
28773    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
28774    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
28775    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
28776    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
28777    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
28778    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
28779    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
28780    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
28781    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
28782    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
28783    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
28784    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
28785    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
28786    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
28787    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
28788    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
28789    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
28790    l_rec_acct_attrs.array_num_value(24)  := p_source_10;
28791    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
28792    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
28793    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
28794    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
28795    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
28796    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
28797    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
28801    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
28798    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
28799    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
28800    l_rec_acct_attrs.array_num_value(29)  := p_source_53;
28802    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
28803    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
28804    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
28805    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
28806    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
28807    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
28808    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
28809    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
28810    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
28811    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
28812    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
28813    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
28814    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
28815    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
28816    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
28817    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
28818    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
28819    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
28820    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
28821    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
28822    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
28823    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
28824    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
28825    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
28826    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
28827    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
28828    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
28829    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
28830    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
28831 
28832    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28833    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28834 
28835    ---------------------------------------------------------------------------------------------------------------
28836    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28837    ---------------------------------------------------------------------------------------------------------------
28838    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28839 
28840    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28841    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28842 
28843    IF xla_accounting_cache_pkg.GetValueChar
28844          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28845          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28846    AND l_bflow_method_code = 'PRIOR_ENTRY'
28847 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28848    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28849          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28850        )
28851    THEN
28852          xla_ae_lines_pkg.BflowUpgEntry
28853            (p_business_method_code    => l_bflow_method_code
28854            ,p_business_class_code     => l_bflow_class_code
28855            ,p_balance_type            => l_balance_type_code);
28856    ELSE
28857       NULL;
28858 -- No business flow processing for business flow method of NONE.
28859    END IF;
28860 
28861    --
28862    -- call analytical criteria
28863    --
28864    
28865    --
28866    -- call description
28867    --
28868    
28869 xla_ae_lines_pkg.SetLineDescription(
28870    p_ae_header_id => l_ae_header_id
28871   ,p_description  => Description_2 (
28872      p_application_id         => p_application_id
28873    , p_ae_header_id           => l_ae_header_id 
28874 , p_source_1 => p_source_1
28875    )
28876 );
28877 
28878 
28879    --
28880    -- call ADRs
28881    -- Bug 4922099
28882    --
28883    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28884         (NVL(l_actual_upg_option, 'N') = 'O') OR
28885         (NVL(l_enc_upg_option, 'N') = 'O')
28886       )
28887    THEN
28888    NULL;
28889    --
28890    --
28891    
28892   l_ccid := AcctDerRule_3(
28893            p_application_id           => p_application_id
28894          , p_ae_header_id             => l_ae_header_id 
28895 , p_source_2 => p_source_2
28896          , x_transaction_coa_id       => l_adr_transaction_coa_id
28897          , x_accounting_coa_id        => l_adr_accounting_coa_id
28898          , x_value_type_code          => l_adr_value_type_code
28899          , p_side                     => 'NA'
28900    );
28901 
28902    xla_ae_lines_pkg.set_ccid(
28903     p_code_combination_id          => l_ccid
28904   , p_value_type_code              => l_adr_value_type_code
28905   , p_transaction_coa_id           => l_adr_transaction_coa_id
28906   , p_accounting_coa_id            => l_adr_accounting_coa_id
28910   , p_component_code               => l_component_code
28907   , p_adr_code                     => 'AP_INVOICE_DIST'
28908   , p_adr_type_code                => 'S'
28909   , p_component_type               => l_component_type
28911   , p_component_type_code          => l_component_type_code
28912   , p_component_appl_id            => l_component_appl_id
28913   , p_amb_context_code             => l_amb_context_code
28914   , p_side                         => 'NA'
28915   );
28916 
28917 
28918    l_segment := AcctDerRule_8(
28919            p_application_id           => p_application_id
28920          , p_ae_header_id             => l_ae_header_id 
28921 , p_source_4 => p_source_4
28922 , p_source_5 => p_source_5
28923 , p_source_6 => p_source_6
28924          , x_transaction_coa_id       => l_adr_transaction_coa_id
28925          , x_accounting_coa_id        => l_adr_accounting_coa_id
28926          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
28927          , x_flex_value_set_id        => l_adr_flex_value_set_id
28928          , x_value_type_code          => l_adr_value_type_code
28929          , x_value_combination_id     => l_adr_value_combination_id
28930          , x_value_segment_code       => l_adr_value_segment_code
28931          , p_side                     => 'NA'
28932          , p_override_seg_flag        => 'Y'
28933    );
28934 
28935    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
28936 
28937       xla_ae_lines_pkg.set_segment(
28938           p_to_segment_code         => 'GL_ACCOUNT'
28939         , p_segment_value           => l_segment
28940         , p_from_segment_code       => l_adr_value_segment_code
28941         , p_from_combination_id     => l_adr_value_combination_id
28942         , p_value_type_code         => l_adr_value_type_code
28943         , p_transaction_coa_id      => l_adr_transaction_coa_id
28944         , p_accounting_coa_id       => l_adr_accounting_coa_id
28945         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
28946         , p_flex_value_set_id       => l_adr_flex_value_set_id
28947         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
28948         , p_adr_type_code           => 'S'
28949         , p_component_type          => l_component_type
28950         , p_component_code          => l_component_code
28951         , p_component_type_code     => l_component_type_code
28952         , p_component_appl_id       => l_component_appl_id
28953         , p_amb_context_code        => l_amb_context_code
28954         , p_entity_code             => 'AP_INVOICES'
28955         , p_event_class_code        => 'INVOICES'
28956         , p_side                    => 'NA'
28957         );
28958 
28959   END IF;
28960 
28961    --
28962    --
28963    END IF;
28964    --
28965    -- Bug 4922099
28966    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28967           (NVL(l_enc_upg_option, 'N') = 'O')
28968         ) AND
28969         (l_bflow_method_code = 'PRIOR_ENTRY')
28970       )
28971    THEN
28972       IF
28973       --
28974       1 = 2
28975       --
28976       THEN
28977       xla_accounting_err_pkg.build_message
28978                                     (p_appli_s_name            => 'XLA'
28979                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28980                                     ,p_token_1                 => 'LINE_NUMBER'
28981                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28982                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28983                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28984                                                                              l_component_type
28985                                                                             ,l_component_code
28986                                                                             ,l_component_type_code
28987                                                                             ,l_component_appl_id
28988                                                                             ,l_amb_context_code
28989                                                                             ,l_entity_code
28990                                                                             ,l_event_class_code
28991                                                                            )
28992                                     ,p_token_3                 => 'OWNER'
28993                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28994                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28995                                                                           ,p_lookup_code    => l_component_type_code
28996                                                                          )
28997                                     ,p_token_4                 => 'PRODUCT_NAME'
28998                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28999                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29000                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29001                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29005         IF (C_LEVEL_ERROR>= g_log_level) THEN
29002                                     ,p_ae_header_id            =>  NULL
29003                                        );
29004 
29006                  trace
29007                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29008                       ,p_level    => C_LEVEL_ERROR
29009                       ,p_module   => l_log_module);
29010         END IF;
29011       END IF;
29012    END IF;
29013    --
29014    --
29015    ------------------------------------------------------------------------------------------------
29016    -- 4219869 Business Flow
29017    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29018    -- Prior Entry.  Currently, the following code is always generated.
29019    ------------------------------------------------------------------------------------------------
29020    XLA_AE_LINES_PKG.ValidateCurrentLine;
29021 
29022    ------------------------------------------------------------------------------------
29023    -- 4219869 Business Flow
29024    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29025    ------------------------------------------------------------------------------------
29026    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29027 
29028    ----------------------------------------------------------------------------------
29029    -- 4219869 Business Flow
29030    -- Update journal entry status -- Need to generate this within IF <condition>
29031    ----------------------------------------------------------------------------------
29032    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29033          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29034          ,p_balance_type_code => l_balance_type_code
29035          );
29036 
29037    -------------------------------------------------------------------------------------------
29038    -- 4262811 - Generate the Accrual Reversal lines
29039    -------------------------------------------------------------------------------------------
29040    BEGIN
29041       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29042                               (g_array_event(p_event_id).array_value_num('header_index'));
29043       IF l_acc_rev_flag IS NULL THEN
29044          l_acc_rev_flag := 'N';
29045       END IF;
29046    EXCEPTION
29047       WHEN OTHERS THEN
29048          l_acc_rev_flag := 'N';
29049    END;
29050    --
29051    IF (l_acc_rev_flag = 'Y') THEN
29052 
29053        -- 4645092  ------------------------------------------------------------------------------
29054        -- To allow MPA report to determine if it should generate report process
29055        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29056        ------------------------------------------------------------------------------------------
29057 
29058        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29059        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29060    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29061    -- call ADRs
29062    -- Bug 4922099
29063    --
29064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29065         (NVL(l_actual_upg_option, 'N') = 'O') OR
29066         (NVL(l_enc_upg_option, 'N') = 'O')
29067       )
29068    THEN
29069    NULL;
29070    --
29071    --
29072    
29073   l_ccid := AcctDerRule_3(
29074            p_application_id           => p_application_id
29075          , p_ae_header_id             => l_ae_header_id 
29076 , p_source_2 => p_source_2
29077          , x_transaction_coa_id       => l_adr_transaction_coa_id
29078          , x_accounting_coa_id        => l_adr_accounting_coa_id
29079          , x_value_type_code          => l_adr_value_type_code
29080          , p_side                     => 'NA'
29081    );
29082 
29083    xla_ae_lines_pkg.set_ccid(
29084     p_code_combination_id          => l_ccid
29085   , p_value_type_code              => l_adr_value_type_code
29086   , p_transaction_coa_id           => l_adr_transaction_coa_id
29087   , p_accounting_coa_id            => l_adr_accounting_coa_id
29088   , p_adr_code                     => 'AP_INVOICE_DIST'
29089   , p_adr_type_code                => 'S'
29090   , p_component_type               => l_component_type
29091   , p_component_code               => l_component_code
29092   , p_component_type_code          => l_component_type_code
29093   , p_component_appl_id            => l_component_appl_id
29094   , p_amb_context_code             => l_amb_context_code
29095   , p_side                         => 'NA'
29096   );
29097 
29098 
29099    l_segment := AcctDerRule_8(
29100            p_application_id           => p_application_id
29101          , p_ae_header_id             => l_ae_header_id 
29102 , p_source_4 => p_source_4
29103 , p_source_5 => p_source_5
29104 , p_source_6 => p_source_6
29105          , x_transaction_coa_id       => l_adr_transaction_coa_id
29106          , x_accounting_coa_id        => l_adr_accounting_coa_id
29107          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
29108          , x_flex_value_set_id        => l_adr_flex_value_set_id
29109          , x_value_type_code          => l_adr_value_type_code
29110          , x_value_combination_id     => l_adr_value_combination_id
29111          , x_value_segment_code       => l_adr_value_segment_code
29112          , p_side                     => 'NA'
29113          , p_override_seg_flag        => 'Y'
29114    );
29115 
29116    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
29117 
29121         , p_from_segment_code       => l_adr_value_segment_code
29118       xla_ae_lines_pkg.set_segment(
29119           p_to_segment_code         => 'GL_ACCOUNT'
29120         , p_segment_value           => l_segment
29122         , p_from_combination_id     => l_adr_value_combination_id
29123         , p_value_type_code         => l_adr_value_type_code
29124         , p_transaction_coa_id      => l_adr_transaction_coa_id
29125         , p_accounting_coa_id       => l_adr_accounting_coa_id
29126         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
29127         , p_flex_value_set_id       => l_adr_flex_value_set_id
29128         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
29129         , p_adr_type_code           => 'S'
29130         , p_component_type          => l_component_type
29131         , p_component_code          => l_component_code
29132         , p_component_type_code     => l_component_type_code
29133         , p_component_appl_id       => l_component_appl_id
29134         , p_amb_context_code        => l_amb_context_code
29135         , p_entity_code             => 'AP_INVOICES'
29136         , p_event_class_code        => 'INVOICES'
29137         , p_side                    => 'NA'
29138         );
29139 
29140   END IF;
29141 
29142    --
29143    --
29144    END IF;
29145 
29146        --
29147        -- Update the line information that should be overwritten
29148        --
29149        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29150                                          p_header_num   => 1);
29151        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29152 
29153        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29154 
29155        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29156           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29157        END IF;
29158 
29159       --
29160       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29161       --
29162       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29163           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29164       ELSE
29165           ---------------------------------------------------------------------------------------------------
29166           -- 4262811a Switch Sign
29167           ---------------------------------------------------------------------------------------------------
29168           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29169           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29170                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29171           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29172                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29173           -- 5132302
29174           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29175                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29176 
29177       END IF;
29178 
29179       -- 4955764
29180       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29181       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29182 
29183 
29184       XLA_AE_LINES_PKG.ValidateCurrentLine;
29185       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29186 
29187       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29188                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29189                ,p_balance_type_code => l_balance_type_code);
29190 
29191    END IF;
29192 
29193    -----------------------------------------------------------------------------------------
29194    -- 4262811 Multiperiod Accounting
29195    -----------------------------------------------------------------------------------------
29196      -- No MPA option is assigned.
29197 
29198 
29199 END IF;
29200 END IF;
29201 --
29202 
29203 --
29204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29205    trace
29206       (p_msg      => 'END of AcctLineType_50'
29207       ,p_level    => C_LEVEL_PROCEDURE
29208       ,p_module   => l_log_module);
29209 END IF;
29210 --
29211 EXCEPTION
29212   WHEN xla_exceptions_pkg.application_exception THEN
29213       RAISE;
29214   WHEN OTHERS THEN
29215        xla_exceptions_pkg.raise_message
29216            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_50');
29217 END AcctLineType_50;
29218 --
29219 
29220 ---------------------------------------
29221 --
29222 -- PRIVATE FUNCTION
29223 --         AcctLineType_51
29224 --
29225 ---------------------------------------
29226 PROCEDURE AcctLineType_51 (
29227   p_application_id        IN NUMBER
29228  ,p_event_id              IN NUMBER
29229  ,p_calculate_acctd_flag  IN VARCHAR2
29230  ,p_calculate_g_l_flag    IN VARCHAR2
29231  ,p_actual_flag           IN OUT VARCHAR2
29232  ,p_balance_type_code     OUT VARCHAR2
29233  ,p_gain_or_loss_ref      OUT VARCHAR2
29234  
29235 --Invoice Distribution Description
29236  , p_source_1            IN VARCHAR2
29240  , p_source_7            IN VARCHAR2
29237 --Invoice Distribution Account
29238  , p_source_2            IN NUMBER
29239 --Payment Status Flag of the Invoice
29241 --Invoice Distribution Type
29242  , p_source_8            IN VARCHAR2
29243  , p_source_8_meaning    IN VARCHAR2
29244 --Federal Prior Year Flag
29245  , p_source_9            IN VARCHAR2
29246 --Invoice Distribution Encumbrance Amount
29247  , p_source_10            IN NUMBER
29248 --Accrue on Receipt Option
29249  , p_source_11            IN VARCHAR2
29250  , p_source_11_meaning    IN VARCHAR2
29251 --Accounting Reversal Indicator
29252  , p_source_15            IN VARCHAR2
29253 --Distribution Link Type
29254  , p_source_17            IN VARCHAR2
29255 --Allocation to Main Distribution Identifier
29256  , p_source_19            IN NUMBER
29257 --Invoice Identifier
29258  , p_source_20            IN NUMBER
29259 --Business Flow Accounts Payable Application Identifier
29260  , p_source_21            IN NUMBER
29261 --Business Flow Invoice Distribution Type
29262  , p_source_22            IN VARCHAR2
29263 --Business Flow Invoice Entity Code
29264  , p_source_23            IN VARCHAR2
29265 --Business Flow Invoice Distribution Identifier
29266  , p_source_24            IN NUMBER
29267 --Business Flow Invoice Identifier
29268  , p_source_25            IN NUMBER
29269 --Invoice Distribution Identifier
29270  , p_source_26            IN NUMBER
29271 --Payables Encumbrance Upgrade Credit Account
29272  , p_source_27            IN NUMBER
29273 --Payables Encumbrance Upgrade Credit Amount
29274  , p_source_28            IN NUMBER
29275 --Invoice Currency Code
29276  , p_source_29            IN VARCHAR2
29277 --Payables Encumbrance Upgrade Credit Base Amount
29278  , p_source_30            IN NUMBER
29279 --Payables Encumbrance Upgrade Debit Account
29280  , p_source_31            IN NUMBER
29281 --Payables Encumbrance Upgrade Debit Amount
29282  , p_source_32            IN NUMBER
29283 --Payables Encumbrance Upgrade Debit Base Amount
29284  , p_source_33            IN NUMBER
29285 --Payables Encumbrance Upgrade Option
29286  , p_source_34            IN VARCHAR2
29287 --Invoice Exchange Date
29288  , p_source_36            IN DATE
29289 --Invoice Exchange Rate
29290  , p_source_37            IN NUMBER
29291 --Invoice Exchange Rate Type
29292  , p_source_38            IN VARCHAR2
29293 --Deferred Accounting End Date
29294  , p_source_39            IN DATE
29295 --Deferred Accounting Option
29296  , p_source_40            IN VARCHAR2
29297 --Deferred Accounting Start Date
29298  , p_source_41            IN DATE
29299 --Override Accounted Amount Indicator
29300  , p_source_42            IN VARCHAR2
29301  , p_source_42_meaning    IN VARCHAR2
29302 --Invoice Supplier Identifier
29303  , p_source_43            IN NUMBER
29304 --Invoice Supplier Site Identifier
29305  , p_source_44            IN NUMBER
29306 --Third Party Type
29307  , p_source_45            IN VARCHAR2
29308 --Parent Reversal Identifier
29309  , p_source_46            IN NUMBER
29310 --Invoice Distribution Statistical Amount
29311  , p_source_47            IN NUMBER
29312 --Invoice Distribution Tax Line Identifier
29313  , p_source_48            IN NUMBER
29314 --Invoice Distribution Tax Distribution Identifier from Tax
29315  , p_source_49            IN NUMBER
29316 --Invoice Distribution Summary Tax Line Identifier
29317  , p_source_50            IN NUMBER
29318 --Payables Upgrade Credit Encumbrance Type Identifier
29319  , p_source_51            IN NUMBER
29320 --Payables Upgrade Debit Encumbrance Type Identifier
29321  , p_source_52            IN NUMBER
29322 --Invoice Distribution Encumbrance Ledger Amount
29323  , p_source_53            IN NUMBER
29324 --Invoice Distribution Amount
29325  , p_source_55            IN NUMBER
29326 --Purchasing Encumbrance Option
29327  , p_source_60            IN VARCHAR2
29328  , p_source_60_meaning    IN VARCHAR2
29329 )
29330 IS
29331 
29332 l_component_type              VARCHAR2(80);
29333 l_component_code              VARCHAR2(30);
29334 l_component_type_code         VARCHAR2(1);
29335 l_component_appl_id           INTEGER;
29336 l_amb_context_code            VARCHAR2(30);
29337 l_entity_code                 VARCHAR2(30);
29338 l_event_class_code            VARCHAR2(30);
29339 l_ae_header_id                NUMBER;
29340 l_event_type_code             VARCHAR2(30);
29341 l_line_definition_code        VARCHAR2(30);
29342 l_line_definition_owner_code  VARCHAR2(1);
29343 --
29344 -- adr variables
29345 l_segment                     VARCHAR2(30);
29346 l_ccid                        NUMBER;
29347 l_adr_transaction_coa_id      NUMBER;
29348 l_adr_accounting_coa_id       NUMBER;
29349 l_adr_flexfield_segment_code  VARCHAR2(30);
29350 l_adr_flex_value_set_id       NUMBER;
29351 l_adr_value_type_code         VARCHAR2(30);
29352 l_adr_value_combination_id    NUMBER;
29353 l_adr_value_segment_code      VARCHAR2(30);
29354 
29355 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29356 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29357 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29358 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29359 
29360 -- 4262811 Variables ------------------------------------------------------------------------------------------
29361 l_entered_amt_idx             NUMBER;
29362 l_accted_amt_idx              NUMBER;
29363 l_acc_rev_flag                VARCHAR2(1);
29367 
29364 l_accrual_line_num            NUMBER;
29365 l_tmp_amt                     NUMBER;
29366 l_acc_rev_natural_side_code   VARCHAR2(1);
29368 l_num_entries                 NUMBER;
29369 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29370 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29371 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29372 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29373 l_recog_line_1                NUMBER;
29374 l_recog_line_2                NUMBER;
29375 
29376 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29377 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29378 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29379 
29380 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29381 
29382 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29383 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29384 
29385 ---------------------------------------------------------------------------------------------------------------
29386 
29387 
29388 --
29389 -- bulk performance
29390 --
29391 l_balance_type_code           VARCHAR2(1);
29392 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29393 l_log_module                  VARCHAR2(240);
29394 
29395 --
29396 -- Upgrade strategy
29397 --
29398 l_actual_upg_option           VARCHAR2(1);
29399 l_enc_upg_option           VARCHAR2(1);
29400 
29401 --
29402 BEGIN
29403 --
29404 IF g_log_enabled THEN
29405       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
29406 END IF;
29407 --
29408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29409 
29410       trace
29411          (p_msg      => 'BEGIN of AcctLineType_51'
29412          ,p_level    => C_LEVEL_PROCEDURE
29413          ,p_module   => l_log_module);
29414 
29415 END IF;
29416 --
29417 l_component_type             := 'AMB_JLT';
29418 l_component_code             := 'FV_AP_INV_PRICE_VAR_DR';
29419 l_component_type_code        := 'S';
29420 l_component_appl_id          :=  200;
29421 l_amb_context_code           := 'DEFAULT';
29422 l_entity_code                := 'AP_INVOICES';
29423 l_event_class_code           := 'INVOICES';
29424 l_event_type_code            := 'INVOICES_ALL';
29425 l_line_definition_owner_code := 'S';
29426 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
29427 --
29428 l_balance_type_code          := 'A';
29429 l_segment                     := NULL;
29430 l_ccid                        := NULL;
29431 l_adr_transaction_coa_id      := NULL;
29432 l_adr_accounting_coa_id       := NULL;
29433 l_adr_flexfield_segment_code  := NULL;
29434 l_adr_flex_value_set_id       := NULL;
29435 l_adr_value_type_code         := NULL;
29436 l_adr_value_combination_id    := NULL;
29437 l_adr_value_segment_code      := NULL;
29438 
29439 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29440 l_bflow_class_code           := '';    -- 4219869 Business Flow
29441 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29442 l_budgetary_control_flag     := 'Y';
29443 
29444 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29445 l_bflow_applied_to_amt       := NULL; -- 5132302
29446 l_entered_amt_idx            := NULL;          -- 4262811
29447 l_accted_amt_idx             := NULL;          -- 4262811
29448 l_acc_rev_flag               := NULL;          -- 4262811
29449 l_accrual_line_num           := NULL;          -- 4262811
29450 l_tmp_amt                    := NULL;          -- 4262811
29451 --
29452  
29453 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29454     l_balance_type_code <> 'B' THEN
29455 IF NVL(p_source_8,'
29456 ') =  'IPV' AND 
29457 NVL(p_source_60,'
29458 ') =  'Y' AND 
29459 ((p_source_53 <  0 AND 
29460 NVL(p_source_9,'
29461 ') =  'Y') OR 
29462 NVL(p_source_9,'
29463 ') =  'N')
29464  THEN 
29465 
29466    --
29467    XLA_AE_LINES_PKG.SetNewLine;
29468 
29469    p_balance_type_code          := l_balance_type_code;
29470    -- set the flag so later we will know whether the gain loss line needs to be created
29471    
29472    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29473      p_actual_flag :='A';
29474    END IF;
29475 
29476    --
29477    -- bulk performance
29478    --
29479    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29480                                       p_header_num   => 0); -- 4262811
29481    --
29482    -- set accounting line options
29483    --
29484    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29485            p_natural_side_code          => 'C'
29486          , p_gain_or_loss_flag          => 'N'
29487          , p_gl_transfer_mode_code      => 'S'
29488          , p_acct_entry_type_code       => 'A'
29489          , p_switch_side_flag           => 'N'
29490          , p_merge_duplicate_code       => 'N'
29491          );
29492    --
29493    l_acc_rev_natural_side_code := 'D';  -- 4262811
29494    -- 
29495    --
29496    -- set accounting line type info
29497    --
29498    xla_ae_lines_pkg.SetAcctLineType
29499       (p_component_type             => l_component_type
29500       ,p_event_type_code            => l_event_type_code
29504       ,p_accounting_line_type_code  => l_component_type_code
29501       ,p_line_definition_owner_code => l_line_definition_owner_code
29502       ,p_line_definition_code       => l_line_definition_code
29503       ,p_accounting_line_code       => l_component_code
29505       ,p_accounting_line_appl_id    => l_component_appl_id
29506       ,p_amb_context_code           => l_amb_context_code
29507       ,p_entity_code                => l_entity_code
29508       ,p_event_class_code           => l_event_class_code);
29509    --
29510    -- set accounting class
29511    --
29512    xla_ae_lines_pkg.SetAcctClass(
29513            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
29514          , p_ae_header_id           => l_ae_header_id
29515          );
29516 
29517    --
29518    -- set rounding class
29519    --
29520    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29521                       'ACCOUNTSPAYABLE';
29522 
29523    --
29524    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29525    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29526    --
29527    -- bulk performance
29528    --
29529    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29530 
29531    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29532       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29533 
29534    -- 4955764
29535    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29536       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29537 
29538    -- 4458381 Public Sector Enh
29539    
29540    --
29541    -- set accounting attributes for the line type
29542    --
29543    l_entered_amt_idx := 24;
29544    l_accted_amt_idx  := 29;
29545    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
29546    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29547    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
29548    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
29549    l_rec_acct_attrs.array_num_value(2)  := 
29550 xla_ae_sources_pkg.GetSystemSourceNum(
29551    p_source_code           => 'XLA_EVENT_APPL_ID'
29552  , p_source_type_code      => 'Y'
29553  , p_source_application_id =>  602
29554 );
29555    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
29556    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
29557    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
29558    l_rec_acct_attrs.array_char_value(4)  := 
29559 xla_ae_sources_pkg.GetSystemSourceChar(
29560    p_source_code           => 'XLA_ENTITY_CODE'
29561  , p_source_type_code      => 'Y'
29562  , p_source_application_id =>  602
29563 );
29564    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
29565    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
29566    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
29567    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
29568    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
29569    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
29570    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
29571    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
29572    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29573    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
29574    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
29575    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
29576    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
29577    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
29578    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29579    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
29580    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
29581    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
29582    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
29583    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
29584    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
29585    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
29586    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
29587    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
29588    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
29589    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
29590    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
29591    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
29592    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
29593    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
29594    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
29595    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
29596    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
29597    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
29598    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
29599    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
29600    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
29604    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
29601    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
29602    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
29603    l_rec_acct_attrs.array_num_value(24)  := p_source_10;
29605    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
29606    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
29607    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
29608    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
29609    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
29610    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
29611    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
29612    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
29613    l_rec_acct_attrs.array_num_value(29)  := p_source_53;
29614    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
29615    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
29616    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
29617    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
29618    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
29619    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
29620    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
29621    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
29622    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
29623    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
29624    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
29625    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
29626    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
29627    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
29628    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
29629    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
29630    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
29631    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
29632    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
29633    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
29634    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
29635    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
29636    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
29637    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
29638    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
29639    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
29640    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
29641    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
29642    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
29643    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
29644 
29645    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29646    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29647 
29648    ---------------------------------------------------------------------------------------------------------------
29649    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29650    ---------------------------------------------------------------------------------------------------------------
29651    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29652 
29653    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29654    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29655 
29656    IF xla_accounting_cache_pkg.GetValueChar
29657          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29658          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29659    AND l_bflow_method_code = 'PRIOR_ENTRY'
29660 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29661    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29662          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29663        )
29664    THEN
29665          xla_ae_lines_pkg.BflowUpgEntry
29666            (p_business_method_code    => l_bflow_method_code
29667            ,p_business_class_code     => l_bflow_class_code
29668            ,p_balance_type            => l_balance_type_code);
29669    ELSE
29670       NULL;
29671 -- No business flow processing for business flow method of NONE.
29672    END IF;
29673 
29674    --
29675    -- call analytical criteria
29676    --
29677    
29678    --
29679    -- call description
29680    --
29681    
29682 xla_ae_lines_pkg.SetLineDescription(
29683    p_ae_header_id => l_ae_header_id
29684   ,p_description  => Description_2 (
29685      p_application_id         => p_application_id
29686    , p_ae_header_id           => l_ae_header_id 
29687 , p_source_1 => p_source_1
29688    )
29689 );
29690 
29691 
29692    --
29693    -- call ADRs
29694    -- Bug 4922099
29695    --
29696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29697         (NVL(l_actual_upg_option, 'N') = 'O') OR
29698         (NVL(l_enc_upg_option, 'N') = 'O')
29699       )
29700    THEN
29701    NULL;
29702    --
29703    --
29704    
29705   l_ccid := AcctDerRule_3(
29706            p_application_id           => p_application_id
29710          , x_accounting_coa_id        => l_adr_accounting_coa_id
29707          , p_ae_header_id             => l_ae_header_id 
29708 , p_source_2 => p_source_2
29709          , x_transaction_coa_id       => l_adr_transaction_coa_id
29711          , x_value_type_code          => l_adr_value_type_code
29712          , p_side                     => 'NA'
29713    );
29714 
29715    xla_ae_lines_pkg.set_ccid(
29716     p_code_combination_id          => l_ccid
29717   , p_value_type_code              => l_adr_value_type_code
29718   , p_transaction_coa_id           => l_adr_transaction_coa_id
29719   , p_accounting_coa_id            => l_adr_accounting_coa_id
29720   , p_adr_code                     => 'AP_INVOICE_DIST'
29721   , p_adr_type_code                => 'S'
29722   , p_component_type               => l_component_type
29723   , p_component_code               => l_component_code
29724   , p_component_type_code          => l_component_type_code
29725   , p_component_appl_id            => l_component_appl_id
29726   , p_amb_context_code             => l_amb_context_code
29727   , p_side                         => 'NA'
29728   );
29729 
29730 
29731    l_segment := AcctDerRule_12(
29732            p_application_id           => p_application_id
29733          , p_ae_header_id             => l_ae_header_id 
29734 , p_source_7 => p_source_7
29735 , p_source_8 => p_source_8
29736 , p_source_8_meaning => p_source_8_meaning
29737 , p_source_9 => p_source_9
29738 , p_source_10 => p_source_10
29739 , p_source_11 => p_source_11
29740 , p_source_11_meaning => p_source_11_meaning
29741          , x_transaction_coa_id       => l_adr_transaction_coa_id
29742          , x_accounting_coa_id        => l_adr_accounting_coa_id
29743          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
29744          , x_flex_value_set_id        => l_adr_flex_value_set_id
29745          , x_value_type_code          => l_adr_value_type_code
29746          , x_value_combination_id     => l_adr_value_combination_id
29747          , x_value_segment_code       => l_adr_value_segment_code
29748          , p_side                     => 'NA'
29749          , p_override_seg_flag        => 'Y'
29750    );
29751 
29752    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
29753 
29754       xla_ae_lines_pkg.set_segment(
29755           p_to_segment_code         => 'GL_ACCOUNT'
29756         , p_segment_value           => l_segment
29757         , p_from_segment_code       => l_adr_value_segment_code
29758         , p_from_combination_id     => l_adr_value_combination_id
29759         , p_value_type_code         => l_adr_value_type_code
29760         , p_transaction_coa_id      => l_adr_transaction_coa_id
29761         , p_accounting_coa_id       => l_adr_accounting_coa_id
29762         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
29763         , p_flex_value_set_id       => l_adr_flex_value_set_id
29764         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
29765         , p_adr_type_code           => 'S'
29766         , p_component_type          => l_component_type
29767         , p_component_code          => l_component_code
29768         , p_component_type_code     => l_component_type_code
29769         , p_component_appl_id       => l_component_appl_id
29770         , p_amb_context_code        => l_amb_context_code
29771         , p_entity_code             => 'AP_INVOICES'
29772         , p_event_class_code        => 'INVOICES'
29773         , p_side                    => 'NA'
29774         );
29775 
29776   END IF;
29777 
29778    --
29779    --
29780    END IF;
29781    --
29782    -- Bug 4922099
29783    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29784           (NVL(l_enc_upg_option, 'N') = 'O')
29785         ) AND
29786         (l_bflow_method_code = 'PRIOR_ENTRY')
29787       )
29788    THEN
29789       IF
29790       --
29791       1 = 2
29792       --
29793       THEN
29794       xla_accounting_err_pkg.build_message
29795                                     (p_appli_s_name            => 'XLA'
29796                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29797                                     ,p_token_1                 => 'LINE_NUMBER'
29798                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29799                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29800                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29801                                                                              l_component_type
29802                                                                             ,l_component_code
29803                                                                             ,l_component_type_code
29804                                                                             ,l_component_appl_id
29805                                                                             ,l_amb_context_code
29806                                                                             ,l_entity_code
29807                                                                             ,l_event_class_code
29808                                                                            )
29809                                     ,p_token_3                 => 'OWNER'
29810                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29811                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29815                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29812                                                                           ,p_lookup_code    => l_component_type_code
29813                                                                          )
29814                                     ,p_token_4                 => 'PRODUCT_NAME'
29816                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29817                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29818                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29819                                     ,p_ae_header_id            =>  NULL
29820                                        );
29821 
29822         IF (C_LEVEL_ERROR>= g_log_level) THEN
29823                  trace
29824                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29825                       ,p_level    => C_LEVEL_ERROR
29826                       ,p_module   => l_log_module);
29827         END IF;
29828       END IF;
29829    END IF;
29830    --
29831    --
29832    ------------------------------------------------------------------------------------------------
29833    -- 4219869 Business Flow
29834    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29835    -- Prior Entry.  Currently, the following code is always generated.
29836    ------------------------------------------------------------------------------------------------
29837    XLA_AE_LINES_PKG.ValidateCurrentLine;
29838 
29839    ------------------------------------------------------------------------------------
29840    -- 4219869 Business Flow
29841    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29842    ------------------------------------------------------------------------------------
29843    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29844 
29845    ----------------------------------------------------------------------------------
29846    -- 4219869 Business Flow
29847    -- Update journal entry status -- Need to generate this within IF <condition>
29848    ----------------------------------------------------------------------------------
29849    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29850          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29851          ,p_balance_type_code => l_balance_type_code
29852          );
29853 
29854    -------------------------------------------------------------------------------------------
29855    -- 4262811 - Generate the Accrual Reversal lines
29856    -------------------------------------------------------------------------------------------
29857    BEGIN
29858       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29859                               (g_array_event(p_event_id).array_value_num('header_index'));
29860       IF l_acc_rev_flag IS NULL THEN
29861          l_acc_rev_flag := 'N';
29862       END IF;
29863    EXCEPTION
29864       WHEN OTHERS THEN
29865          l_acc_rev_flag := 'N';
29866    END;
29867    --
29868    IF (l_acc_rev_flag = 'Y') THEN
29869 
29870        -- 4645092  ------------------------------------------------------------------------------
29871        -- To allow MPA report to determine if it should generate report process
29872        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29873        ------------------------------------------------------------------------------------------
29874 
29875        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29876        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29877    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29878    -- call ADRs
29879    -- Bug 4922099
29880    --
29881    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29882         (NVL(l_actual_upg_option, 'N') = 'O') OR
29883         (NVL(l_enc_upg_option, 'N') = 'O')
29884       )
29885    THEN
29886    NULL;
29887    --
29888    --
29889    
29890   l_ccid := AcctDerRule_3(
29891            p_application_id           => p_application_id
29892          , p_ae_header_id             => l_ae_header_id 
29893 , p_source_2 => p_source_2
29894          , x_transaction_coa_id       => l_adr_transaction_coa_id
29895          , x_accounting_coa_id        => l_adr_accounting_coa_id
29896          , x_value_type_code          => l_adr_value_type_code
29897          , p_side                     => 'NA'
29898    );
29899 
29900    xla_ae_lines_pkg.set_ccid(
29901     p_code_combination_id          => l_ccid
29902   , p_value_type_code              => l_adr_value_type_code
29903   , p_transaction_coa_id           => l_adr_transaction_coa_id
29904   , p_accounting_coa_id            => l_adr_accounting_coa_id
29905   , p_adr_code                     => 'AP_INVOICE_DIST'
29906   , p_adr_type_code                => 'S'
29907   , p_component_type               => l_component_type
29908   , p_component_code               => l_component_code
29909   , p_component_type_code          => l_component_type_code
29910   , p_component_appl_id            => l_component_appl_id
29911   , p_amb_context_code             => l_amb_context_code
29912   , p_side                         => 'NA'
29913   );
29914 
29915 
29916    l_segment := AcctDerRule_12(
29917            p_application_id           => p_application_id
29918          , p_ae_header_id             => l_ae_header_id 
29919 , p_source_7 => p_source_7
29923 , p_source_10 => p_source_10
29920 , p_source_8 => p_source_8
29921 , p_source_8_meaning => p_source_8_meaning
29922 , p_source_9 => p_source_9
29924 , p_source_11 => p_source_11
29925 , p_source_11_meaning => p_source_11_meaning
29926          , x_transaction_coa_id       => l_adr_transaction_coa_id
29927          , x_accounting_coa_id        => l_adr_accounting_coa_id
29928          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
29929          , x_flex_value_set_id        => l_adr_flex_value_set_id
29930          , x_value_type_code          => l_adr_value_type_code
29931          , x_value_combination_id     => l_adr_value_combination_id
29932          , x_value_segment_code       => l_adr_value_segment_code
29933          , p_side                     => 'NA'
29934          , p_override_seg_flag        => 'Y'
29935    );
29936 
29937    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
29938 
29939       xla_ae_lines_pkg.set_segment(
29940           p_to_segment_code         => 'GL_ACCOUNT'
29941         , p_segment_value           => l_segment
29942         , p_from_segment_code       => l_adr_value_segment_code
29943         , p_from_combination_id     => l_adr_value_combination_id
29944         , p_value_type_code         => l_adr_value_type_code
29945         , p_transaction_coa_id      => l_adr_transaction_coa_id
29946         , p_accounting_coa_id       => l_adr_accounting_coa_id
29947         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
29948         , p_flex_value_set_id       => l_adr_flex_value_set_id
29949         , p_adr_code                => 'FV_490X01_OBL_ACCOUNT'
29950         , p_adr_type_code           => 'S'
29951         , p_component_type          => l_component_type
29952         , p_component_code          => l_component_code
29953         , p_component_type_code     => l_component_type_code
29954         , p_component_appl_id       => l_component_appl_id
29955         , p_amb_context_code        => l_amb_context_code
29956         , p_entity_code             => 'AP_INVOICES'
29957         , p_event_class_code        => 'INVOICES'
29958         , p_side                    => 'NA'
29959         );
29960 
29961   END IF;
29962 
29963    --
29964    --
29965    END IF;
29966 
29967        --
29968        -- Update the line information that should be overwritten
29969        --
29970        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29971                                          p_header_num   => 1);
29972        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29973 
29974        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29975 
29976        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29977           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29978        END IF;
29979 
29980       --
29981       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29982       --
29983       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29984           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29985       ELSE
29986           ---------------------------------------------------------------------------------------------------
29987           -- 4262811a Switch Sign
29988           ---------------------------------------------------------------------------------------------------
29989           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29990           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29991                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29992           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29993                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29994           -- 5132302
29995           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29996                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29997 
29998       END IF;
29999 
30000       -- 4955764
30001       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30002       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30003 
30004 
30005       XLA_AE_LINES_PKG.ValidateCurrentLine;
30006       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30007 
30008       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30009                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30010                ,p_balance_type_code => l_balance_type_code);
30011 
30012    END IF;
30013 
30014    -----------------------------------------------------------------------------------------
30015    -- 4262811 Multiperiod Accounting
30016    -----------------------------------------------------------------------------------------
30017      -- No MPA option is assigned.
30018 
30019 
30020 END IF;
30021 END IF;
30022 --
30023 
30024 --
30025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30026    trace
30027       (p_msg      => 'END of AcctLineType_51'
30028       ,p_level    => C_LEVEL_PROCEDURE
30029       ,p_module   => l_log_module);
30033   WHEN xla_exceptions_pkg.application_exception THEN
30030 END IF;
30031 --
30032 EXCEPTION
30034       RAISE;
30035   WHEN OTHERS THEN
30036        xla_exceptions_pkg.raise_message
30037            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_51');
30038 END AcctLineType_51;
30039 --
30040 
30041 ---------------------------------------
30042 --
30043 -- PRIVATE FUNCTION
30044 --         AcctLineType_52
30045 --
30046 ---------------------------------------
30047 PROCEDURE AcctLineType_52 (
30048   p_application_id        IN NUMBER
30049  ,p_event_id              IN NUMBER
30050  ,p_calculate_acctd_flag  IN VARCHAR2
30051  ,p_calculate_g_l_flag    IN VARCHAR2
30052  ,p_actual_flag           IN OUT VARCHAR2
30053  ,p_balance_type_code     OUT VARCHAR2
30054  ,p_gain_or_loss_ref      OUT VARCHAR2
30055  
30056 --Invoice Distribution Description
30057  , p_source_1            IN VARCHAR2
30058 --Invoice Distribution Account
30059  , p_source_2            IN NUMBER
30060 --Invoice Distribution Type
30061  , p_source_8            IN VARCHAR2
30062  , p_source_8_meaning    IN VARCHAR2
30063 --Federal Prior Year Flag
30064  , p_source_9            IN VARCHAR2
30065 --Accrue on Receipt Option
30066  , p_source_11            IN VARCHAR2
30067  , p_source_11_meaning    IN VARCHAR2
30068 --Purchase Order Distribution Identifier
30069  , p_source_12            IN NUMBER
30070 --Accounting Reversal Indicator
30071  , p_source_15            IN VARCHAR2
30072 --Distribution Link Type
30073  , p_source_17            IN VARCHAR2
30074 --Allocation to Main Distribution Identifier
30075  , p_source_19            IN NUMBER
30076 --Invoice Identifier
30077  , p_source_20            IN NUMBER
30078 --Business Flow Accounts Payable Application Identifier
30079  , p_source_21            IN NUMBER
30080 --Business Flow Invoice Distribution Type
30081  , p_source_22            IN VARCHAR2
30082 --Business Flow Invoice Entity Code
30083  , p_source_23            IN VARCHAR2
30084 --Business Flow Invoice Distribution Identifier
30085  , p_source_24            IN NUMBER
30086 --Business Flow Invoice Identifier
30087  , p_source_25            IN NUMBER
30088 --Invoice Distribution Identifier
30089  , p_source_26            IN NUMBER
30090 --Payables Encumbrance Upgrade Credit Account
30091  , p_source_27            IN NUMBER
30092 --Payables Encumbrance Upgrade Credit Amount
30093  , p_source_28            IN NUMBER
30094 --Invoice Currency Code
30095  , p_source_29            IN VARCHAR2
30096 --Payables Encumbrance Upgrade Credit Base Amount
30097  , p_source_30            IN NUMBER
30098 --Payables Encumbrance Upgrade Debit Account
30099  , p_source_31            IN NUMBER
30100 --Payables Encumbrance Upgrade Debit Amount
30101  , p_source_32            IN NUMBER
30102 --Payables Encumbrance Upgrade Debit Base Amount
30103  , p_source_33            IN NUMBER
30104 --Payables Encumbrance Upgrade Option
30105  , p_source_34            IN VARCHAR2
30106 --Invoice Exchange Date
30107  , p_source_36            IN DATE
30108 --Invoice Exchange Rate
30109  , p_source_37            IN NUMBER
30110 --Invoice Exchange Rate Type
30111  , p_source_38            IN VARCHAR2
30112 --Deferred Accounting End Date
30113  , p_source_39            IN DATE
30114 --Deferred Accounting Option
30115  , p_source_40            IN VARCHAR2
30116 --Deferred Accounting Start Date
30117  , p_source_41            IN DATE
30118 --Override Accounted Amount Indicator
30119  , p_source_42            IN VARCHAR2
30120  , p_source_42_meaning    IN VARCHAR2
30121 --Invoice Supplier Identifier
30122  , p_source_43            IN NUMBER
30123 --Invoice Supplier Site Identifier
30124  , p_source_44            IN NUMBER
30125 --Third Party Type
30126  , p_source_45            IN VARCHAR2
30127 --Parent Reversal Identifier
30128  , p_source_46            IN NUMBER
30129 --Invoice Distribution Statistical Amount
30130  , p_source_47            IN NUMBER
30131 --Invoice Distribution Tax Line Identifier
30132  , p_source_48            IN NUMBER
30133 --Invoice Distribution Tax Distribution Identifier from Tax
30134  , p_source_49            IN NUMBER
30135 --Invoice Distribution Summary Tax Line Identifier
30136  , p_source_50            IN NUMBER
30137 --Payables Upgrade Credit Encumbrance Type Identifier
30138  , p_source_51            IN NUMBER
30139 --Payables Upgrade Debit Encumbrance Type Identifier
30140  , p_source_52            IN NUMBER
30141 --Invoice Distribution Amount
30142  , p_source_55            IN NUMBER
30143 --Purchasing Encumbrance Option
30144  , p_source_60            IN VARCHAR2
30145  , p_source_60_meaning    IN VARCHAR2
30146 --Quantity Variance Amount
30147  , p_source_62            IN NUMBER
30148 --Quantity Variance Amount in Ledger Currency
30149  , p_source_63            IN NUMBER
30150 )
30151 IS
30152 
30153 l_component_type              VARCHAR2(80);
30154 l_component_code              VARCHAR2(30);
30155 l_component_type_code         VARCHAR2(1);
30156 l_component_appl_id           INTEGER;
30157 l_amb_context_code            VARCHAR2(30);
30158 l_entity_code                 VARCHAR2(30);
30159 l_event_class_code            VARCHAR2(30);
30160 l_ae_header_id                NUMBER;
30161 l_event_type_code             VARCHAR2(30);
30162 l_line_definition_code        VARCHAR2(30);
30163 l_line_definition_owner_code  VARCHAR2(1);
30164 --
30165 -- adr variables
30166 l_segment                     VARCHAR2(30);
30170 l_adr_flexfield_segment_code  VARCHAR2(30);
30167 l_ccid                        NUMBER;
30168 l_adr_transaction_coa_id      NUMBER;
30169 l_adr_accounting_coa_id       NUMBER;
30171 l_adr_flex_value_set_id       NUMBER;
30172 l_adr_value_type_code         VARCHAR2(30);
30173 l_adr_value_combination_id    NUMBER;
30174 l_adr_value_segment_code      VARCHAR2(30);
30175 
30176 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30177 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30178 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30179 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30180 
30181 -- 4262811 Variables ------------------------------------------------------------------------------------------
30182 l_entered_amt_idx             NUMBER;
30183 l_accted_amt_idx              NUMBER;
30184 l_acc_rev_flag                VARCHAR2(1);
30185 l_accrual_line_num            NUMBER;
30186 l_tmp_amt                     NUMBER;
30187 l_acc_rev_natural_side_code   VARCHAR2(1);
30188 
30189 l_num_entries                 NUMBER;
30190 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30191 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30192 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30193 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30194 l_recog_line_1                NUMBER;
30195 l_recog_line_2                NUMBER;
30196 
30197 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30198 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30199 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30200 
30201 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30202 
30203 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30204 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30205 
30206 ---------------------------------------------------------------------------------------------------------------
30207 
30208 
30209 --
30210 -- bulk performance
30211 --
30212 l_balance_type_code           VARCHAR2(1);
30213 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30214 l_log_module                  VARCHAR2(240);
30215 
30216 --
30217 -- Upgrade strategy
30218 --
30219 l_actual_upg_option           VARCHAR2(1);
30220 l_enc_upg_option           VARCHAR2(1);
30221 
30222 --
30223 BEGIN
30224 --
30225 IF g_log_enabled THEN
30226       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
30227 END IF;
30228 --
30229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30230 
30231       trace
30232          (p_msg      => 'BEGIN of AcctLineType_52'
30233          ,p_level    => C_LEVEL_PROCEDURE
30234          ,p_module   => l_log_module);
30235 
30236 END IF;
30237 --
30238 l_component_type             := 'AMB_JLT';
30239 l_component_code             := 'FV_AP_INV_QTY_VAR_CR';
30240 l_component_type_code        := 'S';
30241 l_component_appl_id          :=  200;
30242 l_amb_context_code           := 'DEFAULT';
30243 l_entity_code                := 'AP_INVOICES';
30244 l_event_class_code           := 'INVOICES';
30245 l_event_type_code            := 'INVOICES_ALL';
30246 l_line_definition_owner_code := 'S';
30247 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
30248 --
30249 l_balance_type_code          := 'A';
30250 l_segment                     := NULL;
30251 l_ccid                        := NULL;
30252 l_adr_transaction_coa_id      := NULL;
30253 l_adr_accounting_coa_id       := NULL;
30254 l_adr_flexfield_segment_code  := NULL;
30255 l_adr_flex_value_set_id       := NULL;
30256 l_adr_value_type_code         := NULL;
30257 l_adr_value_combination_id    := NULL;
30258 l_adr_value_segment_code      := NULL;
30259 
30260 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30261 l_bflow_class_code           := '';    -- 4219869 Business Flow
30262 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30263 l_budgetary_control_flag     := 'Y';
30264 
30265 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30266 l_bflow_applied_to_amt       := NULL; -- 5132302
30267 l_entered_amt_idx            := NULL;          -- 4262811
30268 l_accted_amt_idx             := NULL;          -- 4262811
30269 l_acc_rev_flag               := NULL;          -- 4262811
30270 l_accrual_line_num           := NULL;          -- 4262811
30271 l_tmp_amt                    := NULL;          -- 4262811
30272 --
30273  
30274 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30275     l_balance_type_code <> 'B' THEN
30276 IF NVL(p_source_8,'
30277 ') <>  'ACCRUAL' AND 
30278 p_source_62 IS NOT NULL AND 
30279 NVL(p_source_60,'
30280 ') =  'Y'
30281  THEN 
30282 
30283    --
30284    XLA_AE_LINES_PKG.SetNewLine;
30285 
30286    p_balance_type_code          := l_balance_type_code;
30287    -- set the flag so later we will know whether the gain loss line needs to be created
30288    
30289    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30290      p_actual_flag :='A';
30291    END IF;
30292 
30293    --
30294    -- bulk performance
30295    --
30299    -- set accounting line options
30296    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30297                                       p_header_num   => 0); -- 4262811
30298    --
30300    --
30301    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30302            p_natural_side_code          => 'C'
30303          , p_gain_or_loss_flag          => 'N'
30304          , p_gl_transfer_mode_code      => 'S'
30305          , p_acct_entry_type_code       => 'A'
30306          , p_switch_side_flag           => 'N'
30307          , p_merge_duplicate_code       => 'N'
30308          );
30309    --
30310    l_acc_rev_natural_side_code := 'D';  -- 4262811
30311    -- 
30312    --
30313    -- set accounting line type info
30314    --
30315    xla_ae_lines_pkg.SetAcctLineType
30316       (p_component_type             => l_component_type
30317       ,p_event_type_code            => l_event_type_code
30318       ,p_line_definition_owner_code => l_line_definition_owner_code
30319       ,p_line_definition_code       => l_line_definition_code
30320       ,p_accounting_line_code       => l_component_code
30321       ,p_accounting_line_type_code  => l_component_type_code
30322       ,p_accounting_line_appl_id    => l_component_appl_id
30323       ,p_amb_context_code           => l_amb_context_code
30324       ,p_entity_code                => l_entity_code
30325       ,p_event_class_code           => l_event_class_code);
30326    --
30327    -- set accounting class
30328    --
30329    xla_ae_lines_pkg.SetAcctClass(
30330            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
30331          , p_ae_header_id           => l_ae_header_id
30332          );
30333 
30334    --
30335    -- set rounding class
30336    --
30337    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30338                       'ACCOUNTSPAYABLE';
30339 
30340    --
30341    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30342    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30343    --
30344    -- bulk performance
30345    --
30346    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30347 
30348    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30349       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30350 
30351    -- 4955764
30352    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30353       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30354 
30355    -- 4458381 Public Sector Enh
30356    
30357    --
30358    -- set accounting attributes for the line type
30359    --
30360    l_entered_amt_idx := 24;
30361    l_accted_amt_idx  := 29;
30362    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
30363    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30364    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
30365    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
30366    l_rec_acct_attrs.array_num_value(2)  := 
30367 xla_ae_sources_pkg.GetSystemSourceNum(
30368    p_source_code           => 'XLA_EVENT_APPL_ID'
30369  , p_source_type_code      => 'Y'
30370  , p_source_application_id =>  602
30371 );
30372    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
30373    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
30374    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
30375    l_rec_acct_attrs.array_char_value(4)  := 
30376 xla_ae_sources_pkg.GetSystemSourceChar(
30377    p_source_code           => 'XLA_ENTITY_CODE'
30378  , p_source_type_code      => 'Y'
30379  , p_source_application_id =>  602
30380 );
30381    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
30382    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
30383    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
30384    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
30385    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
30386    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
30387    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
30388    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
30389    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30390    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
30391    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
30392    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
30393    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
30394    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
30395    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30396    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
30397    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
30398    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
30399    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
30400    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
30401    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
30402    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
30403    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
30404    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
30408    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
30405    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
30406    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
30407    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
30409    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
30410    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
30411    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
30412    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
30413    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
30414    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
30415    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
30416    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
30417    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
30418    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
30419    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
30420    l_rec_acct_attrs.array_num_value(24)  := p_source_62;
30421    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
30422    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
30423    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
30424    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
30425    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
30426    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
30427    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
30428    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
30429    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
30430    l_rec_acct_attrs.array_num_value(29)  := p_source_63;
30431    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
30432    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
30433    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
30434    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
30435    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
30436    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
30437    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
30438    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
30439    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
30440    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
30441    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
30442    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
30443    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
30444    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
30445    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
30446    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
30447    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
30448    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
30449    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
30450    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
30451    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
30452    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
30453    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
30454    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
30455    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
30456    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
30457    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
30458    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
30459    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
30460    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
30461 
30462    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30463    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30464 
30465    ---------------------------------------------------------------------------------------------------------------
30466    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30467    ---------------------------------------------------------------------------------------------------------------
30468    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30469 
30470    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30471    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30472 
30473    IF xla_accounting_cache_pkg.GetValueChar
30474          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30475          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30476    AND l_bflow_method_code = 'PRIOR_ENTRY'
30477 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30478    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30479          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30480        )
30481    THEN
30482          xla_ae_lines_pkg.BflowUpgEntry
30483            (p_business_method_code    => l_bflow_method_code
30484            ,p_business_class_code     => l_bflow_class_code
30485            ,p_balance_type            => l_balance_type_code);
30486    ELSE
30487       NULL;
30488 -- No business flow processing for business flow method of NONE.
30489    END IF;
30490 
30491    --
30492    -- call analytical criteria
30493    --
30494    
30498    
30495    --
30496    -- call description
30497    --
30499 xla_ae_lines_pkg.SetLineDescription(
30500    p_ae_header_id => l_ae_header_id
30501   ,p_description  => Description_2 (
30502      p_application_id         => p_application_id
30503    , p_ae_header_id           => l_ae_header_id 
30504 , p_source_1 => p_source_1
30505    )
30506 );
30507 
30508 
30509    --
30510    -- call ADRs
30511    -- Bug 4922099
30512    --
30513    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30514         (NVL(l_actual_upg_option, 'N') = 'O') OR
30515         (NVL(l_enc_upg_option, 'N') = 'O')
30516       )
30517    THEN
30518    NULL;
30519    --
30520    --
30521    
30522   l_ccid := AcctDerRule_3(
30523            p_application_id           => p_application_id
30524          , p_ae_header_id             => l_ae_header_id 
30525 , p_source_2 => p_source_2
30526          , x_transaction_coa_id       => l_adr_transaction_coa_id
30527          , x_accounting_coa_id        => l_adr_accounting_coa_id
30528          , x_value_type_code          => l_adr_value_type_code
30529          , p_side                     => 'NA'
30530    );
30531 
30532    xla_ae_lines_pkg.set_ccid(
30533     p_code_combination_id          => l_ccid
30534   , p_value_type_code              => l_adr_value_type_code
30535   , p_transaction_coa_id           => l_adr_transaction_coa_id
30536   , p_accounting_coa_id            => l_adr_accounting_coa_id
30537   , p_adr_code                     => 'AP_INVOICE_DIST'
30538   , p_adr_type_code                => 'S'
30539   , p_component_type               => l_component_type
30540   , p_component_code               => l_component_code
30541   , p_component_type_code          => l_component_type_code
30542   , p_component_appl_id            => l_component_appl_id
30543   , p_amb_context_code             => l_amb_context_code
30544   , p_side                         => 'NA'
30545   );
30546 
30547 
30548    l_segment := AcctDerRule_16(
30549            p_application_id           => p_application_id
30550          , p_ae_header_id             => l_ae_header_id 
30551 , p_source_9 => p_source_9
30552 , p_source_11 => p_source_11
30553 , p_source_11_meaning => p_source_11_meaning
30554 , p_source_12 => p_source_12
30555          , x_transaction_coa_id       => l_adr_transaction_coa_id
30556          , x_accounting_coa_id        => l_adr_accounting_coa_id
30557          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
30558          , x_flex_value_set_id        => l_adr_flex_value_set_id
30559          , x_value_type_code          => l_adr_value_type_code
30560          , x_value_combination_id     => l_adr_value_combination_id
30561          , x_value_segment_code       => l_adr_value_segment_code
30562          , p_side                     => 'NA'
30563          , p_override_seg_flag        => 'Y'
30564    );
30565 
30566    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
30567 
30568       xla_ae_lines_pkg.set_segment(
30569           p_to_segment_code         => 'GL_ACCOUNT'
30570         , p_segment_value           => l_segment
30571         , p_from_segment_code       => l_adr_value_segment_code
30572         , p_from_combination_id     => l_adr_value_combination_id
30573         , p_value_type_code         => l_adr_value_type_code
30574         , p_transaction_coa_id      => l_adr_transaction_coa_id
30575         , p_accounting_coa_id       => l_adr_accounting_coa_id
30576         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
30577         , p_flex_value_set_id       => l_adr_flex_value_set_id
30578         , p_adr_code                => 'FV_QUAN_VAR_ACC_CR'
30579         , p_adr_type_code           => 'S'
30580         , p_component_type          => l_component_type
30581         , p_component_code          => l_component_code
30582         , p_component_type_code     => l_component_type_code
30583         , p_component_appl_id       => l_component_appl_id
30584         , p_amb_context_code        => l_amb_context_code
30585         , p_entity_code             => 'AP_INVOICES'
30586         , p_event_class_code        => 'INVOICES'
30587         , p_side                    => 'NA'
30588         );
30589 
30590   END IF;
30591 
30592    --
30593    --
30594    END IF;
30595    --
30596    -- Bug 4922099
30597    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30598           (NVL(l_enc_upg_option, 'N') = 'O')
30599         ) AND
30600         (l_bflow_method_code = 'PRIOR_ENTRY')
30601       )
30602    THEN
30603       IF
30604       --
30605       1 = 2
30606       --
30607       THEN
30608       xla_accounting_err_pkg.build_message
30609                                     (p_appli_s_name            => 'XLA'
30610                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30611                                     ,p_token_1                 => 'LINE_NUMBER'
30612                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30613                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30614                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30615                                                                              l_component_type
30616                                                                             ,l_component_code
30617                                                                             ,l_component_type_code
30621                                                                             ,l_event_class_code
30618                                                                             ,l_component_appl_id
30619                                                                             ,l_amb_context_code
30620                                                                             ,l_entity_code
30622                                                                            )
30623                                     ,p_token_3                 => 'OWNER'
30624                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30625                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30626                                                                           ,p_lookup_code    => l_component_type_code
30627                                                                          )
30628                                     ,p_token_4                 => 'PRODUCT_NAME'
30629                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30630                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30631                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30632                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30633                                     ,p_ae_header_id            =>  NULL
30634                                        );
30635 
30636         IF (C_LEVEL_ERROR>= g_log_level) THEN
30637                  trace
30638                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30639                       ,p_level    => C_LEVEL_ERROR
30640                       ,p_module   => l_log_module);
30641         END IF;
30642       END IF;
30643    END IF;
30644    --
30645    --
30646    ------------------------------------------------------------------------------------------------
30647    -- 4219869 Business Flow
30648    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30649    -- Prior Entry.  Currently, the following code is always generated.
30650    ------------------------------------------------------------------------------------------------
30651    XLA_AE_LINES_PKG.ValidateCurrentLine;
30652 
30653    ------------------------------------------------------------------------------------
30654    -- 4219869 Business Flow
30655    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30656    ------------------------------------------------------------------------------------
30657    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30658 
30659    ----------------------------------------------------------------------------------
30660    -- 4219869 Business Flow
30661    -- Update journal entry status -- Need to generate this within IF <condition>
30662    ----------------------------------------------------------------------------------
30663    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30664          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30665          ,p_balance_type_code => l_balance_type_code
30666          );
30667 
30668    -------------------------------------------------------------------------------------------
30669    -- 4262811 - Generate the Accrual Reversal lines
30670    -------------------------------------------------------------------------------------------
30671    BEGIN
30672       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30673                               (g_array_event(p_event_id).array_value_num('header_index'));
30674       IF l_acc_rev_flag IS NULL THEN
30675          l_acc_rev_flag := 'N';
30676       END IF;
30677    EXCEPTION
30678       WHEN OTHERS THEN
30679          l_acc_rev_flag := 'N';
30680    END;
30681    --
30682    IF (l_acc_rev_flag = 'Y') THEN
30683 
30684        -- 4645092  ------------------------------------------------------------------------------
30685        -- To allow MPA report to determine if it should generate report process
30686        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30687        ------------------------------------------------------------------------------------------
30688 
30689        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30690        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30691    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30692    -- call ADRs
30693    -- Bug 4922099
30694    --
30695    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30696         (NVL(l_actual_upg_option, 'N') = 'O') OR
30697         (NVL(l_enc_upg_option, 'N') = 'O')
30698       )
30699    THEN
30700    NULL;
30701    --
30702    --
30703    
30704   l_ccid := AcctDerRule_3(
30705            p_application_id           => p_application_id
30706          , p_ae_header_id             => l_ae_header_id 
30707 , p_source_2 => p_source_2
30708          , x_transaction_coa_id       => l_adr_transaction_coa_id
30709          , x_accounting_coa_id        => l_adr_accounting_coa_id
30710          , x_value_type_code          => l_adr_value_type_code
30711          , p_side                     => 'NA'
30712    );
30713 
30714    xla_ae_lines_pkg.set_ccid(
30715     p_code_combination_id          => l_ccid
30716   , p_value_type_code              => l_adr_value_type_code
30717   , p_transaction_coa_id           => l_adr_transaction_coa_id
30721   , p_component_type               => l_component_type
30718   , p_accounting_coa_id            => l_adr_accounting_coa_id
30719   , p_adr_code                     => 'AP_INVOICE_DIST'
30720   , p_adr_type_code                => 'S'
30722   , p_component_code               => l_component_code
30723   , p_component_type_code          => l_component_type_code
30724   , p_component_appl_id            => l_component_appl_id
30725   , p_amb_context_code             => l_amb_context_code
30726   , p_side                         => 'NA'
30727   );
30728 
30729 
30730    l_segment := AcctDerRule_16(
30731            p_application_id           => p_application_id
30732          , p_ae_header_id             => l_ae_header_id 
30733 , p_source_9 => p_source_9
30734 , p_source_11 => p_source_11
30735 , p_source_11_meaning => p_source_11_meaning
30736 , p_source_12 => p_source_12
30737          , x_transaction_coa_id       => l_adr_transaction_coa_id
30738          , x_accounting_coa_id        => l_adr_accounting_coa_id
30739          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
30740          , x_flex_value_set_id        => l_adr_flex_value_set_id
30741          , x_value_type_code          => l_adr_value_type_code
30742          , x_value_combination_id     => l_adr_value_combination_id
30743          , x_value_segment_code       => l_adr_value_segment_code
30744          , p_side                     => 'NA'
30745          , p_override_seg_flag        => 'Y'
30746    );
30747 
30748    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
30749 
30750       xla_ae_lines_pkg.set_segment(
30751           p_to_segment_code         => 'GL_ACCOUNT'
30752         , p_segment_value           => l_segment
30753         , p_from_segment_code       => l_adr_value_segment_code
30754         , p_from_combination_id     => l_adr_value_combination_id
30755         , p_value_type_code         => l_adr_value_type_code
30756         , p_transaction_coa_id      => l_adr_transaction_coa_id
30757         , p_accounting_coa_id       => l_adr_accounting_coa_id
30758         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
30759         , p_flex_value_set_id       => l_adr_flex_value_set_id
30760         , p_adr_code                => 'FV_QUAN_VAR_ACC_CR'
30761         , p_adr_type_code           => 'S'
30762         , p_component_type          => l_component_type
30763         , p_component_code          => l_component_code
30764         , p_component_type_code     => l_component_type_code
30765         , p_component_appl_id       => l_component_appl_id
30766         , p_amb_context_code        => l_amb_context_code
30767         , p_entity_code             => 'AP_INVOICES'
30768         , p_event_class_code        => 'INVOICES'
30769         , p_side                    => 'NA'
30770         );
30771 
30772   END IF;
30773 
30774    --
30775    --
30776    END IF;
30777 
30778        --
30779        -- Update the line information that should be overwritten
30780        --
30781        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30782                                          p_header_num   => 1);
30783        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30784 
30785        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30786 
30787        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30788           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30789        END IF;
30790 
30791       --
30792       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30793       --
30794       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30795           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30796       ELSE
30797           ---------------------------------------------------------------------------------------------------
30798           -- 4262811a Switch Sign
30799           ---------------------------------------------------------------------------------------------------
30800           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30801           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30802                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30803           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30804                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30805           -- 5132302
30806           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30807                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30808 
30809       END IF;
30810 
30811       -- 4955764
30812       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30813       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30814 
30815 
30816       XLA_AE_LINES_PKG.ValidateCurrentLine;
30817       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30818 
30819       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30820                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30821                ,p_balance_type_code => l_balance_type_code);
30822 
30823    END IF;
30824 
30825    -----------------------------------------------------------------------------------------
30829 
30826    -- 4262811 Multiperiod Accounting
30827    -----------------------------------------------------------------------------------------
30828      -- No MPA option is assigned.
30830 
30831 END IF;
30832 END IF;
30833 --
30834 
30835 --
30836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30837    trace
30838       (p_msg      => 'END of AcctLineType_52'
30839       ,p_level    => C_LEVEL_PROCEDURE
30840       ,p_module   => l_log_module);
30841 END IF;
30842 --
30843 EXCEPTION
30844   WHEN xla_exceptions_pkg.application_exception THEN
30845       RAISE;
30846   WHEN OTHERS THEN
30847        xla_exceptions_pkg.raise_message
30848            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_52');
30849 END AcctLineType_52;
30850 --
30851 
30852 ---------------------------------------
30853 --
30854 -- PRIVATE FUNCTION
30855 --         AcctLineType_53
30856 --
30857 ---------------------------------------
30858 PROCEDURE AcctLineType_53 (
30859   p_application_id        IN NUMBER
30860  ,p_event_id              IN NUMBER
30861  ,p_calculate_acctd_flag  IN VARCHAR2
30862  ,p_calculate_g_l_flag    IN VARCHAR2
30863  ,p_actual_flag           IN OUT VARCHAR2
30864  ,p_balance_type_code     OUT VARCHAR2
30865  ,p_gain_or_loss_ref      OUT VARCHAR2
30866  
30867 --Invoice Distribution Description
30868  , p_source_1            IN VARCHAR2
30869 --Invoice Distribution Account
30870  , p_source_2            IN NUMBER
30871 --Federal Fund Category
30872  , p_source_4            IN VARCHAR2
30873 --Federal Fund Expired Status
30874  , p_source_5            IN VARCHAR2
30875 --Federal Fund Category Description
30876  , p_source_6            IN VARCHAR2
30877 --Invoice Distribution Type
30878  , p_source_8            IN VARCHAR2
30879  , p_source_8_meaning    IN VARCHAR2
30880 --Accounting Reversal Indicator
30881  , p_source_15            IN VARCHAR2
30882 --Distribution Link Type
30883  , p_source_17            IN VARCHAR2
30884 --Allocation to Main Distribution Identifier
30885  , p_source_19            IN NUMBER
30886 --Invoice Identifier
30887  , p_source_20            IN NUMBER
30888 --Business Flow Accounts Payable Application Identifier
30889  , p_source_21            IN NUMBER
30890 --Business Flow Invoice Distribution Type
30891  , p_source_22            IN VARCHAR2
30892 --Business Flow Invoice Entity Code
30893  , p_source_23            IN VARCHAR2
30894 --Business Flow Invoice Distribution Identifier
30895  , p_source_24            IN NUMBER
30896 --Business Flow Invoice Identifier
30897  , p_source_25            IN NUMBER
30898 --Invoice Distribution Identifier
30899  , p_source_26            IN NUMBER
30900 --Payables Encumbrance Upgrade Credit Account
30901  , p_source_27            IN NUMBER
30902 --Payables Encumbrance Upgrade Credit Amount
30903  , p_source_28            IN NUMBER
30904 --Invoice Currency Code
30905  , p_source_29            IN VARCHAR2
30906 --Payables Encumbrance Upgrade Credit Base Amount
30907  , p_source_30            IN NUMBER
30908 --Payables Encumbrance Upgrade Debit Account
30909  , p_source_31            IN NUMBER
30910 --Payables Encumbrance Upgrade Debit Amount
30911  , p_source_32            IN NUMBER
30912 --Payables Encumbrance Upgrade Debit Base Amount
30913  , p_source_33            IN NUMBER
30914 --Payables Encumbrance Upgrade Option
30915  , p_source_34            IN VARCHAR2
30916 --Invoice Exchange Date
30917  , p_source_36            IN DATE
30918 --Invoice Exchange Rate
30919  , p_source_37            IN NUMBER
30920 --Invoice Exchange Rate Type
30921  , p_source_38            IN VARCHAR2
30922 --Deferred Accounting End Date
30923  , p_source_39            IN DATE
30924 --Deferred Accounting Option
30925  , p_source_40            IN VARCHAR2
30926 --Deferred Accounting Start Date
30927  , p_source_41            IN DATE
30928 --Override Accounted Amount Indicator
30929  , p_source_42            IN VARCHAR2
30930  , p_source_42_meaning    IN VARCHAR2
30931 --Invoice Supplier Identifier
30932  , p_source_43            IN NUMBER
30933 --Invoice Supplier Site Identifier
30934  , p_source_44            IN NUMBER
30935 --Third Party Type
30936  , p_source_45            IN VARCHAR2
30937 --Parent Reversal Identifier
30938  , p_source_46            IN NUMBER
30939 --Invoice Distribution Statistical Amount
30940  , p_source_47            IN NUMBER
30941 --Invoice Distribution Tax Line Identifier
30942  , p_source_48            IN NUMBER
30943 --Invoice Distribution Tax Distribution Identifier from Tax
30944  , p_source_49            IN NUMBER
30945 --Invoice Distribution Summary Tax Line Identifier
30946  , p_source_50            IN NUMBER
30947 --Payables Upgrade Credit Encumbrance Type Identifier
30948  , p_source_51            IN NUMBER
30949 --Payables Upgrade Debit Encumbrance Type Identifier
30950  , p_source_52            IN NUMBER
30951 --Invoice Distribution Amount
30952  , p_source_55            IN NUMBER
30953 --Purchasing Encumbrance Option
30954  , p_source_60            IN VARCHAR2
30955  , p_source_60_meaning    IN VARCHAR2
30956 --Quantity Variance Amount
30957  , p_source_62            IN NUMBER
30958 --Quantity Variance Amount in Ledger Currency
30959  , p_source_63            IN NUMBER
30960 )
30961 IS
30962 
30963 l_component_type              VARCHAR2(80);
30967 l_amb_context_code            VARCHAR2(30);
30964 l_component_code              VARCHAR2(30);
30965 l_component_type_code         VARCHAR2(1);
30966 l_component_appl_id           INTEGER;
30968 l_entity_code                 VARCHAR2(30);
30969 l_event_class_code            VARCHAR2(30);
30970 l_ae_header_id                NUMBER;
30971 l_event_type_code             VARCHAR2(30);
30972 l_line_definition_code        VARCHAR2(30);
30973 l_line_definition_owner_code  VARCHAR2(1);
30974 --
30975 -- adr variables
30976 l_segment                     VARCHAR2(30);
30977 l_ccid                        NUMBER;
30978 l_adr_transaction_coa_id      NUMBER;
30979 l_adr_accounting_coa_id       NUMBER;
30980 l_adr_flexfield_segment_code  VARCHAR2(30);
30981 l_adr_flex_value_set_id       NUMBER;
30982 l_adr_value_type_code         VARCHAR2(30);
30983 l_adr_value_combination_id    NUMBER;
30984 l_adr_value_segment_code      VARCHAR2(30);
30985 
30986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30990 
30991 -- 4262811 Variables ------------------------------------------------------------------------------------------
30992 l_entered_amt_idx             NUMBER;
30993 l_accted_amt_idx              NUMBER;
30994 l_acc_rev_flag                VARCHAR2(1);
30995 l_accrual_line_num            NUMBER;
30996 l_tmp_amt                     NUMBER;
30997 l_acc_rev_natural_side_code   VARCHAR2(1);
30998 
30999 l_num_entries                 NUMBER;
31000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31004 l_recog_line_1                NUMBER;
31005 l_recog_line_2                NUMBER;
31006 
31007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31010 
31011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31012 
31013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31015 
31016 ---------------------------------------------------------------------------------------------------------------
31017 
31018 
31019 --
31020 -- bulk performance
31021 --
31022 l_balance_type_code           VARCHAR2(1);
31023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31024 l_log_module                  VARCHAR2(240);
31025 
31026 --
31027 -- Upgrade strategy
31028 --
31029 l_actual_upg_option           VARCHAR2(1);
31030 l_enc_upg_option           VARCHAR2(1);
31031 
31032 --
31033 BEGIN
31034 --
31035 IF g_log_enabled THEN
31036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
31037 END IF;
31038 --
31039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31040 
31041       trace
31042          (p_msg      => 'BEGIN of AcctLineType_53'
31043          ,p_level    => C_LEVEL_PROCEDURE
31044          ,p_module   => l_log_module);
31045 
31046 END IF;
31047 --
31048 l_component_type             := 'AMB_JLT';
31049 l_component_code             := 'FV_AP_INV_QTY_VAR_DR';
31050 l_component_type_code        := 'S';
31051 l_component_appl_id          :=  200;
31052 l_amb_context_code           := 'DEFAULT';
31053 l_entity_code                := 'AP_INVOICES';
31054 l_event_class_code           := 'INVOICES';
31055 l_event_type_code            := 'INVOICES_ALL';
31056 l_line_definition_owner_code := 'S';
31057 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
31058 --
31059 l_balance_type_code          := 'A';
31060 l_segment                     := NULL;
31061 l_ccid                        := NULL;
31062 l_adr_transaction_coa_id      := NULL;
31063 l_adr_accounting_coa_id       := NULL;
31064 l_adr_flexfield_segment_code  := NULL;
31065 l_adr_flex_value_set_id       := NULL;
31066 l_adr_value_type_code         := NULL;
31067 l_adr_value_combination_id    := NULL;
31068 l_adr_value_segment_code      := NULL;
31069 
31070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31071 l_bflow_class_code           := '';    -- 4219869 Business Flow
31072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31073 l_budgetary_control_flag     := 'Y';
31074 
31075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31076 l_bflow_applied_to_amt       := NULL; -- 5132302
31077 l_entered_amt_idx            := NULL;          -- 4262811
31078 l_accted_amt_idx             := NULL;          -- 4262811
31079 l_acc_rev_flag               := NULL;          -- 4262811
31080 l_accrual_line_num           := NULL;          -- 4262811
31081 l_tmp_amt                    := NULL;          -- 4262811
31082 --
31083  
31084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31085     l_balance_type_code <> 'B' THEN
31086 IF NVL(p_source_8,'
31087 ') <>  'ACCRUAL' AND 
31091  THEN 
31088 p_source_62 IS NOT NULL AND 
31089 NVL(p_source_60,'
31090 ') =  'Y'
31092 
31093    --
31094    XLA_AE_LINES_PKG.SetNewLine;
31095 
31096    p_balance_type_code          := l_balance_type_code;
31097    -- set the flag so later we will know whether the gain loss line needs to be created
31098    
31099    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31100      p_actual_flag :='A';
31101    END IF;
31102 
31103    --
31104    -- bulk performance
31105    --
31106    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31107                                       p_header_num   => 0); -- 4262811
31108    --
31109    -- set accounting line options
31110    --
31111    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31112            p_natural_side_code          => 'D'
31113          , p_gain_or_loss_flag          => 'N'
31114          , p_gl_transfer_mode_code      => 'S'
31115          , p_acct_entry_type_code       => 'A'
31116          , p_switch_side_flag           => 'N'
31117          , p_merge_duplicate_code       => 'N'
31118          );
31119    --
31120    l_acc_rev_natural_side_code := 'C';  -- 4262811
31121    -- 
31122    --
31123    -- set accounting line type info
31124    --
31125    xla_ae_lines_pkg.SetAcctLineType
31126       (p_component_type             => l_component_type
31127       ,p_event_type_code            => l_event_type_code
31128       ,p_line_definition_owner_code => l_line_definition_owner_code
31129       ,p_line_definition_code       => l_line_definition_code
31130       ,p_accounting_line_code       => l_component_code
31131       ,p_accounting_line_type_code  => l_component_type_code
31132       ,p_accounting_line_appl_id    => l_component_appl_id
31133       ,p_amb_context_code           => l_amb_context_code
31134       ,p_entity_code                => l_entity_code
31135       ,p_event_class_code           => l_event_class_code);
31136    --
31137    -- set accounting class
31138    --
31139    xla_ae_lines_pkg.SetAcctClass(
31140            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
31141          , p_ae_header_id           => l_ae_header_id
31142          );
31143 
31144    --
31145    -- set rounding class
31146    --
31147    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31148                       'ACCOUNTSPAYABLE';
31149 
31150    --
31151    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31152    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31153    --
31154    -- bulk performance
31155    --
31156    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31157 
31158    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31159       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31160 
31161    -- 4955764
31162    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31163       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31164 
31165    -- 4458381 Public Sector Enh
31166    
31167    --
31168    -- set accounting attributes for the line type
31169    --
31170    l_entered_amt_idx := 24;
31171    l_accted_amt_idx  := 29;
31172    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
31173    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31174    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
31175    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
31176    l_rec_acct_attrs.array_num_value(2)  := 
31177 xla_ae_sources_pkg.GetSystemSourceNum(
31178    p_source_code           => 'XLA_EVENT_APPL_ID'
31179  , p_source_type_code      => 'Y'
31180  , p_source_application_id =>  602
31181 );
31182    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
31183    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
31184    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
31185    l_rec_acct_attrs.array_char_value(4)  := 
31186 xla_ae_sources_pkg.GetSystemSourceChar(
31187    p_source_code           => 'XLA_ENTITY_CODE'
31188  , p_source_type_code      => 'Y'
31189  , p_source_application_id =>  602
31190 );
31191    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
31192    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
31193    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
31194    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
31195    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
31196    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
31197    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
31198    l_rec_acct_attrs.array_num_value(8)  := p_source_21;
31199    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31200    l_rec_acct_attrs.array_char_value(9)  := p_source_22;
31201    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
31202    l_rec_acct_attrs.array_char_value(10)  := p_source_23;
31203    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
31204    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_24);
31208    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
31205    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31206    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_25);
31207    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
31209    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
31210    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
31211    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
31212    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
31213    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
31214    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
31215    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
31216    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
31217    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
31218    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
31219    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
31220    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
31221    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
31222    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
31223    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
31224    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
31225    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
31226    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
31227    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
31228    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
31229    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
31230    l_rec_acct_attrs.array_num_value(24)  := p_source_62;
31231    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
31232    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
31233    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
31234    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
31235    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
31236    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
31237    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
31238    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
31239    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
31240    l_rec_acct_attrs.array_num_value(29)  := p_source_63;
31241    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
31242    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
31243    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
31244    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
31245    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
31246    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
31247    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
31248    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
31249    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
31250    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
31251    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
31252    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
31253    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
31254    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
31255    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
31256    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
31257    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
31258    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
31259    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
31260    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
31261    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
31262    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
31263    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
31264    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
31265    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
31266    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
31267    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
31268    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
31269    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
31270    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
31271 
31272    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31273    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31274 
31275    ---------------------------------------------------------------------------------------------------------------
31276    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31277    ---------------------------------------------------------------------------------------------------------------
31278    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31279 
31280    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31281    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31282 
31283    IF xla_accounting_cache_pkg.GetValueChar
31284          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31285          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31286    AND l_bflow_method_code = 'PRIOR_ENTRY'
31287 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31288    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31292          xla_ae_lines_pkg.BflowUpgEntry
31289          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31290        )
31291    THEN
31293            (p_business_method_code    => l_bflow_method_code
31294            ,p_business_class_code     => l_bflow_class_code
31295            ,p_balance_type            => l_balance_type_code);
31296    ELSE
31297       NULL;
31298 -- No business flow processing for business flow method of NONE.
31299    END IF;
31300 
31301    --
31302    -- call analytical criteria
31303    --
31304    
31305    --
31306    -- call description
31307    --
31308    
31309 xla_ae_lines_pkg.SetLineDescription(
31310    p_ae_header_id => l_ae_header_id
31311   ,p_description  => Description_2 (
31312      p_application_id         => p_application_id
31313    , p_ae_header_id           => l_ae_header_id 
31314 , p_source_1 => p_source_1
31315    )
31316 );
31317 
31318 
31319    --
31320    -- call ADRs
31321    -- Bug 4922099
31322    --
31323    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31324         (NVL(l_actual_upg_option, 'N') = 'O') OR
31325         (NVL(l_enc_upg_option, 'N') = 'O')
31326       )
31327    THEN
31328    NULL;
31329    --
31330    --
31331    
31332   l_ccid := AcctDerRule_3(
31333            p_application_id           => p_application_id
31334          , p_ae_header_id             => l_ae_header_id 
31335 , p_source_2 => p_source_2
31336          , x_transaction_coa_id       => l_adr_transaction_coa_id
31337          , x_accounting_coa_id        => l_adr_accounting_coa_id
31338          , x_value_type_code          => l_adr_value_type_code
31339          , p_side                     => 'NA'
31340    );
31341 
31342    xla_ae_lines_pkg.set_ccid(
31343     p_code_combination_id          => l_ccid
31344   , p_value_type_code              => l_adr_value_type_code
31345   , p_transaction_coa_id           => l_adr_transaction_coa_id
31346   , p_accounting_coa_id            => l_adr_accounting_coa_id
31347   , p_adr_code                     => 'AP_INVOICE_DIST'
31348   , p_adr_type_code                => 'S'
31349   , p_component_type               => l_component_type
31350   , p_component_code               => l_component_code
31351   , p_component_type_code          => l_component_type_code
31352   , p_component_appl_id            => l_component_appl_id
31353   , p_amb_context_code             => l_amb_context_code
31354   , p_side                         => 'NA'
31355   );
31356 
31357 
31358    l_segment := AcctDerRule_8(
31359            p_application_id           => p_application_id
31360          , p_ae_header_id             => l_ae_header_id 
31361 , p_source_4 => p_source_4
31362 , p_source_5 => p_source_5
31363 , p_source_6 => p_source_6
31364          , x_transaction_coa_id       => l_adr_transaction_coa_id
31365          , x_accounting_coa_id        => l_adr_accounting_coa_id
31366          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
31367          , x_flex_value_set_id        => l_adr_flex_value_set_id
31368          , x_value_type_code          => l_adr_value_type_code
31369          , x_value_combination_id     => l_adr_value_combination_id
31370          , x_value_segment_code       => l_adr_value_segment_code
31371          , p_side                     => 'NA'
31372          , p_override_seg_flag        => 'Y'
31373    );
31374 
31375    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
31376 
31377       xla_ae_lines_pkg.set_segment(
31378           p_to_segment_code         => 'GL_ACCOUNT'
31379         , p_segment_value           => l_segment
31380         , p_from_segment_code       => l_adr_value_segment_code
31381         , p_from_combination_id     => l_adr_value_combination_id
31382         , p_value_type_code         => l_adr_value_type_code
31383         , p_transaction_coa_id      => l_adr_transaction_coa_id
31384         , p_accounting_coa_id       => l_adr_accounting_coa_id
31385         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
31386         , p_flex_value_set_id       => l_adr_flex_value_set_id
31387         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
31388         , p_adr_type_code           => 'S'
31389         , p_component_type          => l_component_type
31390         , p_component_code          => l_component_code
31391         , p_component_type_code     => l_component_type_code
31392         , p_component_appl_id       => l_component_appl_id
31393         , p_amb_context_code        => l_amb_context_code
31394         , p_entity_code             => 'AP_INVOICES'
31395         , p_event_class_code        => 'INVOICES'
31396         , p_side                    => 'NA'
31397         );
31398 
31399   END IF;
31400 
31401    --
31402    --
31403    END IF;
31404    --
31405    -- Bug 4922099
31406    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31407           (NVL(l_enc_upg_option, 'N') = 'O')
31408         ) AND
31409         (l_bflow_method_code = 'PRIOR_ENTRY')
31410       )
31411    THEN
31412       IF
31413       --
31414       1 = 2
31415       --
31416       THEN
31417       xla_accounting_err_pkg.build_message
31418                                     (p_appli_s_name            => 'XLA'
31419                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31420                                     ,p_token_1                 => 'LINE_NUMBER'
31424                                                                              l_component_type
31421                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31422                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31423                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31425                                                                             ,l_component_code
31426                                                                             ,l_component_type_code
31427                                                                             ,l_component_appl_id
31428                                                                             ,l_amb_context_code
31429                                                                             ,l_entity_code
31430                                                                             ,l_event_class_code
31431                                                                            )
31432                                     ,p_token_3                 => 'OWNER'
31433                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31434                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31435                                                                           ,p_lookup_code    => l_component_type_code
31436                                                                          )
31437                                     ,p_token_4                 => 'PRODUCT_NAME'
31438                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31439                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31440                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31441                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31442                                     ,p_ae_header_id            =>  NULL
31443                                        );
31444 
31445         IF (C_LEVEL_ERROR>= g_log_level) THEN
31446                  trace
31447                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31448                       ,p_level    => C_LEVEL_ERROR
31449                       ,p_module   => l_log_module);
31450         END IF;
31451       END IF;
31452    END IF;
31453    --
31454    --
31455    ------------------------------------------------------------------------------------------------
31456    -- 4219869 Business Flow
31457    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31458    -- Prior Entry.  Currently, the following code is always generated.
31459    ------------------------------------------------------------------------------------------------
31460    XLA_AE_LINES_PKG.ValidateCurrentLine;
31461 
31462    ------------------------------------------------------------------------------------
31463    -- 4219869 Business Flow
31464    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31465    ------------------------------------------------------------------------------------
31466    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31467 
31468    ----------------------------------------------------------------------------------
31469    -- 4219869 Business Flow
31470    -- Update journal entry status -- Need to generate this within IF <condition>
31471    ----------------------------------------------------------------------------------
31472    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31473          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31474          ,p_balance_type_code => l_balance_type_code
31475          );
31476 
31477    -------------------------------------------------------------------------------------------
31478    -- 4262811 - Generate the Accrual Reversal lines
31479    -------------------------------------------------------------------------------------------
31480    BEGIN
31481       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31482                               (g_array_event(p_event_id).array_value_num('header_index'));
31483       IF l_acc_rev_flag IS NULL THEN
31484          l_acc_rev_flag := 'N';
31485       END IF;
31486    EXCEPTION
31487       WHEN OTHERS THEN
31488          l_acc_rev_flag := 'N';
31489    END;
31490    --
31491    IF (l_acc_rev_flag = 'Y') THEN
31492 
31493        -- 4645092  ------------------------------------------------------------------------------
31494        -- To allow MPA report to determine if it should generate report process
31495        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31496        ------------------------------------------------------------------------------------------
31497 
31498        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31499        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31500    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31501    -- call ADRs
31502    -- Bug 4922099
31503    --
31504    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31505         (NVL(l_actual_upg_option, 'N') = 'O') OR
31506         (NVL(l_enc_upg_option, 'N') = 'O')
31507       )
31508    THEN
31509    NULL;
31510    --
31511    --
31512    
31513   l_ccid := AcctDerRule_3(
31514            p_application_id           => p_application_id
31515          , p_ae_header_id             => l_ae_header_id 
31516 , p_source_2 => p_source_2
31520          , p_side                     => 'NA'
31517          , x_transaction_coa_id       => l_adr_transaction_coa_id
31518          , x_accounting_coa_id        => l_adr_accounting_coa_id
31519          , x_value_type_code          => l_adr_value_type_code
31521    );
31522 
31523    xla_ae_lines_pkg.set_ccid(
31524     p_code_combination_id          => l_ccid
31525   , p_value_type_code              => l_adr_value_type_code
31526   , p_transaction_coa_id           => l_adr_transaction_coa_id
31527   , p_accounting_coa_id            => l_adr_accounting_coa_id
31528   , p_adr_code                     => 'AP_INVOICE_DIST'
31529   , p_adr_type_code                => 'S'
31530   , p_component_type               => l_component_type
31531   , p_component_code               => l_component_code
31532   , p_component_type_code          => l_component_type_code
31533   , p_component_appl_id            => l_component_appl_id
31534   , p_amb_context_code             => l_amb_context_code
31535   , p_side                         => 'NA'
31536   );
31537 
31538 
31539    l_segment := AcctDerRule_8(
31540            p_application_id           => p_application_id
31541          , p_ae_header_id             => l_ae_header_id 
31542 , p_source_4 => p_source_4
31543 , p_source_5 => p_source_5
31544 , p_source_6 => p_source_6
31545          , x_transaction_coa_id       => l_adr_transaction_coa_id
31546          , x_accounting_coa_id        => l_adr_accounting_coa_id
31547          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
31548          , x_flex_value_set_id        => l_adr_flex_value_set_id
31549          , x_value_type_code          => l_adr_value_type_code
31550          , x_value_combination_id     => l_adr_value_combination_id
31551          , x_value_segment_code       => l_adr_value_segment_code
31552          , p_side                     => 'NA'
31553          , p_override_seg_flag        => 'Y'
31554    );
31555 
31556    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
31557 
31558       xla_ae_lines_pkg.set_segment(
31559           p_to_segment_code         => 'GL_ACCOUNT'
31560         , p_segment_value           => l_segment
31561         , p_from_segment_code       => l_adr_value_segment_code
31562         , p_from_combination_id     => l_adr_value_combination_id
31563         , p_value_type_code         => l_adr_value_type_code
31564         , p_transaction_coa_id      => l_adr_transaction_coa_id
31565         , p_accounting_coa_id       => l_adr_accounting_coa_id
31566         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
31567         , p_flex_value_set_id       => l_adr_flex_value_set_id
31568         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
31569         , p_adr_type_code           => 'S'
31570         , p_component_type          => l_component_type
31571         , p_component_code          => l_component_code
31572         , p_component_type_code     => l_component_type_code
31573         , p_component_appl_id       => l_component_appl_id
31574         , p_amb_context_code        => l_amb_context_code
31575         , p_entity_code             => 'AP_INVOICES'
31576         , p_event_class_code        => 'INVOICES'
31577         , p_side                    => 'NA'
31578         );
31579 
31580   END IF;
31581 
31582    --
31583    --
31584    END IF;
31585 
31586        --
31587        -- Update the line information that should be overwritten
31588        --
31589        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31590                                          p_header_num   => 1);
31591        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31592 
31593        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31594 
31595        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31596           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31597        END IF;
31598 
31599       --
31600       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31601       --
31602       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31603           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31604       ELSE
31605           ---------------------------------------------------------------------------------------------------
31606           -- 4262811a Switch Sign
31607           ---------------------------------------------------------------------------------------------------
31608           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31609           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31610                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31611           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31612                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31613           -- 5132302
31614           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31615                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31616 
31617       END IF;
31618 
31619       -- 4955764
31620       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31624       XLA_AE_LINES_PKG.ValidateCurrentLine;
31621       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31622 
31623 
31625       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31626 
31627       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31628                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31629                ,p_balance_type_code => l_balance_type_code);
31630 
31631    END IF;
31632 
31633    -----------------------------------------------------------------------------------------
31634    -- 4262811 Multiperiod Accounting
31635    -----------------------------------------------------------------------------------------
31636      -- No MPA option is assigned.
31637 
31638 
31639 END IF;
31640 END IF;
31641 --
31642 
31643 --
31644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31645    trace
31646       (p_msg      => 'END of AcctLineType_53'
31647       ,p_level    => C_LEVEL_PROCEDURE
31648       ,p_module   => l_log_module);
31649 END IF;
31650 --
31651 EXCEPTION
31652   WHEN xla_exceptions_pkg.application_exception THEN
31653       RAISE;
31654   WHEN OTHERS THEN
31655        xla_exceptions_pkg.raise_message
31656            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_53');
31657 END AcctLineType_53;
31658 --
31659 
31660 ---------------------------------------
31661 --
31662 -- PRIVATE FUNCTION
31663 --         AcctLineType_54
31664 --
31665 ---------------------------------------
31666 PROCEDURE AcctLineType_54 (
31667   p_application_id        IN NUMBER
31668  ,p_event_id              IN NUMBER
31669  ,p_calculate_acctd_flag  IN VARCHAR2
31670  ,p_calculate_g_l_flag    IN VARCHAR2
31671  ,p_actual_flag           IN OUT VARCHAR2
31672  ,p_balance_type_code     OUT VARCHAR2
31673  ,p_gain_or_loss_ref      OUT VARCHAR2
31674  
31675 --Invoice Distribution Description
31676  , p_source_1            IN VARCHAR2
31677 --Invoice Distribution Account
31678  , p_source_2            IN NUMBER
31679 --Federal Fund Expired Status
31680  , p_source_5            IN VARCHAR2
31681 --Invoice Distribution Type
31682  , p_source_8            IN VARCHAR2
31683  , p_source_8_meaning    IN VARCHAR2
31684 --Invoice Distribution Encumbrance Amount
31685  , p_source_10            IN NUMBER
31686 --Accrue on Receipt Option
31687  , p_source_11            IN VARCHAR2
31688  , p_source_11_meaning    IN VARCHAR2
31689 --Purchase Order Distribution Identifier
31690  , p_source_12            IN NUMBER
31691 --Accounting Reversal Indicator
31692  , p_source_15            IN VARCHAR2
31693 --Distribution Link Type
31694  , p_source_17            IN VARCHAR2
31695 --Allocation to Main Distribution Identifier
31696  , p_source_19            IN NUMBER
31697 --Invoice Identifier
31698  , p_source_20            IN NUMBER
31699 --Invoice Distribution Identifier
31700  , p_source_26            IN NUMBER
31701 --Payables Encumbrance Upgrade Credit Account
31702  , p_source_27            IN NUMBER
31703 --Payables Encumbrance Upgrade Credit Amount
31704  , p_source_28            IN NUMBER
31705 --Invoice Currency Code
31706  , p_source_29            IN VARCHAR2
31707 --Payables Encumbrance Upgrade Credit Base Amount
31708  , p_source_30            IN NUMBER
31709 --Payables Encumbrance Upgrade Debit Account
31710  , p_source_31            IN NUMBER
31711 --Payables Encumbrance Upgrade Debit Amount
31712  , p_source_32            IN NUMBER
31713 --Payables Encumbrance Upgrade Debit Base Amount
31714  , p_source_33            IN NUMBER
31715 --Payables Encumbrance Upgrade Option
31716  , p_source_34            IN VARCHAR2
31717 --Invoice Exchange Date
31718  , p_source_36            IN DATE
31719 --Invoice Exchange Rate
31720  , p_source_37            IN NUMBER
31721 --Invoice Exchange Rate Type
31722  , p_source_38            IN VARCHAR2
31723 --Deferred Accounting End Date
31724  , p_source_39            IN DATE
31725 --Deferred Accounting Option
31726  , p_source_40            IN VARCHAR2
31727 --Deferred Accounting Start Date
31728  , p_source_41            IN DATE
31729 --Override Accounted Amount Indicator
31730  , p_source_42            IN VARCHAR2
31731  , p_source_42_meaning    IN VARCHAR2
31732 --Invoice Supplier Identifier
31733  , p_source_43            IN NUMBER
31734 --Invoice Supplier Site Identifier
31735  , p_source_44            IN NUMBER
31736 --Third Party Type
31737  , p_source_45            IN VARCHAR2
31738 --Parent Reversal Identifier
31739  , p_source_46            IN NUMBER
31740 --Invoice Distribution Statistical Amount
31741  , p_source_47            IN NUMBER
31742 --Invoice Distribution Tax Line Identifier
31743  , p_source_48            IN NUMBER
31744 --Invoice Distribution Tax Distribution Identifier from Tax
31745  , p_source_49            IN NUMBER
31746 --Invoice Distribution Summary Tax Line Identifier
31747  , p_source_50            IN NUMBER
31748 --Payables Upgrade Credit Encumbrance Type Identifier
31749  , p_source_51            IN NUMBER
31750 --Payables Upgrade Debit Encumbrance Type Identifier
31751  , p_source_52            IN NUMBER
31752 --Invoice Distribution Amount
31753  , p_source_55            IN NUMBER
31754 --Business Flow Purchasing Application Identifier
31755  , p_source_64            IN NUMBER
31759  , p_source_66            IN VARCHAR2
31756 --Business Flow Purchase Order Distribution Type
31757  , p_source_65            IN VARCHAR2
31758 --Business Flow Purchase Order Entity Code
31760 --Business Flow Purchase Order Distribution Identifier
31761  , p_source_67            IN NUMBER
31762 --Business Flow Purchasing Document Identifier
31763  , p_source_68            IN NUMBER
31764 --Federal Paid Unexpended Obligation Amount
31765  , p_source_69            IN NUMBER
31766 )
31767 IS
31768 
31769 l_component_type              VARCHAR2(80);
31770 l_component_code              VARCHAR2(30);
31771 l_component_type_code         VARCHAR2(1);
31772 l_component_appl_id           INTEGER;
31773 l_amb_context_code            VARCHAR2(30);
31774 l_entity_code                 VARCHAR2(30);
31775 l_event_class_code            VARCHAR2(30);
31776 l_ae_header_id                NUMBER;
31777 l_event_type_code             VARCHAR2(30);
31778 l_line_definition_code        VARCHAR2(30);
31779 l_line_definition_owner_code  VARCHAR2(1);
31780 --
31781 -- adr variables
31782 l_segment                     VARCHAR2(30);
31783 l_ccid                        NUMBER;
31784 l_adr_transaction_coa_id      NUMBER;
31785 l_adr_accounting_coa_id       NUMBER;
31786 l_adr_flexfield_segment_code  VARCHAR2(30);
31787 l_adr_flex_value_set_id       NUMBER;
31788 l_adr_value_type_code         VARCHAR2(30);
31789 l_adr_value_combination_id    NUMBER;
31790 l_adr_value_segment_code      VARCHAR2(30);
31791 
31792 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31793 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31794 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31795 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31796 
31797 -- 4262811 Variables ------------------------------------------------------------------------------------------
31798 l_entered_amt_idx             NUMBER;
31799 l_accted_amt_idx              NUMBER;
31800 l_acc_rev_flag                VARCHAR2(1);
31801 l_accrual_line_num            NUMBER;
31802 l_tmp_amt                     NUMBER;
31803 l_acc_rev_natural_side_code   VARCHAR2(1);
31804 
31805 l_num_entries                 NUMBER;
31806 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31807 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31808 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31809 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31810 l_recog_line_1                NUMBER;
31811 l_recog_line_2                NUMBER;
31812 
31813 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31814 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31815 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31816 
31817 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31818 
31819 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31820 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31821 
31822 ---------------------------------------------------------------------------------------------------------------
31823 
31824 
31825 --
31826 -- bulk performance
31827 --
31828 l_balance_type_code           VARCHAR2(1);
31829 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31830 l_log_module                  VARCHAR2(240);
31831 
31832 --
31833 -- Upgrade strategy
31834 --
31835 l_actual_upg_option           VARCHAR2(1);
31836 l_enc_upg_option           VARCHAR2(1);
31837 
31838 --
31839 BEGIN
31840 --
31841 IF g_log_enabled THEN
31842       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
31843 END IF;
31844 --
31845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31846 
31847       trace
31848          (p_msg      => 'BEGIN of AcctLineType_54'
31849          ,p_level    => C_LEVEL_PROCEDURE
31850          ,p_module   => l_log_module);
31851 
31852 END IF;
31853 --
31854 l_component_type             := 'AMB_JLT';
31855 l_component_code             := 'FV_AP_PAID_EXP_REV_CR';
31856 l_component_type_code        := 'S';
31857 l_component_appl_id          :=  200;
31858 l_amb_context_code           := 'DEFAULT';
31859 l_entity_code                := 'AP_INVOICES';
31860 l_event_class_code           := 'INVOICES';
31861 l_event_type_code            := 'INVOICES_ALL';
31862 l_line_definition_owner_code := 'S';
31863 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
31864 --
31865 l_balance_type_code          := 'A';
31866 l_segment                     := NULL;
31867 l_ccid                        := NULL;
31868 l_adr_transaction_coa_id      := NULL;
31869 l_adr_accounting_coa_id       := NULL;
31870 l_adr_flexfield_segment_code  := NULL;
31871 l_adr_flex_value_set_id       := NULL;
31872 l_adr_value_type_code         := NULL;
31873 l_adr_value_combination_id    := NULL;
31874 l_adr_value_segment_code      := NULL;
31875 
31876 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31877 l_bflow_class_code           := '';    -- 4219869 Business Flow
31878 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31879 l_budgetary_control_flag     := 'Y';
31880 
31881 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31885 l_acc_rev_flag               := NULL;          -- 4262811
31882 l_bflow_applied_to_amt       := NULL; -- 5132302
31883 l_entered_amt_idx            := NULL;          -- 4262811
31884 l_accted_amt_idx             := NULL;          -- 4262811
31886 l_accrual_line_num           := NULL;          -- 4262811
31887 l_tmp_amt                    := NULL;          -- 4262811
31888 --
31889  
31890 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31891     l_balance_type_code <> 'B' THEN
31892 IF p_source_12 IS NOT NULL AND 
31893 (NVL(p_source_8,'
31894 ') =  'ITEM' OR 
31895 (NVL(p_source_8,'
31896 ') =  'IPV' AND 
31897 p_source_10 <  0) OR 
31898 NVL(p_source_8,'
31899 ') =  'ACCRUAL') AND 
31900 NVL(p_source_5,'
31901 ') =  'Expired' AND 
31902 NVL(p_source_11,'
31903 ') <>  'Y'
31904  THEN 
31905 
31906    --
31907    XLA_AE_LINES_PKG.SetNewLine;
31908 
31909    p_balance_type_code          := l_balance_type_code;
31910    -- set the flag so later we will know whether the gain loss line needs to be created
31911    
31912    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31913      p_actual_flag :='A';
31914    END IF;
31915 
31916    --
31917    -- bulk performance
31918    --
31919    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31920                                       p_header_num   => 0); -- 4262811
31921    --
31922    -- set accounting line options
31923    --
31924    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31925            p_natural_side_code          => 'C'
31926          , p_gain_or_loss_flag          => 'N'
31927          , p_gl_transfer_mode_code      => 'S'
31928          , p_acct_entry_type_code       => 'A'
31929          , p_switch_side_flag           => 'N'
31930          , p_merge_duplicate_code       => 'N'
31931          );
31932    --
31933    l_acc_rev_natural_side_code := 'D';  -- 4262811
31934    -- 
31935    --
31936    -- set accounting line type info
31937    --
31938    xla_ae_lines_pkg.SetAcctLineType
31939       (p_component_type             => l_component_type
31940       ,p_event_type_code            => l_event_type_code
31941       ,p_line_definition_owner_code => l_line_definition_owner_code
31942       ,p_line_definition_code       => l_line_definition_code
31943       ,p_accounting_line_code       => l_component_code
31944       ,p_accounting_line_type_code  => l_component_type_code
31945       ,p_accounting_line_appl_id    => l_component_appl_id
31946       ,p_amb_context_code           => l_amb_context_code
31947       ,p_entity_code                => l_entity_code
31948       ,p_event_class_code           => l_event_class_code);
31949    --
31950    -- set accounting class
31951    --
31952    xla_ae_lines_pkg.SetAcctClass(
31953            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
31954          , p_ae_header_id           => l_ae_header_id
31955          );
31956 
31957    --
31958    -- set rounding class
31959    --
31960    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31961                       'ACCOUNTSPAYABLE';
31962 
31963    --
31964    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31965    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31966    --
31967    -- bulk performance
31968    --
31969    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31970 
31971    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31972       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31973 
31974    -- 4955764
31975    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31976       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31977 
31978    -- 4458381 Public Sector Enh
31979    
31980    --
31981    -- set accounting attributes for the line type
31982    --
31983    l_entered_amt_idx := 24;
31984    l_accted_amt_idx  := 29;
31985    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
31986    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31987    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
31988    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
31989    l_rec_acct_attrs.array_num_value(2)  := 
31990 xla_ae_sources_pkg.GetSystemSourceNum(
31991    p_source_code           => 'XLA_EVENT_APPL_ID'
31992  , p_source_type_code      => 'Y'
31993  , p_source_application_id =>  602
31994 );
31995    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
31996    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
31997    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
31998    l_rec_acct_attrs.array_char_value(4)  := 
31999 xla_ae_sources_pkg.GetSystemSourceChar(
32000    p_source_code           => 'XLA_ENTITY_CODE'
32001  , p_source_type_code      => 'Y'
32002  , p_source_application_id =>  602
32003 );
32004    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
32005    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
32006    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
32007    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
32008    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
32012    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32009    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
32010    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
32011    l_rec_acct_attrs.array_num_value(8)  := p_source_64;
32013    l_rec_acct_attrs.array_char_value(9)  := p_source_65;
32014    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
32015    l_rec_acct_attrs.array_char_value(10)  := p_source_66;
32016    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
32017    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_67);
32018    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32019    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_68);
32020    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
32021    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
32022    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
32023    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
32024    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
32025    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
32026    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
32027    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
32028    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
32029    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
32030    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
32031    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
32032    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
32033    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
32034    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
32035    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
32036    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
32037    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
32038    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
32039    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
32040    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
32041    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
32042    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
32043    l_rec_acct_attrs.array_num_value(24)  := p_source_69;
32044    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
32045    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
32046    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
32047    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
32048    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
32049    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
32050    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
32051    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
32052    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
32053    l_rec_acct_attrs.array_num_value(29)  := p_source_69;
32054    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
32055    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
32056    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
32057    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
32058    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
32059    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
32060    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
32061    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
32062    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
32063    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
32064    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
32065    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
32066    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
32067    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
32068    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
32069    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
32070    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
32071    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
32072    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
32073    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
32074    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
32075    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
32076    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
32077    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
32078    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
32079    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
32080    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
32081    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
32082    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
32083    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
32084 
32085    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32086    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32087 
32088    ---------------------------------------------------------------------------------------------------------------
32089    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32090    ---------------------------------------------------------------------------------------------------------------
32091    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32092 
32096    IF xla_accounting_cache_pkg.GetValueChar
32093    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32094    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32095 
32097          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32098          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32099    AND l_bflow_method_code = 'PRIOR_ENTRY'
32100 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32101    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32102          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32103        )
32104    THEN
32105          xla_ae_lines_pkg.BflowUpgEntry
32106            (p_business_method_code    => l_bflow_method_code
32107            ,p_business_class_code     => l_bflow_class_code
32108            ,p_balance_type            => l_balance_type_code);
32109    ELSE
32110       NULL;
32111 -- No business flow processing for business flow method of NONE.
32112    END IF;
32113 
32114    --
32115    -- call analytical criteria
32116    --
32117    
32118    --
32119    -- call description
32120    --
32121    
32122 xla_ae_lines_pkg.SetLineDescription(
32123    p_ae_header_id => l_ae_header_id
32124   ,p_description  => Description_2 (
32125      p_application_id         => p_application_id
32126    , p_ae_header_id           => l_ae_header_id 
32127 , p_source_1 => p_source_1
32128    )
32129 );
32130 
32131 
32132    --
32133    -- call ADRs
32134    -- Bug 4922099
32135    --
32136    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32137         (NVL(l_actual_upg_option, 'N') = 'O') OR
32138         (NVL(l_enc_upg_option, 'N') = 'O')
32139       )
32140    THEN
32141    NULL;
32142    --
32143    --
32144    
32145   l_ccid := AcctDerRule_3(
32146            p_application_id           => p_application_id
32147          , p_ae_header_id             => l_ae_header_id 
32148 , p_source_2 => p_source_2
32149          , x_transaction_coa_id       => l_adr_transaction_coa_id
32150          , x_accounting_coa_id        => l_adr_accounting_coa_id
32151          , x_value_type_code          => l_adr_value_type_code
32152          , p_side                     => 'NA'
32153    );
32154 
32155    xla_ae_lines_pkg.set_ccid(
32156     p_code_combination_id          => l_ccid
32157   , p_value_type_code              => l_adr_value_type_code
32158   , p_transaction_coa_id           => l_adr_transaction_coa_id
32159   , p_accounting_coa_id            => l_adr_accounting_coa_id
32160   , p_adr_code                     => 'AP_INVOICE_DIST'
32161   , p_adr_type_code                => 'S'
32162   , p_component_type               => l_component_type
32163   , p_component_code               => l_component_code
32164   , p_component_type_code          => l_component_type_code
32165   , p_component_appl_id            => l_component_appl_id
32166   , p_amb_context_code             => l_amb_context_code
32167   , p_side                         => 'NA'
32168   );
32169 
32170 
32171    l_segment := AcctDerRule_7(
32172            p_application_id           => p_application_id
32173          , p_ae_header_id             => l_ae_header_id 
32174          , x_transaction_coa_id       => l_adr_transaction_coa_id
32175          , x_accounting_coa_id        => l_adr_accounting_coa_id
32176          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
32177          , x_flex_value_set_id        => l_adr_flex_value_set_id
32178          , x_value_type_code          => l_adr_value_type_code
32179          , x_value_combination_id     => l_adr_value_combination_id
32180          , x_value_segment_code       => l_adr_value_segment_code
32181          , p_side                     => 'NA'
32182          , p_override_seg_flag        => 'Y'
32183    );
32184 
32185    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
32186 
32187       xla_ae_lines_pkg.set_segment(
32188           p_to_segment_code         => 'GL_ACCOUNT'
32189         , p_segment_value           => l_segment
32190         , p_from_segment_code       => l_adr_value_segment_code
32191         , p_from_combination_id     => l_adr_value_combination_id
32192         , p_value_type_code         => l_adr_value_type_code
32193         , p_transaction_coa_id      => l_adr_transaction_coa_id
32194         , p_accounting_coa_id       => l_adr_accounting_coa_id
32195         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
32196         , p_flex_value_set_id       => l_adr_flex_value_set_id
32197         , p_adr_code                => 'FV_465002_PAYABLES'
32198         , p_adr_type_code           => 'S'
32199         , p_component_type          => l_component_type
32200         , p_component_code          => l_component_code
32201         , p_component_type_code     => l_component_type_code
32202         , p_component_appl_id       => l_component_appl_id
32203         , p_amb_context_code        => l_amb_context_code
32204         , p_entity_code             => 'AP_INVOICES'
32205         , p_event_class_code        => 'INVOICES'
32206         , p_side                    => 'NA'
32207         );
32208 
32209   END IF;
32210 
32211    --
32212    --
32213    END IF;
32214    --
32215    -- Bug 4922099
32216    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32217           (NVL(l_enc_upg_option, 'N') = 'O')
32218         ) AND
32219         (l_bflow_method_code = 'PRIOR_ENTRY')
32220       )
32221    THEN
32222       IF
32226       THEN
32223       --
32224       1 = 2
32225       --
32227       xla_accounting_err_pkg.build_message
32228                                     (p_appli_s_name            => 'XLA'
32229                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32230                                     ,p_token_1                 => 'LINE_NUMBER'
32231                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32232                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32233                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32234                                                                              l_component_type
32235                                                                             ,l_component_code
32236                                                                             ,l_component_type_code
32237                                                                             ,l_component_appl_id
32238                                                                             ,l_amb_context_code
32239                                                                             ,l_entity_code
32240                                                                             ,l_event_class_code
32241                                                                            )
32242                                     ,p_token_3                 => 'OWNER'
32243                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32244                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32245                                                                           ,p_lookup_code    => l_component_type_code
32246                                                                          )
32247                                     ,p_token_4                 => 'PRODUCT_NAME'
32248                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32249                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32250                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32251                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32252                                     ,p_ae_header_id            =>  NULL
32253                                        );
32254 
32255         IF (C_LEVEL_ERROR>= g_log_level) THEN
32256                  trace
32257                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32258                       ,p_level    => C_LEVEL_ERROR
32259                       ,p_module   => l_log_module);
32260         END IF;
32261       END IF;
32262    END IF;
32263    --
32264    --
32265    ------------------------------------------------------------------------------------------------
32266    -- 4219869 Business Flow
32267    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32268    -- Prior Entry.  Currently, the following code is always generated.
32269    ------------------------------------------------------------------------------------------------
32270    XLA_AE_LINES_PKG.ValidateCurrentLine;
32271 
32272    ------------------------------------------------------------------------------------
32273    -- 4219869 Business Flow
32274    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32275    ------------------------------------------------------------------------------------
32276    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32277 
32278    ----------------------------------------------------------------------------------
32279    -- 4219869 Business Flow
32280    -- Update journal entry status -- Need to generate this within IF <condition>
32281    ----------------------------------------------------------------------------------
32282    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32283          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32284          ,p_balance_type_code => l_balance_type_code
32285          );
32286 
32287    -------------------------------------------------------------------------------------------
32288    -- 4262811 - Generate the Accrual Reversal lines
32289    -------------------------------------------------------------------------------------------
32290    BEGIN
32291       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32292                               (g_array_event(p_event_id).array_value_num('header_index'));
32293       IF l_acc_rev_flag IS NULL THEN
32294          l_acc_rev_flag := 'N';
32295       END IF;
32296    EXCEPTION
32297       WHEN OTHERS THEN
32298          l_acc_rev_flag := 'N';
32299    END;
32300    --
32301    IF (l_acc_rev_flag = 'Y') THEN
32302 
32303        -- 4645092  ------------------------------------------------------------------------------
32304        -- To allow MPA report to determine if it should generate report process
32305        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32306        ------------------------------------------------------------------------------------------
32307 
32308        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32309        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32310    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32314    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32311    -- call ADRs
32312    -- Bug 4922099
32313    --
32315         (NVL(l_actual_upg_option, 'N') = 'O') OR
32316         (NVL(l_enc_upg_option, 'N') = 'O')
32317       )
32318    THEN
32319    NULL;
32320    --
32321    --
32322    
32323   l_ccid := AcctDerRule_3(
32324            p_application_id           => p_application_id
32325          , p_ae_header_id             => l_ae_header_id 
32326 , p_source_2 => p_source_2
32327          , x_transaction_coa_id       => l_adr_transaction_coa_id
32328          , x_accounting_coa_id        => l_adr_accounting_coa_id
32329          , x_value_type_code          => l_adr_value_type_code
32330          , p_side                     => 'NA'
32331    );
32332 
32333    xla_ae_lines_pkg.set_ccid(
32334     p_code_combination_id          => l_ccid
32335   , p_value_type_code              => l_adr_value_type_code
32336   , p_transaction_coa_id           => l_adr_transaction_coa_id
32337   , p_accounting_coa_id            => l_adr_accounting_coa_id
32338   , p_adr_code                     => 'AP_INVOICE_DIST'
32339   , p_adr_type_code                => 'S'
32340   , p_component_type               => l_component_type
32341   , p_component_code               => l_component_code
32342   , p_component_type_code          => l_component_type_code
32343   , p_component_appl_id            => l_component_appl_id
32344   , p_amb_context_code             => l_amb_context_code
32345   , p_side                         => 'NA'
32346   );
32347 
32348 
32349    l_segment := AcctDerRule_7(
32350            p_application_id           => p_application_id
32351          , p_ae_header_id             => l_ae_header_id 
32352          , x_transaction_coa_id       => l_adr_transaction_coa_id
32353          , x_accounting_coa_id        => l_adr_accounting_coa_id
32354          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
32355          , x_flex_value_set_id        => l_adr_flex_value_set_id
32356          , x_value_type_code          => l_adr_value_type_code
32357          , x_value_combination_id     => l_adr_value_combination_id
32358          , x_value_segment_code       => l_adr_value_segment_code
32359          , p_side                     => 'NA'
32360          , p_override_seg_flag        => 'Y'
32361    );
32362 
32363    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
32364 
32365       xla_ae_lines_pkg.set_segment(
32366           p_to_segment_code         => 'GL_ACCOUNT'
32367         , p_segment_value           => l_segment
32368         , p_from_segment_code       => l_adr_value_segment_code
32369         , p_from_combination_id     => l_adr_value_combination_id
32370         , p_value_type_code         => l_adr_value_type_code
32371         , p_transaction_coa_id      => l_adr_transaction_coa_id
32372         , p_accounting_coa_id       => l_adr_accounting_coa_id
32373         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
32374         , p_flex_value_set_id       => l_adr_flex_value_set_id
32375         , p_adr_code                => 'FV_465002_PAYABLES'
32376         , p_adr_type_code           => 'S'
32377         , p_component_type          => l_component_type
32378         , p_component_code          => l_component_code
32379         , p_component_type_code     => l_component_type_code
32380         , p_component_appl_id       => l_component_appl_id
32381         , p_amb_context_code        => l_amb_context_code
32382         , p_entity_code             => 'AP_INVOICES'
32383         , p_event_class_code        => 'INVOICES'
32384         , p_side                    => 'NA'
32385         );
32386 
32387   END IF;
32388 
32389    --
32390    --
32391    END IF;
32392 
32393        --
32394        -- Update the line information that should be overwritten
32395        --
32396        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32397                                          p_header_num   => 1);
32398        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32399 
32400        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32401 
32402        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32403           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32404        END IF;
32405 
32406       --
32407       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32408       --
32409       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32410           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32411       ELSE
32412           ---------------------------------------------------------------------------------------------------
32413           -- 4262811a Switch Sign
32414           ---------------------------------------------------------------------------------------------------
32415           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32416           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32417                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32418           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32422                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32419                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32420           -- 5132302
32421           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32423 
32424       END IF;
32425 
32426       -- 4955764
32427       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32428       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32429 
32430 
32431       XLA_AE_LINES_PKG.ValidateCurrentLine;
32432       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32433 
32434       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32435                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32436                ,p_balance_type_code => l_balance_type_code);
32437 
32438    END IF;
32439 
32440    -----------------------------------------------------------------------------------------
32441    -- 4262811 Multiperiod Accounting
32442    -----------------------------------------------------------------------------------------
32443      -- No MPA option is assigned.
32444 
32445 
32446 END IF;
32447 END IF;
32448 --
32449 
32450 --
32451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32452    trace
32453       (p_msg      => 'END of AcctLineType_54'
32454       ,p_level    => C_LEVEL_PROCEDURE
32455       ,p_module   => l_log_module);
32456 END IF;
32457 --
32458 EXCEPTION
32459   WHEN xla_exceptions_pkg.application_exception THEN
32460       RAISE;
32461   WHEN OTHERS THEN
32462        xla_exceptions_pkg.raise_message
32463            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_54');
32464 END AcctLineType_54;
32465 --
32466 
32467 ---------------------------------------
32468 --
32469 -- PRIVATE FUNCTION
32470 --         AcctLineType_55
32471 --
32472 ---------------------------------------
32473 PROCEDURE AcctLineType_55 (
32474   p_application_id        IN NUMBER
32475  ,p_event_id              IN NUMBER
32476  ,p_calculate_acctd_flag  IN VARCHAR2
32477  ,p_calculate_g_l_flag    IN VARCHAR2
32478  ,p_actual_flag           IN OUT VARCHAR2
32479  ,p_balance_type_code     OUT VARCHAR2
32480  ,p_gain_or_loss_ref      OUT VARCHAR2
32481  
32482 --Federal Fund Expired Status
32483  , p_source_5            IN VARCHAR2
32484 --Invoice Distribution Type
32485  , p_source_8            IN VARCHAR2
32486  , p_source_8_meaning    IN VARCHAR2
32487 --Federal Prior Year Flag
32488  , p_source_9            IN VARCHAR2
32489 --Invoice Distribution Encumbrance Amount
32490  , p_source_10            IN NUMBER
32491 --Accrue on Receipt Option
32492  , p_source_11            IN VARCHAR2
32493  , p_source_11_meaning    IN VARCHAR2
32494 --Purchase Order Distribution Identifier
32495  , p_source_12            IN NUMBER
32496 --Accounting Reversal Indicator
32497  , p_source_15            IN VARCHAR2
32498 --Distribution Link Type
32499  , p_source_17            IN VARCHAR2
32500 --Allocation to Main Distribution Identifier
32501  , p_source_19            IN NUMBER
32502 --Invoice Identifier
32503  , p_source_20            IN NUMBER
32504 --Invoice Distribution Identifier
32505  , p_source_26            IN NUMBER
32506 --Payables Encumbrance Upgrade Credit Account
32507  , p_source_27            IN NUMBER
32508 --Payables Encumbrance Upgrade Credit Amount
32509  , p_source_28            IN NUMBER
32510 --Invoice Currency Code
32511  , p_source_29            IN VARCHAR2
32512 --Payables Encumbrance Upgrade Credit Base Amount
32513  , p_source_30            IN NUMBER
32514 --Payables Encumbrance Upgrade Debit Account
32515  , p_source_31            IN NUMBER
32516 --Payables Encumbrance Upgrade Debit Amount
32517  , p_source_32            IN NUMBER
32518 --Payables Encumbrance Upgrade Debit Base Amount
32519  , p_source_33            IN NUMBER
32520 --Payables Encumbrance Upgrade Option
32521  , p_source_34            IN VARCHAR2
32522 --Deferred Accounting End Date
32523  , p_source_39            IN DATE
32524 --Deferred Accounting Option
32525  , p_source_40            IN VARCHAR2
32526 --Deferred Accounting Start Date
32527  , p_source_41            IN DATE
32528 --Override Accounted Amount Indicator
32529  , p_source_42            IN VARCHAR2
32530  , p_source_42_meaning    IN VARCHAR2
32531 --Third Party Type
32532  , p_source_45            IN VARCHAR2
32533 --Parent Reversal Identifier
32534  , p_source_46            IN NUMBER
32535 --Invoice Distribution Statistical Amount
32536  , p_source_47            IN NUMBER
32537 --Invoice Distribution Tax Line Identifier
32538  , p_source_48            IN NUMBER
32539 --Invoice Distribution Tax Distribution Identifier from Tax
32540  , p_source_49            IN NUMBER
32541 --Invoice Distribution Summary Tax Line Identifier
32542  , p_source_50            IN NUMBER
32543 --Payables Upgrade Credit Encumbrance Type Identifier
32544  , p_source_51            IN NUMBER
32545 --Payables Upgrade Debit Encumbrance Type Identifier
32546  , p_source_52            IN NUMBER
32547 --Invoice Distribution Amount
32548  , p_source_55            IN NUMBER
32549 --Business Flow Purchasing Application Identifier
32550  , p_source_64            IN NUMBER
32551 --Business Flow Purchase Order Distribution Type
32555 --Business Flow Purchase Order Distribution Identifier
32552  , p_source_65            IN VARCHAR2
32553 --Business Flow Purchase Order Entity Code
32554  , p_source_66            IN VARCHAR2
32556  , p_source_67            IN NUMBER
32557 --Business Flow Purchasing Document Identifier
32558  , p_source_68            IN NUMBER
32559 --Federal Paid Unexpended Obligation Amount
32560  , p_source_69            IN NUMBER
32561 )
32562 IS
32563 
32564 l_component_type              VARCHAR2(80);
32565 l_component_code              VARCHAR2(30);
32566 l_component_type_code         VARCHAR2(1);
32567 l_component_appl_id           INTEGER;
32568 l_amb_context_code            VARCHAR2(30);
32569 l_entity_code                 VARCHAR2(30);
32570 l_event_class_code            VARCHAR2(30);
32571 l_ae_header_id                NUMBER;
32572 l_event_type_code             VARCHAR2(30);
32573 l_line_definition_code        VARCHAR2(30);
32574 l_line_definition_owner_code  VARCHAR2(1);
32575 --
32576 -- adr variables
32577 l_segment                     VARCHAR2(30);
32578 l_ccid                        NUMBER;
32579 l_adr_transaction_coa_id      NUMBER;
32580 l_adr_accounting_coa_id       NUMBER;
32581 l_adr_flexfield_segment_code  VARCHAR2(30);
32582 l_adr_flex_value_set_id       NUMBER;
32583 l_adr_value_type_code         VARCHAR2(30);
32584 l_adr_value_combination_id    NUMBER;
32585 l_adr_value_segment_code      VARCHAR2(30);
32586 
32587 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32588 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32589 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32590 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32591 
32592 -- 4262811 Variables ------------------------------------------------------------------------------------------
32593 l_entered_amt_idx             NUMBER;
32594 l_accted_amt_idx              NUMBER;
32595 l_acc_rev_flag                VARCHAR2(1);
32596 l_accrual_line_num            NUMBER;
32597 l_tmp_amt                     NUMBER;
32598 l_acc_rev_natural_side_code   VARCHAR2(1);
32599 
32600 l_num_entries                 NUMBER;
32601 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32602 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32603 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32604 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32605 l_recog_line_1                NUMBER;
32606 l_recog_line_2                NUMBER;
32607 
32608 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32609 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32610 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32611 
32612 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32613 
32614 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32615 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32616 
32617 ---------------------------------------------------------------------------------------------------------------
32618 
32619 
32620 --
32621 -- bulk performance
32622 --
32623 l_balance_type_code           VARCHAR2(1);
32624 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32625 l_log_module                  VARCHAR2(240);
32626 
32627 --
32628 -- Upgrade strategy
32629 --
32630 l_actual_upg_option           VARCHAR2(1);
32631 l_enc_upg_option           VARCHAR2(1);
32632 
32633 --
32634 BEGIN
32635 --
32636 IF g_log_enabled THEN
32637       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
32638 END IF;
32639 --
32640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32641 
32642       trace
32643          (p_msg      => 'BEGIN of AcctLineType_55'
32644          ,p_level    => C_LEVEL_PROCEDURE
32645          ,p_module   => l_log_module);
32646 
32647 END IF;
32648 --
32649 l_component_type             := 'AMB_JLT';
32650 l_component_code             := 'FV_AP_PAID_OBL_REV_CR';
32651 l_component_type_code        := 'S';
32652 l_component_appl_id          :=  200;
32653 l_amb_context_code           := 'DEFAULT';
32654 l_entity_code                := 'AP_INVOICES';
32655 l_event_class_code           := 'INVOICES';
32656 l_event_type_code            := 'INVOICES_ALL';
32657 l_line_definition_owner_code := 'S';
32658 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
32659 --
32660 l_balance_type_code          := 'A';
32661 l_segment                     := NULL;
32662 l_ccid                        := NULL;
32663 l_adr_transaction_coa_id      := NULL;
32664 l_adr_accounting_coa_id       := NULL;
32665 l_adr_flexfield_segment_code  := NULL;
32666 l_adr_flex_value_set_id       := NULL;
32667 l_adr_value_type_code         := NULL;
32668 l_adr_value_combination_id    := NULL;
32669 l_adr_value_segment_code      := NULL;
32670 
32671 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
32672 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
32673 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
32674 l_budgetary_control_flag     := 'Y';
32675 
32676 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32677 l_bflow_applied_to_amt       := NULL; -- 5132302
32678 l_entered_amt_idx            := NULL;          -- 4262811
32679 l_accted_amt_idx             := NULL;          -- 4262811
32683 --
32680 l_acc_rev_flag               := NULL;          -- 4262811
32681 l_accrual_line_num           := NULL;          -- 4262811
32682 l_tmp_amt                    := NULL;          -- 4262811
32684  
32685 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32686     l_balance_type_code <> 'B' THEN
32687 IF p_source_12 IS NOT NULL AND 
32688 (NVL(p_source_8,'
32689 ') =  'ITEM' OR 
32690 (NVL(p_source_8,'
32691 ') =  'IPV' AND 
32692 p_source_10 <  0) OR 
32693 NVL(p_source_8,'
32694 ') =  'ACCRUAL') AND 
32695 NVL(p_source_5,'
32696 ') =  'Unexpired' AND 
32697 NVL(p_source_11,'
32698 ') <>  'Y' AND 
32699 NVL(p_source_9,'
32700 ') <>  'Y'
32701  THEN 
32702 
32703    --
32704    XLA_AE_LINES_PKG.SetNewLine;
32705 
32706    p_balance_type_code          := l_balance_type_code;
32707    -- set the flag so later we will know whether the gain loss line needs to be created
32708    
32709    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32710      p_actual_flag :='A';
32711    END IF;
32712 
32713    --
32714    -- bulk performance
32715    --
32716    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32717                                       p_header_num   => 0); -- 4262811
32718    --
32719    -- set accounting line options
32720    --
32721    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32722            p_natural_side_code          => 'C'
32723          , p_gain_or_loss_flag          => 'N'
32724          , p_gl_transfer_mode_code      => 'S'
32725          , p_acct_entry_type_code       => 'A'
32726          , p_switch_side_flag           => 'N'
32727          , p_merge_duplicate_code       => 'N'
32728          );
32729    --
32730    l_acc_rev_natural_side_code := 'D';  -- 4262811
32731    -- 
32732    --
32733    -- set accounting line type info
32734    --
32735    xla_ae_lines_pkg.SetAcctLineType
32736       (p_component_type             => l_component_type
32737       ,p_event_type_code            => l_event_type_code
32738       ,p_line_definition_owner_code => l_line_definition_owner_code
32739       ,p_line_definition_code       => l_line_definition_code
32740       ,p_accounting_line_code       => l_component_code
32741       ,p_accounting_line_type_code  => l_component_type_code
32742       ,p_accounting_line_appl_id    => l_component_appl_id
32743       ,p_amb_context_code           => l_amb_context_code
32744       ,p_entity_code                => l_entity_code
32745       ,p_event_class_code           => l_event_class_code);
32746    --
32747    -- set accounting class
32748    --
32749    xla_ae_lines_pkg.SetAcctClass(
32750            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
32751          , p_ae_header_id           => l_ae_header_id
32752          );
32753 
32754    --
32755    -- set rounding class
32756    --
32757    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32758                       'ACCOUNTSPAYABLE';
32759 
32760    --
32761    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32762    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32763    --
32764    -- bulk performance
32765    --
32766    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32767 
32768    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32769       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32770 
32771    -- 4955764
32772    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32773       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32774 
32775    -- 4458381 Public Sector Enh
32776    
32777    --
32778    -- set accounting attributes for the line type
32779    --
32780    l_entered_amt_idx := 24;
32781    l_accted_amt_idx  := 26;
32782    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
32783    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32784    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
32785    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
32786    l_rec_acct_attrs.array_num_value(2)  := 
32787 xla_ae_sources_pkg.GetSystemSourceNum(
32788    p_source_code           => 'XLA_EVENT_APPL_ID'
32789  , p_source_type_code      => 'Y'
32790  , p_source_application_id =>  602
32791 );
32792    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
32793    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
32794    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
32795    l_rec_acct_attrs.array_char_value(4)  := 
32796 xla_ae_sources_pkg.GetSystemSourceChar(
32797    p_source_code           => 'XLA_ENTITY_CODE'
32798  , p_source_type_code      => 'Y'
32799  , p_source_application_id =>  602
32800 );
32801    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
32802    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
32803    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
32804    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
32805    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
32806    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
32807    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
32808    l_rec_acct_attrs.array_num_value(8)  := p_source_64;
32812    l_rec_acct_attrs.array_char_value(10)  := p_source_66;
32809    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32810    l_rec_acct_attrs.array_char_value(9)  := p_source_65;
32811    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
32813    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
32814    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_67);
32815    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32816    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_68);
32817    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
32818    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
32819    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
32820    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
32821    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
32822    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
32823    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
32824    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
32825    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
32826    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
32827    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
32828    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
32829    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
32830    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
32831    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
32832    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
32833    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
32834    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
32835    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
32836    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
32837    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
32838    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
32839    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
32840    l_rec_acct_attrs.array_num_value(24)  := p_source_69;
32841    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
32842    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
32843    l_rec_acct_attrs.array_acct_attr_code(26) := 'LEDGER_AMOUNT';
32844    l_rec_acct_attrs.array_num_value(26)  := p_source_69;
32845    l_rec_acct_attrs.array_acct_attr_code(27) := 'MULTIPERIOD_END_DATE';
32846    l_rec_acct_attrs.array_date_value(27)  := p_source_39;
32847    l_rec_acct_attrs.array_acct_attr_code(28) := 'MULTIPERIOD_OPTION';
32848    l_rec_acct_attrs.array_char_value(28)  := p_source_40;
32849    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_START_DATE';
32850    l_rec_acct_attrs.array_date_value(29)  := p_source_41;
32851    l_rec_acct_attrs.array_acct_attr_code(30) := 'OVERRIDE_ACCTD_AMT_FLAG';
32852    l_rec_acct_attrs.array_char_value(30)  := p_source_42;
32853    l_rec_acct_attrs.array_acct_attr_code(31) := 'PARTY_TYPE';
32854    l_rec_acct_attrs.array_char_value(31)  := p_source_45;
32855    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID1';
32856    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_46);
32857    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
32858    l_rec_acct_attrs.array_char_value(33)  := p_source_17;
32859    l_rec_acct_attrs.array_acct_attr_code(34) := 'STATISTICAL_AMOUNT';
32860    l_rec_acct_attrs.array_num_value(34)  := p_source_47;
32861    l_rec_acct_attrs.array_acct_attr_code(35) := 'TAX_LINE_REF_ID';
32862    l_rec_acct_attrs.array_num_value(35)  := p_source_48;
32863    l_rec_acct_attrs.array_acct_attr_code(36) := 'TAX_REC_NREC_DIST_REF_ID';
32864    l_rec_acct_attrs.array_num_value(36)  := p_source_49;
32865    l_rec_acct_attrs.array_acct_attr_code(37) := 'TAX_SUMMARY_LINE_REF_ID';
32866    l_rec_acct_attrs.array_num_value(37)  := p_source_50;
32867    l_rec_acct_attrs.array_acct_attr_code(38) := 'UPG_CR_ENC_TYPE_ID';
32868    l_rec_acct_attrs.array_num_value(38)  := p_source_51;
32869    l_rec_acct_attrs.array_acct_attr_code(39) := 'UPG_DR_ENC_TYPE_ID';
32870    l_rec_acct_attrs.array_num_value(39)  := p_source_52;
32871 
32872    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32873    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32874 
32875    ---------------------------------------------------------------------------------------------------------------
32876    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32877    ---------------------------------------------------------------------------------------------------------------
32878    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32879 
32880    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32881    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32882 
32883    IF xla_accounting_cache_pkg.GetValueChar
32884          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32885          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32886    AND l_bflow_method_code = 'PRIOR_ENTRY'
32887 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32888    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32889          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32893            (p_business_method_code    => l_bflow_method_code
32890        )
32891    THEN
32892          xla_ae_lines_pkg.BflowUpgEntry
32894            ,p_business_class_code     => l_bflow_class_code
32895            ,p_balance_type            => l_balance_type_code);
32896    ELSE
32897       NULL;
32898 XLA_AE_LINES_PKG.business_flow_validation(
32899                                 p_business_method_code     => l_bflow_method_code
32900                                ,p_business_class_code      => l_bflow_class_code
32901                                ,p_inherit_description_flag => l_inherit_desc_flag);
32902    END IF;
32903 
32904    --
32905    -- call analytical criteria
32906    --
32907    -- Inherited Analytical Criteria for business flow method of Prior Entry.
32908    --
32909    -- call description
32910    --
32911    -- No description or it is inherited.
32912    --
32913    -- call ADRs
32914    -- Bug 4922099
32915    --
32916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32917         (NVL(l_actual_upg_option, 'N') = 'O') OR
32918         (NVL(l_enc_upg_option, 'N') = 'O')
32919       )
32920    THEN
32921    NULL;
32922    --
32923    --
32924    
32925    --
32926    --
32927    END IF;
32928    --
32929    -- Bug 4922099
32930    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32931           (NVL(l_enc_upg_option, 'N') = 'O')
32932         ) AND
32933         (l_bflow_method_code = 'PRIOR_ENTRY')
32934       )
32935    THEN
32936       IF
32937       --
32938       1 = 1
32939       --
32940       THEN
32941       xla_accounting_err_pkg.build_message
32942                                     (p_appli_s_name            => 'XLA'
32943                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32944                                     ,p_token_1                 => 'LINE_NUMBER'
32945                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32946                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32947                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32948                                                                              l_component_type
32949                                                                             ,l_component_code
32950                                                                             ,l_component_type_code
32951                                                                             ,l_component_appl_id
32952                                                                             ,l_amb_context_code
32953                                                                             ,l_entity_code
32954                                                                             ,l_event_class_code
32955                                                                            )
32956                                     ,p_token_3                 => 'OWNER'
32957                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32958                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32959                                                                           ,p_lookup_code    => l_component_type_code
32960                                                                          )
32961                                     ,p_token_4                 => 'PRODUCT_NAME'
32962                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32963                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32964                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32965                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32966                                     ,p_ae_header_id            =>  NULL
32967                                        );
32968 
32969         IF (C_LEVEL_ERROR>= g_log_level) THEN
32970                  trace
32971                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32972                       ,p_level    => C_LEVEL_ERROR
32973                       ,p_module   => l_log_module);
32974         END IF;
32975       END IF;
32976    END IF;
32977    --
32978    --
32979    ------------------------------------------------------------------------------------------------
32980    -- 4219869 Business Flow
32981    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32982    -- Prior Entry.  Currently, the following code is always generated.
32983    ------------------------------------------------------------------------------------------------
32984    -- No ValidateCurrentLine for business flow method of Prior Entry
32985 
32986    ------------------------------------------------------------------------------------
32987    -- 4219869 Business Flow
32988    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32989    ------------------------------------------------------------------------------------
32990    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32991 
32992    ----------------------------------------------------------------------------------
32993    -- 4219869 Business Flow
32994    -- Update journal entry status -- Need to generate this within IF <condition>
32998          ,p_balance_type_code => l_balance_type_code
32995    ----------------------------------------------------------------------------------
32996    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32997          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32999          );
33000 
33001    -------------------------------------------------------------------------------------------
33002    -- 4262811 - Generate the Accrual Reversal lines
33003    -------------------------------------------------------------------------------------------
33004    BEGIN
33005       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33006                               (g_array_event(p_event_id).array_value_num('header_index'));
33007       IF l_acc_rev_flag IS NULL THEN
33008          l_acc_rev_flag := 'N';
33009       END IF;
33010    EXCEPTION
33011       WHEN OTHERS THEN
33012          l_acc_rev_flag := 'N';
33013    END;
33014    --
33015    IF (l_acc_rev_flag = 'Y') THEN
33016 
33017        -- 4645092  ------------------------------------------------------------------------------
33018        -- To allow MPA report to determine if it should generate report process
33019        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33020        ------------------------------------------------------------------------------------------
33021 
33022        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33023        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33024    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33025    -- call ADRs
33026    -- Bug 4922099
33027    --
33028    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33029         (NVL(l_actual_upg_option, 'N') = 'O') OR
33030         (NVL(l_enc_upg_option, 'N') = 'O')
33031       )
33032    THEN
33033    NULL;
33034    --
33035    --
33036    
33037    --
33038    --
33039    END IF;
33040 
33041        --
33042        -- Update the line information that should be overwritten
33043        --
33044        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33045                                          p_header_num   => 1);
33046        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33047 
33048        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33049 
33050        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33051           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33052        END IF;
33053 
33054       --
33055       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33056       --
33057       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33058           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33059       ELSE
33060           ---------------------------------------------------------------------------------------------------
33061           -- 4262811a Switch Sign
33062           ---------------------------------------------------------------------------------------------------
33063           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33064           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33065                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33066           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33067                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33068           -- 5132302
33069           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33070                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33071 
33072       END IF;
33073 
33074       -- 4955764
33075       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33076       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33077 
33078 
33079       XLA_AE_LINES_PKG.ValidateCurrentLine;
33080       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33081 
33082       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33083                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33084                ,p_balance_type_code => l_balance_type_code);
33085 
33086    END IF;
33087 
33088    -----------------------------------------------------------------------------------------
33089    -- 4262811 Multiperiod Accounting
33090    -----------------------------------------------------------------------------------------
33091      -- No MPA option is assigned.
33092 
33093 
33094 END IF;
33095 END IF;
33096 --
33097 
33098 --
33099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33100    trace
33101       (p_msg      => 'END of AcctLineType_55'
33102       ,p_level    => C_LEVEL_PROCEDURE
33103       ,p_module   => l_log_module);
33104 END IF;
33105 --
33106 EXCEPTION
33107   WHEN xla_exceptions_pkg.application_exception THEN
33108       RAISE;
33109   WHEN OTHERS THEN
33110        xla_exceptions_pkg.raise_message
33114 
33111            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_55');
33112 END AcctLineType_55;
33113 --
33115 ---------------------------------------
33116 --
33117 -- PRIVATE FUNCTION
33118 --         AcctLineType_56
33119 --
33120 ---------------------------------------
33121 PROCEDURE AcctLineType_56 (
33122   p_application_id        IN NUMBER
33123  ,p_event_id              IN NUMBER
33124  ,p_calculate_acctd_flag  IN VARCHAR2
33125  ,p_calculate_g_l_flag    IN VARCHAR2
33126  ,p_actual_flag           IN OUT VARCHAR2
33127  ,p_balance_type_code     OUT VARCHAR2
33128  ,p_gain_or_loss_ref      OUT VARCHAR2
33129  
33130 --Invoice Distribution Account
33131  , p_source_2            IN NUMBER
33132 --Payment Status Flag of the Invoice
33133  , p_source_7            IN VARCHAR2
33134 --Invoice Distribution Type
33135  , p_source_8            IN VARCHAR2
33136  , p_source_8_meaning    IN VARCHAR2
33137 --Federal Prior Year Flag
33138  , p_source_9            IN VARCHAR2
33139 --Invoice Distribution Encumbrance Amount
33140  , p_source_10            IN NUMBER
33141 --Accrue on Receipt Option
33142  , p_source_11            IN VARCHAR2
33143  , p_source_11_meaning    IN VARCHAR2
33144 --Purchase Order Distribution Identifier
33145  , p_source_12            IN NUMBER
33146 --Accounting Reversal Indicator
33147  , p_source_15            IN VARCHAR2
33148 --Distribution Link Type
33149  , p_source_17            IN VARCHAR2
33150 --Allocation to Main Distribution Identifier
33151  , p_source_19            IN NUMBER
33152 --Invoice Identifier
33153  , p_source_20            IN NUMBER
33154 --Invoice Distribution Identifier
33155  , p_source_26            IN NUMBER
33156 --Payables Encumbrance Upgrade Credit Account
33157  , p_source_27            IN NUMBER
33158 --Payables Encumbrance Upgrade Credit Amount
33159  , p_source_28            IN NUMBER
33160 --Invoice Currency Code
33161  , p_source_29            IN VARCHAR2
33162 --Payables Encumbrance Upgrade Credit Base Amount
33163  , p_source_30            IN NUMBER
33164 --Payables Encumbrance Upgrade Debit Account
33165  , p_source_31            IN NUMBER
33166 --Payables Encumbrance Upgrade Debit Amount
33167  , p_source_32            IN NUMBER
33168 --Payables Encumbrance Upgrade Debit Base Amount
33169  , p_source_33            IN NUMBER
33170 --Payables Encumbrance Upgrade Option
33171  , p_source_34            IN VARCHAR2
33172 --Invoice Exchange Date
33173  , p_source_36            IN DATE
33174 --Invoice Exchange Rate
33175  , p_source_37            IN NUMBER
33176 --Invoice Exchange Rate Type
33177  , p_source_38            IN VARCHAR2
33178 --Deferred Accounting End Date
33179  , p_source_39            IN DATE
33180 --Deferred Accounting Option
33181  , p_source_40            IN VARCHAR2
33182 --Deferred Accounting Start Date
33183  , p_source_41            IN DATE
33184 --Override Accounted Amount Indicator
33185  , p_source_42            IN VARCHAR2
33186  , p_source_42_meaning    IN VARCHAR2
33187 --Invoice Supplier Identifier
33188  , p_source_43            IN NUMBER
33189 --Invoice Supplier Site Identifier
33190  , p_source_44            IN NUMBER
33191 --Third Party Type
33192  , p_source_45            IN VARCHAR2
33193 --Parent Reversal Identifier
33194  , p_source_46            IN NUMBER
33195 --Invoice Distribution Statistical Amount
33196  , p_source_47            IN NUMBER
33197 --Invoice Distribution Tax Line Identifier
33198  , p_source_48            IN NUMBER
33199 --Invoice Distribution Tax Distribution Identifier from Tax
33200  , p_source_49            IN NUMBER
33201 --Invoice Distribution Summary Tax Line Identifier
33202  , p_source_50            IN NUMBER
33203 --Payables Upgrade Credit Encumbrance Type Identifier
33204  , p_source_51            IN NUMBER
33205 --Payables Upgrade Debit Encumbrance Type Identifier
33206  , p_source_52            IN NUMBER
33207 --Invoice Distribution Amount
33208  , p_source_55            IN NUMBER
33209 --Business Flow Purchasing Application Identifier
33210  , p_source_64            IN NUMBER
33211 --Business Flow Purchase Order Distribution Type
33212  , p_source_65            IN VARCHAR2
33213 --Business Flow Purchase Order Entity Code
33214  , p_source_66            IN VARCHAR2
33215 --Business Flow Purchase Order Distribution Identifier
33216  , p_source_67            IN NUMBER
33217 --Business Flow Purchasing Document Identifier
33218  , p_source_68            IN NUMBER
33219 --Federal Paid Unexpended Obligation Amount
33220  , p_source_69            IN NUMBER
33221 )
33222 IS
33223 
33224 l_component_type              VARCHAR2(80);
33225 l_component_code              VARCHAR2(30);
33226 l_component_type_code         VARCHAR2(1);
33227 l_component_appl_id           INTEGER;
33228 l_amb_context_code            VARCHAR2(30);
33229 l_entity_code                 VARCHAR2(30);
33230 l_event_class_code            VARCHAR2(30);
33231 l_ae_header_id                NUMBER;
33232 l_event_type_code             VARCHAR2(30);
33233 l_line_definition_code        VARCHAR2(30);
33234 l_line_definition_owner_code  VARCHAR2(1);
33235 --
33236 -- adr variables
33237 l_segment                     VARCHAR2(30);
33238 l_ccid                        NUMBER;
33239 l_adr_transaction_coa_id      NUMBER;
33240 l_adr_accounting_coa_id       NUMBER;
33241 l_adr_flexfield_segment_code  VARCHAR2(30);
33242 l_adr_flex_value_set_id       NUMBER;
33243 l_adr_value_type_code         VARCHAR2(30);
33244 l_adr_value_combination_id    NUMBER;
33248 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33245 l_adr_value_segment_code      VARCHAR2(30);
33246 
33247 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33249 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33250 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33251 
33252 -- 4262811 Variables ------------------------------------------------------------------------------------------
33253 l_entered_amt_idx             NUMBER;
33254 l_accted_amt_idx              NUMBER;
33255 l_acc_rev_flag                VARCHAR2(1);
33256 l_accrual_line_num            NUMBER;
33257 l_tmp_amt                     NUMBER;
33258 l_acc_rev_natural_side_code   VARCHAR2(1);
33259 
33260 l_num_entries                 NUMBER;
33261 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33262 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33263 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33264 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33265 l_recog_line_1                NUMBER;
33266 l_recog_line_2                NUMBER;
33267 
33268 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33269 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33270 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33271 
33272 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33273 
33274 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33275 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33276 
33277 ---------------------------------------------------------------------------------------------------------------
33278 
33279 
33280 --
33281 -- bulk performance
33282 --
33283 l_balance_type_code           VARCHAR2(1);
33284 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33285 l_log_module                  VARCHAR2(240);
33286 
33287 --
33288 -- Upgrade strategy
33289 --
33290 l_actual_upg_option           VARCHAR2(1);
33291 l_enc_upg_option           VARCHAR2(1);
33292 
33293 --
33294 BEGIN
33295 --
33296 IF g_log_enabled THEN
33297       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
33298 END IF;
33299 --
33300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33301 
33302       trace
33303          (p_msg      => 'BEGIN of AcctLineType_56'
33304          ,p_level    => C_LEVEL_PROCEDURE
33305          ,p_module   => l_log_module);
33306 
33307 END IF;
33308 --
33309 l_component_type             := 'AMB_JLT';
33310 l_component_code             := 'FV_AP_PAID_OBL_REV_DR';
33311 l_component_type_code        := 'S';
33312 l_component_appl_id          :=  200;
33313 l_amb_context_code           := 'DEFAULT';
33314 l_entity_code                := 'AP_INVOICES';
33315 l_event_class_code           := 'INVOICES';
33316 l_event_type_code            := 'INVOICES_ALL';
33317 l_line_definition_owner_code := 'S';
33318 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
33319 --
33320 l_balance_type_code          := 'A';
33321 l_segment                     := NULL;
33322 l_ccid                        := NULL;
33323 l_adr_transaction_coa_id      := NULL;
33324 l_adr_accounting_coa_id       := NULL;
33325 l_adr_flexfield_segment_code  := NULL;
33326 l_adr_flex_value_set_id       := NULL;
33327 l_adr_value_type_code         := NULL;
33328 l_adr_value_combination_id    := NULL;
33329 l_adr_value_segment_code      := NULL;
33330 
33331 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33332 l_bflow_class_code           := '';    -- 4219869 Business Flow
33333 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33334 l_budgetary_control_flag     := 'Y';
33335 
33336 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33337 l_bflow_applied_to_amt       := NULL; -- 5132302
33338 l_entered_amt_idx            := NULL;          -- 4262811
33339 l_accted_amt_idx             := NULL;          -- 4262811
33340 l_acc_rev_flag               := NULL;          -- 4262811
33341 l_accrual_line_num           := NULL;          -- 4262811
33342 l_tmp_amt                    := NULL;          -- 4262811
33343 --
33344  
33345 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33346     l_balance_type_code <> 'B' THEN
33347 IF p_source_12 IS NOT NULL AND 
33348 (NVL(p_source_8,'
33349 ') =  'ITEM' OR 
33350 (NVL(p_source_8,'
33351 ') =  'IPV' AND 
33352 p_source_10 <  0) OR 
33353 NVL(p_source_8,'
33354 ') =  'ACCRUAL') AND 
33355 NVL(p_source_11,'
33356 ') <>  'Y' AND 
33357 NVL(p_source_9,'
33358 ') <>  'Y'
33359  THEN 
33360 
33361    --
33362    XLA_AE_LINES_PKG.SetNewLine;
33363 
33364    p_balance_type_code          := l_balance_type_code;
33365    -- set the flag so later we will know whether the gain loss line needs to be created
33366    
33367    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33368      p_actual_flag :='A';
33369    END IF;
33370 
33371    --
33372    -- bulk performance
33373    --
33374    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33375                                       p_header_num   => 0); -- 4262811
33376    --
33380            p_natural_side_code          => 'D'
33377    -- set accounting line options
33378    --
33379    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33381          , p_gain_or_loss_flag          => 'N'
33382          , p_gl_transfer_mode_code      => 'S'
33383          , p_acct_entry_type_code       => 'A'
33384          , p_switch_side_flag           => 'N'
33385          , p_merge_duplicate_code       => 'N'
33386          );
33387    --
33388    l_acc_rev_natural_side_code := 'C';  -- 4262811
33389    -- 
33390    --
33391    -- set accounting line type info
33392    --
33393    xla_ae_lines_pkg.SetAcctLineType
33394       (p_component_type             => l_component_type
33395       ,p_event_type_code            => l_event_type_code
33396       ,p_line_definition_owner_code => l_line_definition_owner_code
33397       ,p_line_definition_code       => l_line_definition_code
33398       ,p_accounting_line_code       => l_component_code
33399       ,p_accounting_line_type_code  => l_component_type_code
33400       ,p_accounting_line_appl_id    => l_component_appl_id
33401       ,p_amb_context_code           => l_amb_context_code
33402       ,p_entity_code                => l_entity_code
33403       ,p_event_class_code           => l_event_class_code);
33404    --
33405    -- set accounting class
33406    --
33407    xla_ae_lines_pkg.SetAcctClass(
33408            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
33409          , p_ae_header_id           => l_ae_header_id
33410          );
33411 
33412    --
33413    -- set rounding class
33414    --
33415    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33416                       'ACCOUNTSPAYABLE';
33417 
33418    --
33419    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33420    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33421    --
33422    -- bulk performance
33423    --
33424    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33425 
33426    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33427       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33428 
33429    -- 4955764
33430    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33431       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33432 
33433    -- 4458381 Public Sector Enh
33434    
33435    --
33436    -- set accounting attributes for the line type
33437    --
33438    l_entered_amt_idx := 24;
33439    l_accted_amt_idx  := 29;
33440    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
33441    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33442    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
33443    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
33444    l_rec_acct_attrs.array_num_value(2)  := 
33445 xla_ae_sources_pkg.GetSystemSourceNum(
33446    p_source_code           => 'XLA_EVENT_APPL_ID'
33447  , p_source_type_code      => 'Y'
33448  , p_source_application_id =>  602
33449 );
33450    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
33451    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
33452    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
33453    l_rec_acct_attrs.array_char_value(4)  := 
33454 xla_ae_sources_pkg.GetSystemSourceChar(
33455    p_source_code           => 'XLA_ENTITY_CODE'
33456  , p_source_type_code      => 'Y'
33457  , p_source_application_id =>  602
33458 );
33459    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
33460    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
33461    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
33462    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
33463    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
33464    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
33465    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
33466    l_rec_acct_attrs.array_num_value(8)  := p_source_64;
33467    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33468    l_rec_acct_attrs.array_char_value(9)  := p_source_65;
33469    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
33470    l_rec_acct_attrs.array_char_value(10)  := p_source_66;
33471    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
33472    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_67);
33473    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33474    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_68);
33475    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
33476    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
33477    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
33478    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
33479    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
33480    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
33481    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
33482    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
33483    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
33484    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
33485    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
33486    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
33490    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
33487    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
33488    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
33489    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
33491    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
33492    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
33493    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
33494    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
33495    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
33496    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
33497    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
33498    l_rec_acct_attrs.array_num_value(24)  := p_source_69;
33499    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
33500    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
33501    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
33502    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
33503    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
33504    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
33505    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
33506    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
33507    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
33508    l_rec_acct_attrs.array_num_value(29)  := p_source_69;
33509    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
33510    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
33511    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
33512    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
33513    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
33514    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
33515    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
33516    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
33517    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
33518    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
33519    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
33520    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
33521    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
33522    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
33523    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
33524    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
33525    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
33526    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
33527    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
33528    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
33529    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
33530    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
33531    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
33532    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
33533    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
33534    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
33535    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
33536    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
33537    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
33538    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
33539 
33540    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33541    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33542 
33543    ---------------------------------------------------------------------------------------------------------------
33544    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33545    ---------------------------------------------------------------------------------------------------------------
33546    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33547 
33548    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33549    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33550 
33551    IF xla_accounting_cache_pkg.GetValueChar
33552          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33553          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33554    AND l_bflow_method_code = 'PRIOR_ENTRY'
33555 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33556    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33557          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33558        )
33559    THEN
33560          xla_ae_lines_pkg.BflowUpgEntry
33561            (p_business_method_code    => l_bflow_method_code
33562            ,p_business_class_code     => l_bflow_class_code
33563            ,p_balance_type            => l_balance_type_code);
33564    ELSE
33565       NULL;
33566 -- No business flow processing for business flow method of NONE.
33567    END IF;
33568 
33569    --
33570    -- call analytical criteria
33571    --
33572    
33573    --
33574    -- call description
33575    --
33576    -- No description or it is inherited.
33577    --
33578    -- call ADRs
33579    -- Bug 4922099
33580    --
33581    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33585    THEN
33582         (NVL(l_actual_upg_option, 'N') = 'O') OR
33583         (NVL(l_enc_upg_option, 'N') = 'O')
33584       )
33586    NULL;
33587    --
33588    --
33589    
33590   l_ccid := AcctDerRule_3(
33591            p_application_id           => p_application_id
33592          , p_ae_header_id             => l_ae_header_id 
33593 , p_source_2 => p_source_2
33594          , x_transaction_coa_id       => l_adr_transaction_coa_id
33595          , x_accounting_coa_id        => l_adr_accounting_coa_id
33596          , x_value_type_code          => l_adr_value_type_code
33597          , p_side                     => 'NA'
33598    );
33599 
33600    xla_ae_lines_pkg.set_ccid(
33601     p_code_combination_id          => l_ccid
33602   , p_value_type_code              => l_adr_value_type_code
33603   , p_transaction_coa_id           => l_adr_transaction_coa_id
33604   , p_accounting_coa_id            => l_adr_accounting_coa_id
33605   , p_adr_code                     => 'AP_INVOICE_DIST'
33606   , p_adr_type_code                => 'S'
33607   , p_component_type               => l_component_type
33608   , p_component_code               => l_component_code
33609   , p_component_type_code          => l_component_type_code
33610   , p_component_appl_id            => l_component_appl_id
33611   , p_amb_context_code             => l_amb_context_code
33612   , p_side                         => 'NA'
33613   );
33614 
33615 
33616    l_segment := AcctDerRule_10(
33617            p_application_id           => p_application_id
33618          , p_ae_header_id             => l_ae_header_id 
33619 , p_source_7 => p_source_7
33620          , x_transaction_coa_id       => l_adr_transaction_coa_id
33621          , x_accounting_coa_id        => l_adr_accounting_coa_id
33622          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
33623          , x_flex_value_set_id        => l_adr_flex_value_set_id
33624          , x_value_type_code          => l_adr_value_type_code
33625          , x_value_combination_id     => l_adr_value_combination_id
33626          , x_value_segment_code       => l_adr_value_segment_code
33627          , p_side                     => 'NA'
33628          , p_override_seg_flag        => 'Y'
33629    );
33630 
33631    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
33632 
33633       xla_ae_lines_pkg.set_segment(
33634           p_to_segment_code         => 'GL_ACCOUNT'
33635         , p_segment_value           => l_segment
33636         , p_from_segment_code       => l_adr_value_segment_code
33637         , p_from_combination_id     => l_adr_value_combination_id
33638         , p_value_type_code         => l_adr_value_type_code
33639         , p_transaction_coa_id      => l_adr_transaction_coa_id
33640         , p_accounting_coa_id       => l_adr_accounting_coa_id
33641         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
33642         , p_flex_value_set_id       => l_adr_flex_value_set_id
33643         , p_adr_code                => 'FV_480X01_PAID_OBL_REV_DR'
33644         , p_adr_type_code           => 'S'
33645         , p_component_type          => l_component_type
33646         , p_component_code          => l_component_code
33647         , p_component_type_code     => l_component_type_code
33648         , p_component_appl_id       => l_component_appl_id
33649         , p_amb_context_code        => l_amb_context_code
33650         , p_entity_code             => 'AP_INVOICES'
33651         , p_event_class_code        => 'INVOICES'
33652         , p_side                    => 'NA'
33653         );
33654 
33655   END IF;
33656 
33657    --
33658    --
33659    END IF;
33660    --
33661    -- Bug 4922099
33662    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33663           (NVL(l_enc_upg_option, 'N') = 'O')
33664         ) AND
33665         (l_bflow_method_code = 'PRIOR_ENTRY')
33666       )
33667    THEN
33668       IF
33669       --
33670       1 = 2
33671       --
33672       THEN
33673       xla_accounting_err_pkg.build_message
33674                                     (p_appli_s_name            => 'XLA'
33675                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33676                                     ,p_token_1                 => 'LINE_NUMBER'
33677                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33678                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33679                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33680                                                                              l_component_type
33681                                                                             ,l_component_code
33682                                                                             ,l_component_type_code
33683                                                                             ,l_component_appl_id
33684                                                                             ,l_amb_context_code
33685                                                                             ,l_entity_code
33686                                                                             ,l_event_class_code
33687                                                                            )
33688                                     ,p_token_3                 => 'OWNER'
33689                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33693                                     ,p_token_4                 => 'PRODUCT_NAME'
33690                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33691                                                                           ,p_lookup_code    => l_component_type_code
33692                                                                          )
33694                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33695                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33696                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33697                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33698                                     ,p_ae_header_id            =>  NULL
33699                                        );
33700 
33701         IF (C_LEVEL_ERROR>= g_log_level) THEN
33702                  trace
33703                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33704                       ,p_level    => C_LEVEL_ERROR
33705                       ,p_module   => l_log_module);
33706         END IF;
33707       END IF;
33708    END IF;
33709    --
33710    --
33711    ------------------------------------------------------------------------------------------------
33712    -- 4219869 Business Flow
33713    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33714    -- Prior Entry.  Currently, the following code is always generated.
33715    ------------------------------------------------------------------------------------------------
33716    XLA_AE_LINES_PKG.ValidateCurrentLine;
33717 
33718    ------------------------------------------------------------------------------------
33719    -- 4219869 Business Flow
33720    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33721    ------------------------------------------------------------------------------------
33722    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33723 
33724    ----------------------------------------------------------------------------------
33725    -- 4219869 Business Flow
33726    -- Update journal entry status -- Need to generate this within IF <condition>
33727    ----------------------------------------------------------------------------------
33728    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33729          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33730          ,p_balance_type_code => l_balance_type_code
33731          );
33732 
33733    -------------------------------------------------------------------------------------------
33734    -- 4262811 - Generate the Accrual Reversal lines
33735    -------------------------------------------------------------------------------------------
33736    BEGIN
33737       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33738                               (g_array_event(p_event_id).array_value_num('header_index'));
33739       IF l_acc_rev_flag IS NULL THEN
33740          l_acc_rev_flag := 'N';
33741       END IF;
33742    EXCEPTION
33743       WHEN OTHERS THEN
33744          l_acc_rev_flag := 'N';
33745    END;
33746    --
33747    IF (l_acc_rev_flag = 'Y') THEN
33748 
33749        -- 4645092  ------------------------------------------------------------------------------
33750        -- To allow MPA report to determine if it should generate report process
33751        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33752        ------------------------------------------------------------------------------------------
33753 
33754        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33755        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33756    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33757    -- call ADRs
33758    -- Bug 4922099
33759    --
33760    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33761         (NVL(l_actual_upg_option, 'N') = 'O') OR
33762         (NVL(l_enc_upg_option, 'N') = 'O')
33763       )
33764    THEN
33765    NULL;
33766    --
33767    --
33768    
33769   l_ccid := AcctDerRule_3(
33770            p_application_id           => p_application_id
33771          , p_ae_header_id             => l_ae_header_id 
33772 , p_source_2 => p_source_2
33773          , x_transaction_coa_id       => l_adr_transaction_coa_id
33774          , x_accounting_coa_id        => l_adr_accounting_coa_id
33775          , x_value_type_code          => l_adr_value_type_code
33776          , p_side                     => 'NA'
33777    );
33778 
33779    xla_ae_lines_pkg.set_ccid(
33780     p_code_combination_id          => l_ccid
33781   , p_value_type_code              => l_adr_value_type_code
33782   , p_transaction_coa_id           => l_adr_transaction_coa_id
33783   , p_accounting_coa_id            => l_adr_accounting_coa_id
33784   , p_adr_code                     => 'AP_INVOICE_DIST'
33785   , p_adr_type_code                => 'S'
33786   , p_component_type               => l_component_type
33787   , p_component_code               => l_component_code
33788   , p_component_type_code          => l_component_type_code
33789   , p_component_appl_id            => l_component_appl_id
33790   , p_amb_context_code             => l_amb_context_code
33791   , p_side                         => 'NA'
33792   );
33793 
33797          , p_ae_header_id             => l_ae_header_id 
33794 
33795    l_segment := AcctDerRule_10(
33796            p_application_id           => p_application_id
33798 , p_source_7 => p_source_7
33799          , x_transaction_coa_id       => l_adr_transaction_coa_id
33800          , x_accounting_coa_id        => l_adr_accounting_coa_id
33801          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
33802          , x_flex_value_set_id        => l_adr_flex_value_set_id
33803          , x_value_type_code          => l_adr_value_type_code
33804          , x_value_combination_id     => l_adr_value_combination_id
33805          , x_value_segment_code       => l_adr_value_segment_code
33806          , p_side                     => 'NA'
33807          , p_override_seg_flag        => 'Y'
33808    );
33809 
33810    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
33811 
33812       xla_ae_lines_pkg.set_segment(
33813           p_to_segment_code         => 'GL_ACCOUNT'
33814         , p_segment_value           => l_segment
33815         , p_from_segment_code       => l_adr_value_segment_code
33816         , p_from_combination_id     => l_adr_value_combination_id
33817         , p_value_type_code         => l_adr_value_type_code
33818         , p_transaction_coa_id      => l_adr_transaction_coa_id
33819         , p_accounting_coa_id       => l_adr_accounting_coa_id
33820         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
33821         , p_flex_value_set_id       => l_adr_flex_value_set_id
33822         , p_adr_code                => 'FV_480X01_PAID_OBL_REV_DR'
33823         , p_adr_type_code           => 'S'
33824         , p_component_type          => l_component_type
33825         , p_component_code          => l_component_code
33826         , p_component_type_code     => l_component_type_code
33827         , p_component_appl_id       => l_component_appl_id
33828         , p_amb_context_code        => l_amb_context_code
33829         , p_entity_code             => 'AP_INVOICES'
33830         , p_event_class_code        => 'INVOICES'
33831         , p_side                    => 'NA'
33832         );
33833 
33834   END IF;
33835 
33836    --
33837    --
33838    END IF;
33839 
33840        --
33841        -- Update the line information that should be overwritten
33842        --
33843        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33844                                          p_header_num   => 1);
33845        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33846 
33847        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33848 
33849        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33850           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33851        END IF;
33852 
33853       --
33854       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33855       --
33856       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33857           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33858       ELSE
33859           ---------------------------------------------------------------------------------------------------
33860           -- 4262811a Switch Sign
33861           ---------------------------------------------------------------------------------------------------
33862           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33863           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33864                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33865           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33866                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33867           -- 5132302
33868           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33869                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33870 
33871       END IF;
33872 
33873       -- 4955764
33874       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33875       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33876 
33877 
33878       XLA_AE_LINES_PKG.ValidateCurrentLine;
33879       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33880 
33881       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33882                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33883                ,p_balance_type_code => l_balance_type_code);
33884 
33885    END IF;
33886 
33887    -----------------------------------------------------------------------------------------
33888    -- 4262811 Multiperiod Accounting
33889    -----------------------------------------------------------------------------------------
33890      -- No MPA option is assigned.
33891 
33892 
33893 END IF;
33894 END IF;
33895 --
33896 
33897 --
33898 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33899    trace
33900       (p_msg      => 'END of AcctLineType_56'
33901       ,p_level    => C_LEVEL_PROCEDURE
33902       ,p_module   => l_log_module);
33903 END IF;
33904 --
33905 EXCEPTION
33906   WHEN xla_exceptions_pkg.application_exception THEN
33907       RAISE;
33911 END AcctLineType_56;
33908   WHEN OTHERS THEN
33909        xla_exceptions_pkg.raise_message
33910            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_56');
33912 --
33913 
33914 ---------------------------------------
33915 --
33916 -- PRIVATE FUNCTION
33917 --         AcctLineType_57
33918 --
33919 ---------------------------------------
33920 PROCEDURE AcctLineType_57 (
33921   p_application_id        IN NUMBER
33922  ,p_event_id              IN NUMBER
33923  ,p_calculate_acctd_flag  IN VARCHAR2
33924  ,p_calculate_g_l_flag    IN VARCHAR2
33925  ,p_actual_flag           IN OUT VARCHAR2
33926  ,p_balance_type_code     OUT VARCHAR2
33927  ,p_gain_or_loss_ref      OUT VARCHAR2
33928  
33929 --Invoice Distribution Description
33930  , p_source_1            IN VARCHAR2
33931 --Invoice Distribution Account
33932  , p_source_2            IN NUMBER
33933 --Federal Fund Expired Status
33934  , p_source_5            IN VARCHAR2
33935 --Invoice Distribution Type
33936  , p_source_8            IN VARCHAR2
33937  , p_source_8_meaning    IN VARCHAR2
33938 --Federal Prior Year Flag
33939  , p_source_9            IN VARCHAR2
33940 --Invoice Distribution Encumbrance Amount
33941  , p_source_10            IN NUMBER
33942 --Accrue on Receipt Option
33943  , p_source_11            IN VARCHAR2
33944  , p_source_11_meaning    IN VARCHAR2
33945 --Purchase Order Distribution Identifier
33946  , p_source_12            IN NUMBER
33947 --Accounting Reversal Indicator
33948  , p_source_15            IN VARCHAR2
33949 --Distribution Link Type
33950  , p_source_17            IN VARCHAR2
33951 --Allocation to Main Distribution Identifier
33952  , p_source_19            IN NUMBER
33953 --Invoice Identifier
33954  , p_source_20            IN NUMBER
33955 --Invoice Distribution Identifier
33956  , p_source_26            IN NUMBER
33957 --Payables Encumbrance Upgrade Credit Account
33958  , p_source_27            IN NUMBER
33959 --Payables Encumbrance Upgrade Credit Amount
33960  , p_source_28            IN NUMBER
33961 --Invoice Currency Code
33962  , p_source_29            IN VARCHAR2
33963 --Payables Encumbrance Upgrade Credit Base Amount
33964  , p_source_30            IN NUMBER
33965 --Payables Encumbrance Upgrade Debit Account
33966  , p_source_31            IN NUMBER
33967 --Payables Encumbrance Upgrade Debit Amount
33968  , p_source_32            IN NUMBER
33969 --Payables Encumbrance Upgrade Debit Base Amount
33970  , p_source_33            IN NUMBER
33971 --Payables Encumbrance Upgrade Option
33972  , p_source_34            IN VARCHAR2
33973 --Invoice Exchange Date
33974  , p_source_36            IN DATE
33975 --Invoice Exchange Rate
33976  , p_source_37            IN NUMBER
33977 --Invoice Exchange Rate Type
33978  , p_source_38            IN VARCHAR2
33979 --Deferred Accounting End Date
33980  , p_source_39            IN DATE
33981 --Deferred Accounting Option
33982  , p_source_40            IN VARCHAR2
33983 --Deferred Accounting Start Date
33984  , p_source_41            IN DATE
33985 --Override Accounted Amount Indicator
33986  , p_source_42            IN VARCHAR2
33987  , p_source_42_meaning    IN VARCHAR2
33988 --Invoice Supplier Identifier
33989  , p_source_43            IN NUMBER
33990 --Invoice Supplier Site Identifier
33991  , p_source_44            IN NUMBER
33992 --Third Party Type
33993  , p_source_45            IN VARCHAR2
33994 --Parent Reversal Identifier
33995  , p_source_46            IN NUMBER
33996 --Invoice Distribution Statistical Amount
33997  , p_source_47            IN NUMBER
33998 --Invoice Distribution Tax Line Identifier
33999  , p_source_48            IN NUMBER
34000 --Invoice Distribution Tax Distribution Identifier from Tax
34001  , p_source_49            IN NUMBER
34002 --Invoice Distribution Summary Tax Line Identifier
34003  , p_source_50            IN NUMBER
34004 --Payables Upgrade Credit Encumbrance Type Identifier
34005  , p_source_51            IN NUMBER
34006 --Payables Upgrade Debit Encumbrance Type Identifier
34007  , p_source_52            IN NUMBER
34008 --Invoice Distribution Amount
34009  , p_source_55            IN NUMBER
34010 --Business Flow Purchasing Application Identifier
34011  , p_source_64            IN NUMBER
34012 --Business Flow Purchase Order Distribution Type
34013  , p_source_65            IN VARCHAR2
34014 --Business Flow Purchase Order Entity Code
34015  , p_source_66            IN VARCHAR2
34016 --Business Flow Purchase Order Distribution Identifier
34017  , p_source_67            IN NUMBER
34018 --Business Flow Purchasing Document Identifier
34019  , p_source_68            IN NUMBER
34020 --Federal Paid Unexpended Obligation Amount
34021  , p_source_69            IN NUMBER
34022 )
34023 IS
34024 
34025 l_component_type              VARCHAR2(80);
34026 l_component_code              VARCHAR2(30);
34027 l_component_type_code         VARCHAR2(1);
34028 l_component_appl_id           INTEGER;
34029 l_amb_context_code            VARCHAR2(30);
34030 l_entity_code                 VARCHAR2(30);
34031 l_event_class_code            VARCHAR2(30);
34032 l_ae_header_id                NUMBER;
34033 l_event_type_code             VARCHAR2(30);
34034 l_line_definition_code        VARCHAR2(30);
34035 l_line_definition_owner_code  VARCHAR2(1);
34036 --
34037 -- adr variables
34038 l_segment                     VARCHAR2(30);
34039 l_ccid                        NUMBER;
34040 l_adr_transaction_coa_id      NUMBER;
34044 l_adr_value_type_code         VARCHAR2(30);
34041 l_adr_accounting_coa_id       NUMBER;
34042 l_adr_flexfield_segment_code  VARCHAR2(30);
34043 l_adr_flex_value_set_id       NUMBER;
34045 l_adr_value_combination_id    NUMBER;
34046 l_adr_value_segment_code      VARCHAR2(30);
34047 
34048 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34049 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34050 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34051 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34052 
34053 -- 4262811 Variables ------------------------------------------------------------------------------------------
34054 l_entered_amt_idx             NUMBER;
34055 l_accted_amt_idx              NUMBER;
34056 l_acc_rev_flag                VARCHAR2(1);
34057 l_accrual_line_num            NUMBER;
34058 l_tmp_amt                     NUMBER;
34059 l_acc_rev_natural_side_code   VARCHAR2(1);
34060 
34061 l_num_entries                 NUMBER;
34062 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34063 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34064 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34065 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34066 l_recog_line_1                NUMBER;
34067 l_recog_line_2                NUMBER;
34068 
34069 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34070 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34071 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34072 
34073 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34074 
34075 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34076 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34077 
34078 ---------------------------------------------------------------------------------------------------------------
34079 
34080 
34081 --
34082 -- bulk performance
34083 --
34084 l_balance_type_code           VARCHAR2(1);
34085 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34086 l_log_module                  VARCHAR2(240);
34087 
34088 --
34089 -- Upgrade strategy
34090 --
34091 l_actual_upg_option           VARCHAR2(1);
34092 l_enc_upg_option           VARCHAR2(1);
34093 
34094 --
34095 BEGIN
34096 --
34097 IF g_log_enabled THEN
34098       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
34099 END IF;
34100 --
34101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34102 
34103       trace
34104          (p_msg      => 'BEGIN of AcctLineType_57'
34105          ,p_level    => C_LEVEL_PROCEDURE
34106          ,p_module   => l_log_module);
34107 
34108 END IF;
34109 --
34110 l_component_type             := 'AMB_JLT';
34111 l_component_code             := 'FV_AP_PAID_PYA_REV_DR';
34112 l_component_type_code        := 'S';
34113 l_component_appl_id          :=  200;
34114 l_amb_context_code           := 'DEFAULT';
34115 l_entity_code                := 'AP_INVOICES';
34116 l_event_class_code           := 'INVOICES';
34117 l_event_type_code            := 'INVOICES_ALL';
34118 l_line_definition_owner_code := 'S';
34119 l_line_definition_code       := 'FV_AP_ACCRUAL_INVOICES_ALL';
34120 --
34121 l_balance_type_code          := 'A';
34122 l_segment                     := NULL;
34123 l_ccid                        := NULL;
34124 l_adr_transaction_coa_id      := NULL;
34125 l_adr_accounting_coa_id       := NULL;
34126 l_adr_flexfield_segment_code  := NULL;
34127 l_adr_flex_value_set_id       := NULL;
34128 l_adr_value_type_code         := NULL;
34129 l_adr_value_combination_id    := NULL;
34130 l_adr_value_segment_code      := NULL;
34131 
34132 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34133 l_bflow_class_code           := '';    -- 4219869 Business Flow
34134 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34135 l_budgetary_control_flag     := 'Y';
34136 
34137 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34138 l_bflow_applied_to_amt       := NULL; -- 5132302
34139 l_entered_amt_idx            := NULL;          -- 4262811
34140 l_accted_amt_idx             := NULL;          -- 4262811
34141 l_acc_rev_flag               := NULL;          -- 4262811
34142 l_accrual_line_num           := NULL;          -- 4262811
34143 l_tmp_amt                    := NULL;          -- 4262811
34144 --
34145  
34146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34147     l_balance_type_code <> 'B' THEN
34148 IF p_source_12 IS NOT NULL AND 
34149 (NVL(p_source_8,'
34150 ') =  'ITEM' OR 
34151 (NVL(p_source_8,'
34152 ') =  'IPV' AND 
34153 p_source_10 <  0) OR 
34154 NVL(p_source_8,'
34155 ') =  'ACCRUAL') AND 
34156 NVL(p_source_11,'
34157 ') <>  'Y' AND 
34158 NVL(p_source_9,'
34159 ') =  'Y' AND 
34160 NVL(p_source_5,'
34161 ') =  'Expired'
34162  THEN 
34163 
34164    --
34165    XLA_AE_LINES_PKG.SetNewLine;
34166 
34167    p_balance_type_code          := l_balance_type_code;
34168    -- set the flag so later we will know whether the gain loss line needs to be created
34169    
34170    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34171      p_actual_flag :='A';
34172    END IF;
34173 
34174    --
34175    -- bulk performance
34176    --
34180    -- set accounting line options
34177    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34178                                       p_header_num   => 0); -- 4262811
34179    --
34181    --
34182    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34183            p_natural_side_code          => 'D'
34184          , p_gain_or_loss_flag          => 'N'
34185          , p_gl_transfer_mode_code      => 'S'
34186          , p_acct_entry_type_code       => 'A'
34187          , p_switch_side_flag           => 'N'
34188          , p_merge_duplicate_code       => 'N'
34189          );
34190    --
34191    l_acc_rev_natural_side_code := 'C';  -- 4262811
34192    -- 
34193    --
34194    -- set accounting line type info
34195    --
34196    xla_ae_lines_pkg.SetAcctLineType
34197       (p_component_type             => l_component_type
34198       ,p_event_type_code            => l_event_type_code
34199       ,p_line_definition_owner_code => l_line_definition_owner_code
34200       ,p_line_definition_code       => l_line_definition_code
34201       ,p_accounting_line_code       => l_component_code
34202       ,p_accounting_line_type_code  => l_component_type_code
34203       ,p_accounting_line_appl_id    => l_component_appl_id
34204       ,p_amb_context_code           => l_amb_context_code
34205       ,p_entity_code                => l_entity_code
34206       ,p_event_class_code           => l_event_class_code);
34207    --
34208    -- set accounting class
34209    --
34210    xla_ae_lines_pkg.SetAcctClass(
34211            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
34212          , p_ae_header_id           => l_ae_header_id
34213          );
34214 
34215    --
34216    -- set rounding class
34217    --
34218    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34219                       'ACCOUNTSPAYABLE';
34220 
34221    --
34222    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34223    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34224    --
34225    -- bulk performance
34226    --
34227    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34228 
34229    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34230       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34231 
34232    -- 4955764
34233    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34235 
34236    -- 4458381 Public Sector Enh
34237    
34238    --
34239    -- set accounting attributes for the line type
34240    --
34241    l_entered_amt_idx := 24;
34242    l_accted_amt_idx  := 29;
34243    l_bflow_applied_to_amt_idx  := 7;  -- 5132302
34244    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34245    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
34246    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
34247    l_rec_acct_attrs.array_num_value(2)  := 
34248 xla_ae_sources_pkg.GetSystemSourceNum(
34249    p_source_code           => 'XLA_EVENT_APPL_ID'
34250  , p_source_type_code      => 'Y'
34251  , p_source_application_id =>  602
34252 );
34253    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
34254    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
34255    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
34256    l_rec_acct_attrs.array_char_value(4)  := 
34257 xla_ae_sources_pkg.GetSystemSourceChar(
34258    p_source_code           => 'XLA_ENTITY_CODE'
34259  , p_source_type_code      => 'Y'
34260  , p_source_application_id =>  602
34261 );
34262    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
34263    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
34264    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
34265    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
34266    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_AMOUNT';
34267    l_rec_acct_attrs.array_num_value(7)  := p_source_55;
34268    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
34269    l_rec_acct_attrs.array_num_value(8)  := p_source_64;
34270    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34271    l_rec_acct_attrs.array_char_value(9)  := p_source_65;
34272    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
34273    l_rec_acct_attrs.array_char_value(10)  := p_source_66;
34274    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
34275    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_67);
34276    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34277    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_68);
34278    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
34279    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_26);
34280    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_TYPE';
34281    l_rec_acct_attrs.array_char_value(14)  := p_source_17;
34282    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_CCID';
34283    l_rec_acct_attrs.array_num_value(15)  := p_source_27;
34284    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_AMT';
34288    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_LEDGER_AMT';
34285    l_rec_acct_attrs.array_num_value(16)  := p_source_28;
34286    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ENTERED_CURR';
34287    l_rec_acct_attrs.array_char_value(17)  := p_source_29;
34289    l_rec_acct_attrs.array_num_value(18)  := p_source_30;
34290    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_CCID';
34291    l_rec_acct_attrs.array_num_value(19)  := p_source_31;
34292    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_AMT';
34293    l_rec_acct_attrs.array_num_value(20)  := p_source_32;
34294    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ENTERED_CURR';
34295    l_rec_acct_attrs.array_char_value(21)  := p_source_29;
34296    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_LEDGER_AMT';
34297    l_rec_acct_attrs.array_num_value(22)  := p_source_33;
34298    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_OPTION';
34299    l_rec_acct_attrs.array_char_value(23)  := p_source_34;
34300    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_AMOUNT';
34301    l_rec_acct_attrs.array_num_value(24)  := p_source_69;
34302    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENTERED_CURRENCY_CODE';
34303    l_rec_acct_attrs.array_char_value(25)  := p_source_29;
34304    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_DATE';
34305    l_rec_acct_attrs.array_date_value(26)  := p_source_36;
34306    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE';
34307    l_rec_acct_attrs.array_num_value(27)  := p_source_37;
34308    l_rec_acct_attrs.array_acct_attr_code(28) := 'EXCHANGE_RATE_TYPE';
34309    l_rec_acct_attrs.array_char_value(28)  := p_source_38;
34310    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
34311    l_rec_acct_attrs.array_num_value(29)  := p_source_69;
34312    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_END_DATE';
34313    l_rec_acct_attrs.array_date_value(30)  := p_source_39;
34314    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_OPTION';
34315    l_rec_acct_attrs.array_char_value(31)  := p_source_40;
34316    l_rec_acct_attrs.array_acct_attr_code(32) := 'MULTIPERIOD_START_DATE';
34317    l_rec_acct_attrs.array_date_value(32)  := p_source_41;
34318    l_rec_acct_attrs.array_acct_attr_code(33) := 'OVERRIDE_ACCTD_AMT_FLAG';
34319    l_rec_acct_attrs.array_char_value(33)  := p_source_42;
34320    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_ID';
34321    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
34322    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_SITE_ID';
34323    l_rec_acct_attrs.array_num_value(35)  := p_source_44;
34324    l_rec_acct_attrs.array_acct_attr_code(36) := 'PARTY_TYPE';
34325    l_rec_acct_attrs.array_char_value(36)  := p_source_45;
34326    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_ID1';
34327    l_rec_acct_attrs.array_num_value(37)  :=  to_char(p_source_46);
34328    l_rec_acct_attrs.array_acct_attr_code(38) := 'REVERSED_DISTRIBUTION_TYPE';
34329    l_rec_acct_attrs.array_char_value(38)  := p_source_17;
34330    l_rec_acct_attrs.array_acct_attr_code(39) := 'STATISTICAL_AMOUNT';
34331    l_rec_acct_attrs.array_num_value(39)  := p_source_47;
34332    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_LINE_REF_ID';
34333    l_rec_acct_attrs.array_num_value(40)  := p_source_48;
34334    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_REC_NREC_DIST_REF_ID';
34335    l_rec_acct_attrs.array_num_value(41)  := p_source_49;
34336    l_rec_acct_attrs.array_acct_attr_code(42) := 'TAX_SUMMARY_LINE_REF_ID';
34337    l_rec_acct_attrs.array_num_value(42)  := p_source_50;
34338    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
34339    l_rec_acct_attrs.array_num_value(43)  := p_source_51;
34340    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
34341    l_rec_acct_attrs.array_num_value(44)  := p_source_52;
34342 
34343    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34344    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34345 
34346    ---------------------------------------------------------------------------------------------------------------
34347    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34348    ---------------------------------------------------------------------------------------------------------------
34349    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34350 
34351    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34352    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34353 
34354    IF xla_accounting_cache_pkg.GetValueChar
34355          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34356          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34357    AND l_bflow_method_code = 'PRIOR_ENTRY'
34358 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34359    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34360          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34361        )
34362    THEN
34363          xla_ae_lines_pkg.BflowUpgEntry
34364            (p_business_method_code    => l_bflow_method_code
34365            ,p_business_class_code     => l_bflow_class_code
34366            ,p_balance_type            => l_balance_type_code);
34367    ELSE
34368       NULL;
34369 -- No business flow processing for business flow method of NONE.
34370    END IF;
34371 
34375    
34372    --
34373    -- call analytical criteria
34374    --
34376    --
34377    -- call description
34378    --
34379    
34380 xla_ae_lines_pkg.SetLineDescription(
34381    p_ae_header_id => l_ae_header_id
34382   ,p_description  => Description_2 (
34383      p_application_id         => p_application_id
34384    , p_ae_header_id           => l_ae_header_id 
34385 , p_source_1 => p_source_1
34386    )
34387 );
34388 
34389 
34390    --
34391    -- call ADRs
34392    -- Bug 4922099
34393    --
34394    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34395         (NVL(l_actual_upg_option, 'N') = 'O') OR
34396         (NVL(l_enc_upg_option, 'N') = 'O')
34397       )
34398    THEN
34399    NULL;
34400    --
34401    --
34402    
34403   l_ccid := AcctDerRule_3(
34404            p_application_id           => p_application_id
34405          , p_ae_header_id             => l_ae_header_id 
34406 , p_source_2 => p_source_2
34407          , x_transaction_coa_id       => l_adr_transaction_coa_id
34408          , x_accounting_coa_id        => l_adr_accounting_coa_id
34409          , x_value_type_code          => l_adr_value_type_code
34410          , p_side                     => 'NA'
34411    );
34412 
34413    xla_ae_lines_pkg.set_ccid(
34414     p_code_combination_id          => l_ccid
34415   , p_value_type_code              => l_adr_value_type_code
34416   , p_transaction_coa_id           => l_adr_transaction_coa_id
34417   , p_accounting_coa_id            => l_adr_accounting_coa_id
34418   , p_adr_code                     => 'AP_INVOICE_DIST'
34419   , p_adr_type_code                => 'S'
34420   , p_component_type               => l_component_type
34421   , p_component_code               => l_component_code
34422   , p_component_type_code          => l_component_type_code
34423   , p_component_appl_id            => l_component_appl_id
34424   , p_amb_context_code             => l_amb_context_code
34425   , p_side                         => 'NA'
34426   );
34427 
34428 
34429    l_segment := AcctDerRule_9(
34430            p_application_id           => p_application_id
34431          , p_ae_header_id             => l_ae_header_id 
34432          , x_transaction_coa_id       => l_adr_transaction_coa_id
34433          , x_accounting_coa_id        => l_adr_accounting_coa_id
34434          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
34435          , x_flex_value_set_id        => l_adr_flex_value_set_id
34436          , x_value_type_code          => l_adr_value_type_code
34437          , x_value_combination_id     => l_adr_value_combination_id
34438          , x_value_segment_code       => l_adr_value_segment_code
34439          , p_side                     => 'NA'
34440          , p_override_seg_flag        => 'Y'
34441    );
34442 
34443    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
34444 
34445       xla_ae_lines_pkg.set_segment(
34446           p_to_segment_code         => 'GL_ACCOUNT'
34447         , p_segment_value           => l_segment
34448         , p_from_segment_code       => l_adr_value_segment_code
34449         , p_from_combination_id     => l_adr_value_combination_id
34450         , p_value_type_code         => l_adr_value_type_code
34451         , p_transaction_coa_id      => l_adr_transaction_coa_id
34452         , p_accounting_coa_id       => l_adr_accounting_coa_id
34453         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
34454         , p_flex_value_set_id       => l_adr_flex_value_set_id
34455         , p_adr_code                => 'FV_480101_PAYABLES'
34456         , p_adr_type_code           => 'S'
34457         , p_component_type          => l_component_type
34458         , p_component_code          => l_component_code
34459         , p_component_type_code     => l_component_type_code
34460         , p_component_appl_id       => l_component_appl_id
34461         , p_amb_context_code        => l_amb_context_code
34462         , p_entity_code             => 'AP_INVOICES'
34463         , p_event_class_code        => 'INVOICES'
34464         , p_side                    => 'NA'
34465         );
34466 
34467   END IF;
34468 
34469    --
34470    --
34471    END IF;
34472    --
34473    -- Bug 4922099
34474    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34475           (NVL(l_enc_upg_option, 'N') = 'O')
34476         ) AND
34477         (l_bflow_method_code = 'PRIOR_ENTRY')
34478       )
34479    THEN
34480       IF
34481       --
34482       1 = 2
34483       --
34484       THEN
34485       xla_accounting_err_pkg.build_message
34486                                     (p_appli_s_name            => 'XLA'
34487                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34488                                     ,p_token_1                 => 'LINE_NUMBER'
34489                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34490                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34491                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34492                                                                              l_component_type
34493                                                                             ,l_component_code
34494                                                                             ,l_component_type_code
34498                                                                             ,l_event_class_code
34495                                                                             ,l_component_appl_id
34496                                                                             ,l_amb_context_code
34497                                                                             ,l_entity_code
34499                                                                            )
34500                                     ,p_token_3                 => 'OWNER'
34501                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34502                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34503                                                                           ,p_lookup_code    => l_component_type_code
34504                                                                          )
34505                                     ,p_token_4                 => 'PRODUCT_NAME'
34506                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34507                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34508                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34509                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34510                                     ,p_ae_header_id            =>  NULL
34511                                        );
34512 
34513         IF (C_LEVEL_ERROR>= g_log_level) THEN
34514                  trace
34515                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34516                       ,p_level    => C_LEVEL_ERROR
34517                       ,p_module   => l_log_module);
34518         END IF;
34519       END IF;
34520    END IF;
34521    --
34522    --
34523    ------------------------------------------------------------------------------------------------
34524    -- 4219869 Business Flow
34525    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34526    -- Prior Entry.  Currently, the following code is always generated.
34527    ------------------------------------------------------------------------------------------------
34528    XLA_AE_LINES_PKG.ValidateCurrentLine;
34529 
34530    ------------------------------------------------------------------------------------
34531    -- 4219869 Business Flow
34532    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34533    ------------------------------------------------------------------------------------
34534    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34535 
34536    ----------------------------------------------------------------------------------
34537    -- 4219869 Business Flow
34538    -- Update journal entry status -- Need to generate this within IF <condition>
34539    ----------------------------------------------------------------------------------
34540    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34541          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34542          ,p_balance_type_code => l_balance_type_code
34543          );
34544 
34545    -------------------------------------------------------------------------------------------
34546    -- 4262811 - Generate the Accrual Reversal lines
34547    -------------------------------------------------------------------------------------------
34548    BEGIN
34549       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34550                               (g_array_event(p_event_id).array_value_num('header_index'));
34551       IF l_acc_rev_flag IS NULL THEN
34552          l_acc_rev_flag := 'N';
34553       END IF;
34554    EXCEPTION
34555       WHEN OTHERS THEN
34556          l_acc_rev_flag := 'N';
34557    END;
34558    --
34559    IF (l_acc_rev_flag = 'Y') THEN
34560 
34561        -- 4645092  ------------------------------------------------------------------------------
34562        -- To allow MPA report to determine if it should generate report process
34563        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34564        ------------------------------------------------------------------------------------------
34565 
34566        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34567        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34568    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34569    -- call ADRs
34570    -- Bug 4922099
34571    --
34572    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34573         (NVL(l_actual_upg_option, 'N') = 'O') OR
34574         (NVL(l_enc_upg_option, 'N') = 'O')
34575       )
34576    THEN
34577    NULL;
34578    --
34579    --
34580    
34581   l_ccid := AcctDerRule_3(
34582            p_application_id           => p_application_id
34583          , p_ae_header_id             => l_ae_header_id 
34584 , p_source_2 => p_source_2
34585          , x_transaction_coa_id       => l_adr_transaction_coa_id
34586          , x_accounting_coa_id        => l_adr_accounting_coa_id
34587          , x_value_type_code          => l_adr_value_type_code
34588          , p_side                     => 'NA'
34589    );
34590 
34591    xla_ae_lines_pkg.set_ccid(
34592     p_code_combination_id          => l_ccid
34593   , p_value_type_code              => l_adr_value_type_code
34594   , p_transaction_coa_id           => l_adr_transaction_coa_id
34598   , p_component_type               => l_component_type
34595   , p_accounting_coa_id            => l_adr_accounting_coa_id
34596   , p_adr_code                     => 'AP_INVOICE_DIST'
34597   , p_adr_type_code                => 'S'
34599   , p_component_code               => l_component_code
34600   , p_component_type_code          => l_component_type_code
34601   , p_component_appl_id            => l_component_appl_id
34602   , p_amb_context_code             => l_amb_context_code
34603   , p_side                         => 'NA'
34604   );
34605 
34606 
34607    l_segment := AcctDerRule_9(
34608            p_application_id           => p_application_id
34609          , p_ae_header_id             => l_ae_header_id 
34610          , x_transaction_coa_id       => l_adr_transaction_coa_id
34611          , x_accounting_coa_id        => l_adr_accounting_coa_id
34612          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
34613          , x_flex_value_set_id        => l_adr_flex_value_set_id
34614          , x_value_type_code          => l_adr_value_type_code
34615          , x_value_combination_id     => l_adr_value_combination_id
34616          , x_value_segment_code       => l_adr_value_segment_code
34617          , p_side                     => 'NA'
34618          , p_override_seg_flag        => 'Y'
34619    );
34620 
34621    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
34622 
34623       xla_ae_lines_pkg.set_segment(
34624           p_to_segment_code         => 'GL_ACCOUNT'
34625         , p_segment_value           => l_segment
34626         , p_from_segment_code       => l_adr_value_segment_code
34627         , p_from_combination_id     => l_adr_value_combination_id
34628         , p_value_type_code         => l_adr_value_type_code
34629         , p_transaction_coa_id      => l_adr_transaction_coa_id
34630         , p_accounting_coa_id       => l_adr_accounting_coa_id
34631         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
34632         , p_flex_value_set_id       => l_adr_flex_value_set_id
34633         , p_adr_code                => 'FV_480101_PAYABLES'
34634         , p_adr_type_code           => 'S'
34635         , p_component_type          => l_component_type
34636         , p_component_code          => l_component_code
34637         , p_component_type_code     => l_component_type_code
34638         , p_component_appl_id       => l_component_appl_id
34639         , p_amb_context_code        => l_amb_context_code
34640         , p_entity_code             => 'AP_INVOICES'
34641         , p_event_class_code        => 'INVOICES'
34642         , p_side                    => 'NA'
34643         );
34644 
34645   END IF;
34646 
34647    --
34648    --
34649    END IF;
34650 
34651        --
34652        -- Update the line information that should be overwritten
34653        --
34654        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34655                                          p_header_num   => 1);
34656        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34657 
34658        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34659 
34660        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34661           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34662        END IF;
34663 
34664       --
34665       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34666       --
34667       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34668           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34669       ELSE
34670           ---------------------------------------------------------------------------------------------------
34671           -- 4262811a Switch Sign
34672           ---------------------------------------------------------------------------------------------------
34673           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34674           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34675                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34676           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34677                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34678           -- 5132302
34679           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34680                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34681 
34682       END IF;
34683 
34684       -- 4955764
34685       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34687 
34688 
34689       XLA_AE_LINES_PKG.ValidateCurrentLine;
34690       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34691 
34692       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34693                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34694                ,p_balance_type_code => l_balance_type_code);
34695 
34696    END IF;
34697 
34698    -----------------------------------------------------------------------------------------
34699    -- 4262811 Multiperiod Accounting
34703 
34700    -----------------------------------------------------------------------------------------
34701      -- No MPA option is assigned.
34702 
34704 END IF;
34705 END IF;
34706 --
34707 
34708 --
34709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34710    trace
34711       (p_msg      => 'END of AcctLineType_57'
34712       ,p_level    => C_LEVEL_PROCEDURE
34713       ,p_module   => l_log_module);
34714 END IF;
34715 --
34716 EXCEPTION
34717   WHEN xla_exceptions_pkg.application_exception THEN
34718       RAISE;
34719   WHEN OTHERS THEN
34720        xla_exceptions_pkg.raise_message
34721            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_57');
34722 END AcctLineType_57;
34723 --
34724 
34725 ---------------------------------------
34726 --
34727 -- PRIVATE FUNCTION
34728 --         AcctLineType_58
34729 --
34730 ---------------------------------------
34731 PROCEDURE AcctLineType_58 (
34732   p_application_id        IN NUMBER
34733  ,p_event_id              IN NUMBER
34734  ,p_calculate_acctd_flag  IN VARCHAR2
34735  ,p_calculate_g_l_flag    IN VARCHAR2
34736  ,p_actual_flag           IN OUT VARCHAR2
34737  ,p_balance_type_code     OUT VARCHAR2
34738  ,p_gain_or_loss_ref      OUT VARCHAR2
34739  
34740 --Invoice Distribution Description
34741  , p_source_1            IN VARCHAR2
34742 --Invoice Distribution Account
34743  , p_source_2            IN NUMBER
34744 --Invoice Type
34745  , p_source_13            IN VARCHAR2
34746  , p_source_13_meaning    IN VARCHAR2
34747 --Accounting Reversal Indicator
34748  , p_source_15            IN VARCHAR2
34749 --Distribution Link Type
34750  , p_source_17            IN VARCHAR2
34751 --Allocation to Main Distribution Identifier
34752  , p_source_19            IN NUMBER
34753 --Invoice Identifier
34754  , p_source_20            IN NUMBER
34755 --Business Flow Accounts Payable Application Identifier
34756  , p_source_21            IN NUMBER
34757 --Business Flow Invoice Distribution Type
34758  , p_source_22            IN VARCHAR2
34759 --Business Flow Invoice Entity Code
34760  , p_source_23            IN VARCHAR2
34761 --Business Flow Invoice Distribution Identifier
34762  , p_source_24            IN NUMBER
34763 --Business Flow Invoice Identifier
34764  , p_source_25            IN NUMBER
34765 --Invoice Distribution Identifier
34766  , p_source_26            IN NUMBER
34767 --Payables Encumbrance Upgrade Credit Account
34768  , p_source_27            IN NUMBER
34769 --Payables Encumbrance Upgrade Credit Amount
34770  , p_source_28            IN NUMBER
34771 --Invoice Currency Code
34772  , p_source_29            IN VARCHAR2
34773 --Payables Encumbrance Upgrade Credit Base Amount
34774  , p_source_30            IN NUMBER
34775 --Payables Encumbrance Upgrade Debit Account
34776  , p_source_31            IN NUMBER
34777 --Payables Encumbrance Upgrade Debit Amount
34778  , p_source_32            IN NUMBER
34779 --Payables Encumbrance Upgrade Debit Base Amount
34780  , p_source_33            IN NUMBER
34781 --Payables Encumbrance Upgrade Option
34782  , p_source_34            IN VARCHAR2
34783 --Invoice Exchange Date
34784  , p_source_36            IN DATE
34785 --Invoice Exchange Rate
34786  , p_source_37            IN NUMBER
34787 --Invoice Exchange Rate Type
34788  , p_source_38            IN VARCHAR2
34789 --Deferred Accounting End Date
34790  , p_source_39            IN DATE
34791 --Deferred Accounting Option
34792  , p_source_40            IN VARCHAR2
34793 --Deferred Accounting Start Date
34794  , p_source_41            IN DATE
34795 --Override Accounted Amount Indicator
34796  , p_source_42            IN VARCHAR2
34797  , p_source_42_meaning    IN VARCHAR2
34798 --Invoice Supplier Identifier
34799  , p_source_43            IN NUMBER
34800 --Invoice Supplier Site Identifier
34801  , p_source_44            IN NUMBER
34802 --Third Party Type
34803  , p_source_45            IN VARCHAR2
34804 --Parent Reversal Identifier
34805  , p_source_46            IN NUMBER
34806 --Invoice Distribution Statistical Amount
34807  , p_source_47            IN NUMBER
34808 --Invoice Distribution Tax Line Identifier
34809  , p_source_48            IN NUMBER
34810 --Invoice Distribution Tax Distribution Identifier from Tax
34811  , p_source_49            IN NUMBER
34812 --Invoice Distribution Summary Tax Line Identifier
34813  , p_source_50            IN NUMBER
34814 --Payables Upgrade Credit Encumbrance Type Identifier
34815  , p_source_51            IN NUMBER
34816 --Payables Upgrade Debit Encumbrance Type Identifier
34817  , p_source_52            IN NUMBER
34818 --Invoice Distribution Amount
34819  , p_source_55            IN NUMBER
34820 --Invoice Distribution Ledger Amount
34821  , p_source_56            IN NUMBER
34822 --POD_PO_DISTRIBUTION_ID
34823  , p_source_70            IN NUMBER
34824 )
34825 IS
34826 
34827 l_component_type              VARCHAR2(80);
34828 l_component_code              VARCHAR2(30);
34829 l_component_type_code         VARCHAR2(1);
34830 l_component_appl_id           INTEGER;
34831 l_amb_context_code            VARCHAR2(30);
34832 l_entity_code                 VARCHAR2(30);
34833 l_event_class_code            VARCHAR2(30);
34834 l_ae_header_id                NUMBER;
34835 l_event_type_code             VARCHAR2(30);
34836 l_line_definition_code        VARCHAR2(30);
34837 l_line_definition_owner_code  VARCHAR2(1);
34838 --
34839 -- adr variables
34843 l_adr_accounting_coa_id       NUMBER;
34840 l_segment                     VARCHAR2(30);
34841 l_ccid                        NUMBER;
34842 l_adr_transaction_coa_id      NUMBER;
34844 l_adr_flexfield_segment_code  VARCHAR2(30);
34845 l_adr_flex_value_set_id       NUMBER;
34846 l_adr_value_type_code         VARCHAR2(30);
34847 l_adr_value_combination_id    NUMBER;
34848 l_adr_value_segment_code      VARCHAR2(30);
34849 
34850 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34851 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34852 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34853 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34854 
34855 -- 4262811 Variables ------------------------------------------------------------------------------------------
34856 l_entered_amt_idx             NUMBER;
34857 l_accted_amt_idx              NUMBER;
34858 l_acc_rev_flag                VARCHAR2(1);
34859 l_accrual_line_num            NUMBER;
34860 l_tmp_amt                     NUMBER;
34861 l_acc_rev_natural_side_code   VARCHAR2(1);
34862 
34863 l_num_entries                 NUMBER;
34864 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34865 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34866 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34867 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34868 l_recog_line_1                NUMBER;
34869 l_recog_line_2                NUMBER;
34870 
34871 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34872 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34873 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34874 
34875 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34876 
34877 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34878 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34879 
34880 ---------------------------------------------------------------------------------------------------------------
34881 
34882 
34883 --
34884 -- bulk performance
34885 --
34886 l_balance_type_code           VARCHAR2(1);
34887 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34888 l_log_module                  VARCHAR2(240);
34889 
34890 --
34891 -- Upgrade strategy
34892 --
34893 l_actual_upg_option           VARCHAR2(1);
34894 l_enc_upg_option           VARCHAR2(1);
34895 
34896 --
34897 BEGIN
34898 --
34899 IF g_log_enabled THEN
34900       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
34901 END IF;
34902 --
34903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34904 
34905       trace
34906          (p_msg      => 'BEGIN of AcctLineType_58'
34907          ,p_level    => C_LEVEL_PROCEDURE
34908          ,p_module   => l_log_module);
34909 
34910 END IF;
34911 --
34912 l_component_type             := 'AMB_JLT';
34913 l_component_code             := 'FV_PREPAYMENT_INV_CR';
34914 l_component_type_code        := 'S';
34915 l_component_appl_id          :=  200;
34916 l_amb_context_code           := 'DEFAULT';
34917 l_entity_code                := 'AP_INVOICES';
34918 l_event_class_code           := 'PREPAYMENTS';
34919 l_event_type_code            := 'PREPAYMENTS_ALL';
34920 l_line_definition_owner_code := 'S';
34921 l_line_definition_code       := 'FV_AP_PREPAYMENTS_ALL';
34922 --
34923 l_balance_type_code          := 'A';
34924 l_segment                     := NULL;
34925 l_ccid                        := NULL;
34926 l_adr_transaction_coa_id      := NULL;
34927 l_adr_accounting_coa_id       := NULL;
34928 l_adr_flexfield_segment_code  := NULL;
34929 l_adr_flex_value_set_id       := NULL;
34930 l_adr_value_type_code         := NULL;
34931 l_adr_value_combination_id    := NULL;
34932 l_adr_value_segment_code      := NULL;
34933 
34934 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34935 l_bflow_class_code           := '';    -- 4219869 Business Flow
34936 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34937 l_budgetary_control_flag     := 'Y';
34938 
34939 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34940 l_bflow_applied_to_amt       := NULL; -- 5132302
34941 l_entered_amt_idx            := NULL;          -- 4262811
34942 l_accted_amt_idx             := NULL;          -- 4262811
34943 l_acc_rev_flag               := NULL;          -- 4262811
34944 l_accrual_line_num           := NULL;          -- 4262811
34945 l_tmp_amt                    := NULL;          -- 4262811
34946 --
34947  
34948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34949     l_balance_type_code <> 'B' THEN
34950 IF p_source_70 IS NULL AND 
34951 NVL(p_source_13,'
34952 ') =  'PREPAYMENT'
34953  THEN 
34954 
34955    --
34956    XLA_AE_LINES_PKG.SetNewLine;
34957 
34958    p_balance_type_code          := l_balance_type_code;
34959    -- set the flag so later we will know whether the gain loss line needs to be created
34960    
34961    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34962      p_actual_flag :='A';
34963    END IF;
34964 
34965    --
34966    -- bulk performance
34967    --
34968    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34969                                       p_header_num   => 0); -- 4262811
34973    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34970    --
34971    -- set accounting line options
34972    --
34974            p_natural_side_code          => 'C'
34975          , p_gain_or_loss_flag          => 'N'
34976          , p_gl_transfer_mode_code      => 'S'
34977          , p_acct_entry_type_code       => 'A'
34978          , p_switch_side_flag           => 'N'
34979          , p_merge_duplicate_code       => 'N'
34980          );
34981    --
34982    l_acc_rev_natural_side_code := 'D';  -- 4262811
34983    -- 
34984    --
34985    -- set accounting line type info
34986    --
34987    xla_ae_lines_pkg.SetAcctLineType
34988       (p_component_type             => l_component_type
34989       ,p_event_type_code            => l_event_type_code
34990       ,p_line_definition_owner_code => l_line_definition_owner_code
34991       ,p_line_definition_code       => l_line_definition_code
34992       ,p_accounting_line_code       => l_component_code
34993       ,p_accounting_line_type_code  => l_component_type_code
34994       ,p_accounting_line_appl_id    => l_component_appl_id
34995       ,p_amb_context_code           => l_amb_context_code
34996       ,p_entity_code                => l_entity_code
34997       ,p_event_class_code           => l_event_class_code);
34998    --
34999    -- set accounting class
35000    --
35001    xla_ae_lines_pkg.SetAcctClass(
35002            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
35003          , p_ae_header_id           => l_ae_header_id
35004          );
35005 
35006    --
35007    -- set rounding class
35008    --
35009    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35010                       'ACCOUNTSPAYABLE';
35011 
35012    --
35013    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35014    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35015    --
35016    -- bulk performance
35017    --
35018    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35019 
35020    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35021       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35022 
35023    -- 4955764
35024    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35025       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35026 
35027    -- 4458381 Public Sector Enh
35028    
35029    --
35030    -- set accounting attributes for the line type
35031    --
35032    l_entered_amt_idx := 23;
35033    l_accted_amt_idx  := 28;
35034    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35035    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35036    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
35037    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35038    l_rec_acct_attrs.array_num_value(2)  := 
35039 xla_ae_sources_pkg.GetSystemSourceNum(
35040    p_source_code           => 'XLA_EVENT_APPL_ID'
35041  , p_source_type_code      => 'Y'
35042  , p_source_application_id =>  602
35043 );
35044    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35045    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
35046    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35047    l_rec_acct_attrs.array_char_value(4)  := 
35048 xla_ae_sources_pkg.GetSystemSourceChar(
35049    p_source_code           => 'XLA_ENTITY_CODE'
35050  , p_source_type_code      => 'Y'
35051  , p_source_application_id =>  602
35052 );
35053    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35054    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
35055    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35056    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
35057    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
35058    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
35059    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35060    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
35061    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
35062    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
35063    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
35064    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
35065    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35066    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
35067    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
35068    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
35069    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
35070    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
35071    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
35072    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
35073    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
35074    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
35075    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
35076    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
35077    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
35081    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
35078    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
35079    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
35080    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
35082    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
35083    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
35084    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
35085    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
35086    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
35087    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
35088    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
35089    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
35090    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
35091    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
35092    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
35093    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
35094    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
35095    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
35096    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
35097    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
35098    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
35099    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
35100    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
35101    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
35102    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
35103    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
35104    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
35105    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
35106    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
35107    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
35108    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
35109    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
35110    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
35111    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
35112    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
35113    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
35114    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
35115    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
35116    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
35117    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
35118    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
35119    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
35120    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
35121    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
35122    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
35123    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
35124    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
35125    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
35126    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
35127    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
35128    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
35129    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
35130    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
35131 
35132    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35133    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35134 
35135    ---------------------------------------------------------------------------------------------------------------
35136    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35137    ---------------------------------------------------------------------------------------------------------------
35138    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35139 
35140    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35141    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35142 
35143    IF xla_accounting_cache_pkg.GetValueChar
35144          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35145          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35146    AND l_bflow_method_code = 'PRIOR_ENTRY'
35147 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35148    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35149          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35150        )
35151    THEN
35152          xla_ae_lines_pkg.BflowUpgEntry
35153            (p_business_method_code    => l_bflow_method_code
35154            ,p_business_class_code     => l_bflow_class_code
35155            ,p_balance_type            => l_balance_type_code);
35156    ELSE
35157       NULL;
35158 -- No business flow processing for business flow method of NONE.
35159    END IF;
35160 
35161    --
35162    -- call analytical criteria
35163    --
35164    
35165    --
35166    -- call description
35167    --
35168    
35169 xla_ae_lines_pkg.SetLineDescription(
35170    p_ae_header_id => l_ae_header_id
35174 , p_source_1 => p_source_1
35171   ,p_description  => Description_2 (
35172      p_application_id         => p_application_id
35173    , p_ae_header_id           => l_ae_header_id 
35175    )
35176 );
35177 
35178 
35179    --
35180    -- call ADRs
35181    -- Bug 4922099
35182    --
35183    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35184         (NVL(l_actual_upg_option, 'N') = 'O') OR
35185         (NVL(l_enc_upg_option, 'N') = 'O')
35186       )
35187    THEN
35188    NULL;
35189    --
35190    --
35191    
35192   l_ccid := AcctDerRule_3(
35193            p_application_id           => p_application_id
35194          , p_ae_header_id             => l_ae_header_id 
35195 , p_source_2 => p_source_2
35196          , x_transaction_coa_id       => l_adr_transaction_coa_id
35197          , x_accounting_coa_id        => l_adr_accounting_coa_id
35198          , x_value_type_code          => l_adr_value_type_code
35199          , p_side                     => 'NA'
35200    );
35201 
35202    xla_ae_lines_pkg.set_ccid(
35203     p_code_combination_id          => l_ccid
35204   , p_value_type_code              => l_adr_value_type_code
35205   , p_transaction_coa_id           => l_adr_transaction_coa_id
35206   , p_accounting_coa_id            => l_adr_accounting_coa_id
35207   , p_adr_code                     => 'AP_INVOICE_DIST'
35208   , p_adr_type_code                => 'S'
35209   , p_component_type               => l_component_type
35210   , p_component_code               => l_component_code
35211   , p_component_type_code          => l_component_type_code
35212   , p_component_appl_id            => l_component_appl_id
35213   , p_amb_context_code             => l_amb_context_code
35214   , p_side                         => 'NA'
35215   );
35216 
35217 
35218    l_segment := AcctDerRule_11(
35219            p_application_id           => p_application_id
35220          , p_ae_header_id             => l_ae_header_id 
35221          , x_transaction_coa_id       => l_adr_transaction_coa_id
35222          , x_accounting_coa_id        => l_adr_accounting_coa_id
35223          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35224          , x_flex_value_set_id        => l_adr_flex_value_set_id
35225          , x_value_type_code          => l_adr_value_type_code
35226          , x_value_combination_id     => l_adr_value_combination_id
35227          , x_value_segment_code       => l_adr_value_segment_code
35228          , p_side                     => 'NA'
35229          , p_override_seg_flag        => 'Y'
35230    );
35231 
35232    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35233 
35234       xla_ae_lines_pkg.set_segment(
35235           p_to_segment_code         => 'GL_ACCOUNT'
35236         , p_segment_value           => l_segment
35237         , p_from_segment_code       => l_adr_value_segment_code
35238         , p_from_combination_id     => l_adr_value_combination_id
35239         , p_value_type_code         => l_adr_value_type_code
35240         , p_transaction_coa_id      => l_adr_transaction_coa_id
35241         , p_accounting_coa_id       => l_adr_accounting_coa_id
35242         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35243         , p_flex_value_set_id       => l_adr_flex_value_set_id
35244         , p_adr_code                => 'FV_48X101_PAYABLES'
35245         , p_adr_type_code           => 'S'
35246         , p_component_type          => l_component_type
35247         , p_component_code          => l_component_code
35248         , p_component_type_code     => l_component_type_code
35249         , p_component_appl_id       => l_component_appl_id
35250         , p_amb_context_code        => l_amb_context_code
35251         , p_entity_code             => 'AP_INVOICES'
35252         , p_event_class_code        => 'PREPAYMENTS'
35253         , p_side                    => 'NA'
35254         );
35255 
35256   END IF;
35257 
35258    --
35259    --
35260    END IF;
35261    --
35262    -- Bug 4922099
35263    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35264           (NVL(l_enc_upg_option, 'N') = 'O')
35265         ) AND
35266         (l_bflow_method_code = 'PRIOR_ENTRY')
35267       )
35268    THEN
35269       IF
35270       --
35271       1 = 2
35272       --
35273       THEN
35274       xla_accounting_err_pkg.build_message
35275                                     (p_appli_s_name            => 'XLA'
35276                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35277                                     ,p_token_1                 => 'LINE_NUMBER'
35278                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35279                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35280                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35281                                                                              l_component_type
35282                                                                             ,l_component_code
35283                                                                             ,l_component_type_code
35284                                                                             ,l_component_appl_id
35285                                                                             ,l_amb_context_code
35286                                                                             ,l_entity_code
35290                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35287                                                                             ,l_event_class_code
35288                                                                            )
35289                                     ,p_token_3                 => 'OWNER'
35291                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35292                                                                           ,p_lookup_code    => l_component_type_code
35293                                                                          )
35294                                     ,p_token_4                 => 'PRODUCT_NAME'
35295                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35296                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35297                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35298                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35299                                     ,p_ae_header_id            =>  NULL
35300                                        );
35301 
35302         IF (C_LEVEL_ERROR>= g_log_level) THEN
35303                  trace
35304                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35305                       ,p_level    => C_LEVEL_ERROR
35306                       ,p_module   => l_log_module);
35307         END IF;
35308       END IF;
35309    END IF;
35310    --
35311    --
35312    ------------------------------------------------------------------------------------------------
35313    -- 4219869 Business Flow
35314    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35315    -- Prior Entry.  Currently, the following code is always generated.
35316    ------------------------------------------------------------------------------------------------
35317    XLA_AE_LINES_PKG.ValidateCurrentLine;
35318 
35319    ------------------------------------------------------------------------------------
35320    -- 4219869 Business Flow
35321    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35322    ------------------------------------------------------------------------------------
35323    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35324 
35325    ----------------------------------------------------------------------------------
35326    -- 4219869 Business Flow
35327    -- Update journal entry status -- Need to generate this within IF <condition>
35328    ----------------------------------------------------------------------------------
35329    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35330          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35331          ,p_balance_type_code => l_balance_type_code
35332          );
35333 
35334    -------------------------------------------------------------------------------------------
35335    -- 4262811 - Generate the Accrual Reversal lines
35336    -------------------------------------------------------------------------------------------
35337    BEGIN
35338       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35339                               (g_array_event(p_event_id).array_value_num('header_index'));
35340       IF l_acc_rev_flag IS NULL THEN
35341          l_acc_rev_flag := 'N';
35342       END IF;
35343    EXCEPTION
35344       WHEN OTHERS THEN
35345          l_acc_rev_flag := 'N';
35346    END;
35347    --
35348    IF (l_acc_rev_flag = 'Y') THEN
35349 
35350        -- 4645092  ------------------------------------------------------------------------------
35351        -- To allow MPA report to determine if it should generate report process
35352        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35353        ------------------------------------------------------------------------------------------
35354 
35355        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35356        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35357    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35358    -- call ADRs
35359    -- Bug 4922099
35360    --
35361    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35362         (NVL(l_actual_upg_option, 'N') = 'O') OR
35363         (NVL(l_enc_upg_option, 'N') = 'O')
35364       )
35365    THEN
35366    NULL;
35367    --
35368    --
35369    
35370   l_ccid := AcctDerRule_3(
35371            p_application_id           => p_application_id
35372          , p_ae_header_id             => l_ae_header_id 
35373 , p_source_2 => p_source_2
35374          , x_transaction_coa_id       => l_adr_transaction_coa_id
35375          , x_accounting_coa_id        => l_adr_accounting_coa_id
35376          , x_value_type_code          => l_adr_value_type_code
35377          , p_side                     => 'NA'
35378    );
35379 
35380    xla_ae_lines_pkg.set_ccid(
35381     p_code_combination_id          => l_ccid
35382   , p_value_type_code              => l_adr_value_type_code
35383   , p_transaction_coa_id           => l_adr_transaction_coa_id
35384   , p_accounting_coa_id            => l_adr_accounting_coa_id
35385   , p_adr_code                     => 'AP_INVOICE_DIST'
35386   , p_adr_type_code                => 'S'
35387   , p_component_type               => l_component_type
35388   , p_component_code               => l_component_code
35392   , p_side                         => 'NA'
35389   , p_component_type_code          => l_component_type_code
35390   , p_component_appl_id            => l_component_appl_id
35391   , p_amb_context_code             => l_amb_context_code
35393   );
35394 
35395 
35396    l_segment := AcctDerRule_11(
35397            p_application_id           => p_application_id
35398          , p_ae_header_id             => l_ae_header_id 
35399          , x_transaction_coa_id       => l_adr_transaction_coa_id
35400          , x_accounting_coa_id        => l_adr_accounting_coa_id
35401          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35402          , x_flex_value_set_id        => l_adr_flex_value_set_id
35403          , x_value_type_code          => l_adr_value_type_code
35404          , x_value_combination_id     => l_adr_value_combination_id
35405          , x_value_segment_code       => l_adr_value_segment_code
35406          , p_side                     => 'NA'
35407          , p_override_seg_flag        => 'Y'
35408    );
35409 
35410    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35411 
35412       xla_ae_lines_pkg.set_segment(
35413           p_to_segment_code         => 'GL_ACCOUNT'
35414         , p_segment_value           => l_segment
35415         , p_from_segment_code       => l_adr_value_segment_code
35416         , p_from_combination_id     => l_adr_value_combination_id
35417         , p_value_type_code         => l_adr_value_type_code
35418         , p_transaction_coa_id      => l_adr_transaction_coa_id
35419         , p_accounting_coa_id       => l_adr_accounting_coa_id
35420         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35421         , p_flex_value_set_id       => l_adr_flex_value_set_id
35422         , p_adr_code                => 'FV_48X101_PAYABLES'
35423         , p_adr_type_code           => 'S'
35424         , p_component_type          => l_component_type
35425         , p_component_code          => l_component_code
35426         , p_component_type_code     => l_component_type_code
35427         , p_component_appl_id       => l_component_appl_id
35428         , p_amb_context_code        => l_amb_context_code
35429         , p_entity_code             => 'AP_INVOICES'
35430         , p_event_class_code        => 'PREPAYMENTS'
35431         , p_side                    => 'NA'
35432         );
35433 
35434   END IF;
35435 
35436    --
35437    --
35438    END IF;
35439 
35440        --
35441        -- Update the line information that should be overwritten
35442        --
35443        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35444                                          p_header_num   => 1);
35445        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35446 
35447        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35448 
35449        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35450           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35451        END IF;
35452 
35453       --
35454       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35455       --
35456       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35457           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35458       ELSE
35459           ---------------------------------------------------------------------------------------------------
35460           -- 4262811a Switch Sign
35461           ---------------------------------------------------------------------------------------------------
35462           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35463           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35464                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35465           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35466                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35467           -- 5132302
35468           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35469                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35470 
35471       END IF;
35472 
35473       -- 4955764
35474       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35475       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35476 
35477 
35478       XLA_AE_LINES_PKG.ValidateCurrentLine;
35479       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35480 
35481       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35482                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35483                ,p_balance_type_code => l_balance_type_code);
35484 
35485    END IF;
35486 
35487    -----------------------------------------------------------------------------------------
35488    -- 4262811 Multiperiod Accounting
35489    -----------------------------------------------------------------------------------------
35490      -- No MPA option is assigned.
35491 
35492 
35493 END IF;
35494 END IF;
35495 --
35496 
35497 --
35501       ,p_level    => C_LEVEL_PROCEDURE
35498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35499    trace
35500       (p_msg      => 'END of AcctLineType_58'
35502       ,p_module   => l_log_module);
35503 END IF;
35504 --
35505 EXCEPTION
35506   WHEN xla_exceptions_pkg.application_exception THEN
35507       RAISE;
35508   WHEN OTHERS THEN
35509        xla_exceptions_pkg.raise_message
35510            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_58');
35511 END AcctLineType_58;
35512 --
35513 
35514 ---------------------------------------
35515 --
35516 -- PRIVATE FUNCTION
35517 --         AcctLineType_59
35518 --
35519 ---------------------------------------
35520 PROCEDURE AcctLineType_59 (
35521   p_application_id        IN NUMBER
35522  ,p_event_id              IN NUMBER
35523  ,p_calculate_acctd_flag  IN VARCHAR2
35524  ,p_calculate_g_l_flag    IN VARCHAR2
35525  ,p_actual_flag           IN OUT VARCHAR2
35526  ,p_balance_type_code     OUT VARCHAR2
35527  ,p_gain_or_loss_ref      OUT VARCHAR2
35528  
35529 --Invoice Distribution Description
35530  , p_source_1            IN VARCHAR2
35531 --Invoice Distribution Account
35532  , p_source_2            IN NUMBER
35533 --Federal Fund Category
35534  , p_source_4            IN VARCHAR2
35535 --Federal Fund Expired Status
35536  , p_source_5            IN VARCHAR2
35537 --Federal Fund Category Description
35538  , p_source_6            IN VARCHAR2
35539 --Invoice Type
35540  , p_source_13            IN VARCHAR2
35541  , p_source_13_meaning    IN VARCHAR2
35542 --Accounting Reversal Indicator
35543  , p_source_15            IN VARCHAR2
35544 --Distribution Link Type
35545  , p_source_17            IN VARCHAR2
35546 --Allocation to Main Distribution Identifier
35547  , p_source_19            IN NUMBER
35548 --Invoice Identifier
35549  , p_source_20            IN NUMBER
35550 --Business Flow Accounts Payable Application Identifier
35551  , p_source_21            IN NUMBER
35552 --Business Flow Invoice Distribution Type
35553  , p_source_22            IN VARCHAR2
35554 --Business Flow Invoice Entity Code
35555  , p_source_23            IN VARCHAR2
35556 --Business Flow Invoice Distribution Identifier
35557  , p_source_24            IN NUMBER
35558 --Business Flow Invoice Identifier
35559  , p_source_25            IN NUMBER
35560 --Invoice Distribution Identifier
35561  , p_source_26            IN NUMBER
35562 --Payables Encumbrance Upgrade Credit Account
35563  , p_source_27            IN NUMBER
35564 --Payables Encumbrance Upgrade Credit Amount
35565  , p_source_28            IN NUMBER
35566 --Invoice Currency Code
35567  , p_source_29            IN VARCHAR2
35568 --Payables Encumbrance Upgrade Credit Base Amount
35569  , p_source_30            IN NUMBER
35570 --Payables Encumbrance Upgrade Debit Account
35571  , p_source_31            IN NUMBER
35572 --Payables Encumbrance Upgrade Debit Amount
35573  , p_source_32            IN NUMBER
35574 --Payables Encumbrance Upgrade Debit Base Amount
35575  , p_source_33            IN NUMBER
35576 --Payables Encumbrance Upgrade Option
35577  , p_source_34            IN VARCHAR2
35578 --Invoice Exchange Date
35579  , p_source_36            IN DATE
35580 --Invoice Exchange Rate
35581  , p_source_37            IN NUMBER
35582 --Invoice Exchange Rate Type
35583  , p_source_38            IN VARCHAR2
35584 --Deferred Accounting End Date
35585  , p_source_39            IN DATE
35586 --Deferred Accounting Option
35587  , p_source_40            IN VARCHAR2
35588 --Deferred Accounting Start Date
35589  , p_source_41            IN DATE
35590 --Override Accounted Amount Indicator
35591  , p_source_42            IN VARCHAR2
35592  , p_source_42_meaning    IN VARCHAR2
35593 --Invoice Supplier Identifier
35594  , p_source_43            IN NUMBER
35595 --Invoice Supplier Site Identifier
35596  , p_source_44            IN NUMBER
35597 --Third Party Type
35598  , p_source_45            IN VARCHAR2
35599 --Parent Reversal Identifier
35600  , p_source_46            IN NUMBER
35601 --Invoice Distribution Statistical Amount
35602  , p_source_47            IN NUMBER
35603 --Invoice Distribution Tax Line Identifier
35604  , p_source_48            IN NUMBER
35605 --Invoice Distribution Tax Distribution Identifier from Tax
35606  , p_source_49            IN NUMBER
35607 --Invoice Distribution Summary Tax Line Identifier
35608  , p_source_50            IN NUMBER
35609 --Payables Upgrade Credit Encumbrance Type Identifier
35610  , p_source_51            IN NUMBER
35611 --Payables Upgrade Debit Encumbrance Type Identifier
35612  , p_source_52            IN NUMBER
35613 --Invoice Distribution Amount
35614  , p_source_55            IN NUMBER
35615 --Invoice Distribution Ledger Amount
35616  , p_source_56            IN NUMBER
35617 --POD_PO_DISTRIBUTION_ID
35618  , p_source_70            IN NUMBER
35619 )
35620 IS
35621 
35622 l_component_type              VARCHAR2(80);
35623 l_component_code              VARCHAR2(30);
35624 l_component_type_code         VARCHAR2(1);
35625 l_component_appl_id           INTEGER;
35626 l_amb_context_code            VARCHAR2(30);
35627 l_entity_code                 VARCHAR2(30);
35628 l_event_class_code            VARCHAR2(30);
35629 l_ae_header_id                NUMBER;
35630 l_event_type_code             VARCHAR2(30);
35631 l_line_definition_code        VARCHAR2(30);
35632 l_line_definition_owner_code  VARCHAR2(1);
35633 --
35634 -- adr variables
35635 l_segment                     VARCHAR2(30);
35639 l_adr_flexfield_segment_code  VARCHAR2(30);
35636 l_ccid                        NUMBER;
35637 l_adr_transaction_coa_id      NUMBER;
35638 l_adr_accounting_coa_id       NUMBER;
35640 l_adr_flex_value_set_id       NUMBER;
35641 l_adr_value_type_code         VARCHAR2(30);
35642 l_adr_value_combination_id    NUMBER;
35643 l_adr_value_segment_code      VARCHAR2(30);
35644 
35645 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35646 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35647 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35648 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35649 
35650 -- 4262811 Variables ------------------------------------------------------------------------------------------
35651 l_entered_amt_idx             NUMBER;
35652 l_accted_amt_idx              NUMBER;
35653 l_acc_rev_flag                VARCHAR2(1);
35654 l_accrual_line_num            NUMBER;
35655 l_tmp_amt                     NUMBER;
35656 l_acc_rev_natural_side_code   VARCHAR2(1);
35657 
35658 l_num_entries                 NUMBER;
35659 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35660 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35661 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35662 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35663 l_recog_line_1                NUMBER;
35664 l_recog_line_2                NUMBER;
35665 
35666 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35667 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35668 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35669 
35670 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35671 
35672 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35673 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35674 
35675 ---------------------------------------------------------------------------------------------------------------
35676 
35677 
35678 --
35679 -- bulk performance
35680 --
35681 l_balance_type_code           VARCHAR2(1);
35682 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35683 l_log_module                  VARCHAR2(240);
35684 
35685 --
35686 -- Upgrade strategy
35687 --
35688 l_actual_upg_option           VARCHAR2(1);
35689 l_enc_upg_option           VARCHAR2(1);
35690 
35691 --
35692 BEGIN
35693 --
35694 IF g_log_enabled THEN
35695       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
35696 END IF;
35697 --
35698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35699 
35700       trace
35701          (p_msg      => 'BEGIN of AcctLineType_59'
35702          ,p_level    => C_LEVEL_PROCEDURE
35703          ,p_module   => l_log_module);
35704 
35705 END IF;
35706 --
35707 l_component_type             := 'AMB_JLT';
35708 l_component_code             := 'FV_PREPAYMENT_INV_DR';
35709 l_component_type_code        := 'S';
35710 l_component_appl_id          :=  200;
35711 l_amb_context_code           := 'DEFAULT';
35712 l_entity_code                := 'AP_INVOICES';
35713 l_event_class_code           := 'PREPAYMENTS';
35714 l_event_type_code            := 'PREPAYMENTS_ALL';
35715 l_line_definition_owner_code := 'S';
35716 l_line_definition_code       := 'FV_AP_PREPAYMENTS_ALL';
35717 --
35718 l_balance_type_code          := 'A';
35719 l_segment                     := NULL;
35720 l_ccid                        := NULL;
35721 l_adr_transaction_coa_id      := NULL;
35722 l_adr_accounting_coa_id       := NULL;
35723 l_adr_flexfield_segment_code  := NULL;
35724 l_adr_flex_value_set_id       := NULL;
35725 l_adr_value_type_code         := NULL;
35726 l_adr_value_combination_id    := NULL;
35727 l_adr_value_segment_code      := NULL;
35728 
35729 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35730 l_bflow_class_code           := '';    -- 4219869 Business Flow
35731 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35732 l_budgetary_control_flag     := 'Y';
35733 
35734 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35735 l_bflow_applied_to_amt       := NULL; -- 5132302
35736 l_entered_amt_idx            := NULL;          -- 4262811
35737 l_accted_amt_idx             := NULL;          -- 4262811
35738 l_acc_rev_flag               := NULL;          -- 4262811
35739 l_accrual_line_num           := NULL;          -- 4262811
35740 l_tmp_amt                    := NULL;          -- 4262811
35741 --
35742  
35743 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35744     l_balance_type_code <> 'B' THEN
35745 IF p_source_70 IS NULL AND 
35746 NVL(p_source_13,'
35747 ') =  'PREPAYMENT'
35748  THEN 
35749 
35750    --
35751    XLA_AE_LINES_PKG.SetNewLine;
35752 
35753    p_balance_type_code          := l_balance_type_code;
35754    -- set the flag so later we will know whether the gain loss line needs to be created
35755    
35756    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35757      p_actual_flag :='A';
35758    END IF;
35759 
35760    --
35761    -- bulk performance
35762    --
35763    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35767    --
35764                                       p_header_num   => 0); -- 4262811
35765    --
35766    -- set accounting line options
35768    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35769            p_natural_side_code          => 'D'
35770          , p_gain_or_loss_flag          => 'N'
35771          , p_gl_transfer_mode_code      => 'S'
35772          , p_acct_entry_type_code       => 'A'
35773          , p_switch_side_flag           => 'N'
35774          , p_merge_duplicate_code       => 'N'
35775          );
35776    --
35777    l_acc_rev_natural_side_code := 'C';  -- 4262811
35778    -- 
35779    --
35780    -- set accounting line type info
35781    --
35782    xla_ae_lines_pkg.SetAcctLineType
35783       (p_component_type             => l_component_type
35784       ,p_event_type_code            => l_event_type_code
35785       ,p_line_definition_owner_code => l_line_definition_owner_code
35786       ,p_line_definition_code       => l_line_definition_code
35787       ,p_accounting_line_code       => l_component_code
35788       ,p_accounting_line_type_code  => l_component_type_code
35789       ,p_accounting_line_appl_id    => l_component_appl_id
35790       ,p_amb_context_code           => l_amb_context_code
35791       ,p_entity_code                => l_entity_code
35792       ,p_event_class_code           => l_event_class_code);
35793    --
35794    -- set accounting class
35795    --
35796    xla_ae_lines_pkg.SetAcctClass(
35797            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
35798          , p_ae_header_id           => l_ae_header_id
35799          );
35800 
35801    --
35802    -- set rounding class
35803    --
35804    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35805                       'ACCOUNTSPAYABLE';
35806 
35807    --
35808    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35809    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35810    --
35811    -- bulk performance
35812    --
35813    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35814 
35815    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35816       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35817 
35818    -- 4955764
35819    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35821 
35822    -- 4458381 Public Sector Enh
35823    
35824    --
35825    -- set accounting attributes for the line type
35826    --
35827    l_entered_amt_idx := 23;
35828    l_accted_amt_idx  := 28;
35829    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35830    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35831    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
35832    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35833    l_rec_acct_attrs.array_num_value(2)  := 
35834 xla_ae_sources_pkg.GetSystemSourceNum(
35835    p_source_code           => 'XLA_EVENT_APPL_ID'
35836  , p_source_type_code      => 'Y'
35837  , p_source_application_id =>  602
35838 );
35839    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35840    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
35841    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35842    l_rec_acct_attrs.array_char_value(4)  := 
35843 xla_ae_sources_pkg.GetSystemSourceChar(
35844    p_source_code           => 'XLA_ENTITY_CODE'
35845  , p_source_type_code      => 'Y'
35846  , p_source_application_id =>  602
35847 );
35848    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35849    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
35850    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35851    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
35852    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
35853    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
35854    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35855    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
35856    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
35857    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
35858    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
35859    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
35860    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35861    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
35862    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
35863    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_26);
35864    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
35865    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
35866    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
35867    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
35868    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
35869    l_rec_acct_attrs.array_num_value(15)  := p_source_28;
35870    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
35871    l_rec_acct_attrs.array_char_value(16)  := p_source_29;
35875    l_rec_acct_attrs.array_num_value(18)  := p_source_31;
35872    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
35873    l_rec_acct_attrs.array_num_value(17)  := p_source_30;
35874    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
35876    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
35877    l_rec_acct_attrs.array_num_value(19)  := p_source_32;
35878    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
35879    l_rec_acct_attrs.array_char_value(20)  := p_source_29;
35880    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
35881    l_rec_acct_attrs.array_num_value(21)  := p_source_33;
35882    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
35883    l_rec_acct_attrs.array_char_value(22)  := p_source_34;
35884    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
35885    l_rec_acct_attrs.array_num_value(23)  := p_source_55;
35886    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
35887    l_rec_acct_attrs.array_char_value(24)  := p_source_29;
35888    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
35889    l_rec_acct_attrs.array_date_value(25)  := p_source_36;
35890    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
35891    l_rec_acct_attrs.array_num_value(26)  := p_source_37;
35892    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
35893    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
35894    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
35895    l_rec_acct_attrs.array_num_value(28)  := p_source_56;
35896    l_rec_acct_attrs.array_acct_attr_code(29) := 'MULTIPERIOD_END_DATE';
35897    l_rec_acct_attrs.array_date_value(29)  := p_source_39;
35898    l_rec_acct_attrs.array_acct_attr_code(30) := 'MULTIPERIOD_OPTION';
35899    l_rec_acct_attrs.array_char_value(30)  := p_source_40;
35900    l_rec_acct_attrs.array_acct_attr_code(31) := 'MULTIPERIOD_START_DATE';
35901    l_rec_acct_attrs.array_date_value(31)  := p_source_41;
35902    l_rec_acct_attrs.array_acct_attr_code(32) := 'OVERRIDE_ACCTD_AMT_FLAG';
35903    l_rec_acct_attrs.array_char_value(32)  := p_source_42;
35904    l_rec_acct_attrs.array_acct_attr_code(33) := 'PARTY_ID';
35905    l_rec_acct_attrs.array_num_value(33)  := p_source_43;
35906    l_rec_acct_attrs.array_acct_attr_code(34) := 'PARTY_SITE_ID';
35907    l_rec_acct_attrs.array_num_value(34)  := p_source_44;
35908    l_rec_acct_attrs.array_acct_attr_code(35) := 'PARTY_TYPE';
35909    l_rec_acct_attrs.array_char_value(35)  := p_source_45;
35910    l_rec_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID1';
35911    l_rec_acct_attrs.array_num_value(36)  :=  to_char(p_source_46);
35912    l_rec_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
35913    l_rec_acct_attrs.array_char_value(37)  := p_source_17;
35914    l_rec_acct_attrs.array_acct_attr_code(38) := 'STATISTICAL_AMOUNT';
35915    l_rec_acct_attrs.array_num_value(38)  := p_source_47;
35916    l_rec_acct_attrs.array_acct_attr_code(39) := 'TAX_LINE_REF_ID';
35917    l_rec_acct_attrs.array_num_value(39)  := p_source_48;
35918    l_rec_acct_attrs.array_acct_attr_code(40) := 'TAX_REC_NREC_DIST_REF_ID';
35919    l_rec_acct_attrs.array_num_value(40)  := p_source_49;
35920    l_rec_acct_attrs.array_acct_attr_code(41) := 'TAX_SUMMARY_LINE_REF_ID';
35921    l_rec_acct_attrs.array_num_value(41)  := p_source_50;
35922    l_rec_acct_attrs.array_acct_attr_code(42) := 'UPG_CR_ENC_TYPE_ID';
35923    l_rec_acct_attrs.array_num_value(42)  := p_source_51;
35924    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_DR_ENC_TYPE_ID';
35925    l_rec_acct_attrs.array_num_value(43)  := p_source_52;
35926 
35927    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35928    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35929 
35930    ---------------------------------------------------------------------------------------------------------------
35931    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35932    ---------------------------------------------------------------------------------------------------------------
35933    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35934 
35935    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35936    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35937 
35938    IF xla_accounting_cache_pkg.GetValueChar
35939          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35940          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35941    AND l_bflow_method_code = 'PRIOR_ENTRY'
35942 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35943    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35944          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35945        )
35946    THEN
35947          xla_ae_lines_pkg.BflowUpgEntry
35948            (p_business_method_code    => l_bflow_method_code
35949            ,p_business_class_code     => l_bflow_class_code
35950            ,p_balance_type            => l_balance_type_code);
35951    ELSE
35952       NULL;
35953 -- No business flow processing for business flow method of NONE.
35954    END IF;
35955 
35956    --
35957    -- call analytical criteria
35958    --
35959    
35960    --
35961    -- call description
35962    --
35963    
35964 xla_ae_lines_pkg.SetLineDescription(
35965    p_ae_header_id => l_ae_header_id
35969 , p_source_1 => p_source_1
35966   ,p_description  => Description_2 (
35967      p_application_id         => p_application_id
35968    , p_ae_header_id           => l_ae_header_id 
35970    )
35971 );
35972 
35973 
35974    --
35975    -- call ADRs
35976    -- Bug 4922099
35977    --
35978    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35979         (NVL(l_actual_upg_option, 'N') = 'O') OR
35980         (NVL(l_enc_upg_option, 'N') = 'O')
35981       )
35982    THEN
35983    NULL;
35984    --
35985    --
35986    
35987   l_ccid := AcctDerRule_3(
35988            p_application_id           => p_application_id
35989          , p_ae_header_id             => l_ae_header_id 
35990 , p_source_2 => p_source_2
35991          , x_transaction_coa_id       => l_adr_transaction_coa_id
35992          , x_accounting_coa_id        => l_adr_accounting_coa_id
35993          , x_value_type_code          => l_adr_value_type_code
35994          , p_side                     => 'NA'
35995    );
35996 
35997    xla_ae_lines_pkg.set_ccid(
35998     p_code_combination_id          => l_ccid
35999   , p_value_type_code              => l_adr_value_type_code
36000   , p_transaction_coa_id           => l_adr_transaction_coa_id
36001   , p_accounting_coa_id            => l_adr_accounting_coa_id
36002   , p_adr_code                     => 'AP_INVOICE_DIST'
36003   , p_adr_type_code                => 'S'
36004   , p_component_type               => l_component_type
36005   , p_component_code               => l_component_code
36006   , p_component_type_code          => l_component_type_code
36007   , p_component_appl_id            => l_component_appl_id
36008   , p_amb_context_code             => l_amb_context_code
36009   , p_side                         => 'NA'
36010   );
36011 
36012 
36013    l_segment := AcctDerRule_8(
36014            p_application_id           => p_application_id
36015          , p_ae_header_id             => l_ae_header_id 
36016 , p_source_4 => p_source_4
36017 , p_source_5 => p_source_5
36018 , p_source_6 => p_source_6
36019          , x_transaction_coa_id       => l_adr_transaction_coa_id
36020          , x_accounting_coa_id        => l_adr_accounting_coa_id
36021          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
36022          , x_flex_value_set_id        => l_adr_flex_value_set_id
36023          , x_value_type_code          => l_adr_value_type_code
36024          , x_value_combination_id     => l_adr_value_combination_id
36025          , x_value_segment_code       => l_adr_value_segment_code
36026          , p_side                     => 'NA'
36027          , p_override_seg_flag        => 'Y'
36028    );
36029 
36030    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
36031 
36032       xla_ae_lines_pkg.set_segment(
36033           p_to_segment_code         => 'GL_ACCOUNT'
36034         , p_segment_value           => l_segment
36035         , p_from_segment_code       => l_adr_value_segment_code
36036         , p_from_combination_id     => l_adr_value_combination_id
36037         , p_value_type_code         => l_adr_value_type_code
36038         , p_transaction_coa_id      => l_adr_transaction_coa_id
36039         , p_accounting_coa_id       => l_adr_accounting_coa_id
36040         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
36041         , p_flex_value_set_id       => l_adr_flex_value_set_id
36042         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
36043         , p_adr_type_code           => 'S'
36044         , p_component_type          => l_component_type
36045         , p_component_code          => l_component_code
36046         , p_component_type_code     => l_component_type_code
36047         , p_component_appl_id       => l_component_appl_id
36048         , p_amb_context_code        => l_amb_context_code
36049         , p_entity_code             => 'AP_INVOICES'
36050         , p_event_class_code        => 'PREPAYMENTS'
36051         , p_side                    => 'NA'
36052         );
36053 
36054   END IF;
36055 
36056    --
36057    --
36058    END IF;
36059    --
36060    -- Bug 4922099
36061    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36062           (NVL(l_enc_upg_option, 'N') = 'O')
36063         ) AND
36064         (l_bflow_method_code = 'PRIOR_ENTRY')
36065       )
36066    THEN
36067       IF
36068       --
36069       1 = 2
36070       --
36071       THEN
36072       xla_accounting_err_pkg.build_message
36073                                     (p_appli_s_name            => 'XLA'
36074                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36075                                     ,p_token_1                 => 'LINE_NUMBER'
36076                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36077                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36078                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36079                                                                              l_component_type
36080                                                                             ,l_component_code
36081                                                                             ,l_component_type_code
36082                                                                             ,l_component_appl_id
36083                                                                             ,l_amb_context_code
36084                                                                             ,l_entity_code
36088                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36085                                                                             ,l_event_class_code
36086                                                                            )
36087                                     ,p_token_3                 => 'OWNER'
36089                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36090                                                                           ,p_lookup_code    => l_component_type_code
36091                                                                          )
36092                                     ,p_token_4                 => 'PRODUCT_NAME'
36093                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36094                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36095                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36096                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36097                                     ,p_ae_header_id            =>  NULL
36098                                        );
36099 
36100         IF (C_LEVEL_ERROR>= g_log_level) THEN
36101                  trace
36102                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36103                       ,p_level    => C_LEVEL_ERROR
36104                       ,p_module   => l_log_module);
36105         END IF;
36106       END IF;
36107    END IF;
36108    --
36109    --
36110    ------------------------------------------------------------------------------------------------
36111    -- 4219869 Business Flow
36112    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36113    -- Prior Entry.  Currently, the following code is always generated.
36114    ------------------------------------------------------------------------------------------------
36115    XLA_AE_LINES_PKG.ValidateCurrentLine;
36116 
36117    ------------------------------------------------------------------------------------
36118    -- 4219869 Business Flow
36119    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36120    ------------------------------------------------------------------------------------
36121    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36122 
36123    ----------------------------------------------------------------------------------
36124    -- 4219869 Business Flow
36125    -- Update journal entry status -- Need to generate this within IF <condition>
36126    ----------------------------------------------------------------------------------
36127    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36128          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36129          ,p_balance_type_code => l_balance_type_code
36130          );
36131 
36132    -------------------------------------------------------------------------------------------
36133    -- 4262811 - Generate the Accrual Reversal lines
36134    -------------------------------------------------------------------------------------------
36135    BEGIN
36136       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36137                               (g_array_event(p_event_id).array_value_num('header_index'));
36138       IF l_acc_rev_flag IS NULL THEN
36139          l_acc_rev_flag := 'N';
36140       END IF;
36141    EXCEPTION
36142       WHEN OTHERS THEN
36143          l_acc_rev_flag := 'N';
36144    END;
36145    --
36146    IF (l_acc_rev_flag = 'Y') THEN
36147 
36148        -- 4645092  ------------------------------------------------------------------------------
36149        -- To allow MPA report to determine if it should generate report process
36150        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36151        ------------------------------------------------------------------------------------------
36152 
36153        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36154        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36155    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36156    -- call ADRs
36157    -- Bug 4922099
36158    --
36159    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36160         (NVL(l_actual_upg_option, 'N') = 'O') OR
36161         (NVL(l_enc_upg_option, 'N') = 'O')
36162       )
36163    THEN
36164    NULL;
36165    --
36166    --
36167    
36168   l_ccid := AcctDerRule_3(
36169            p_application_id           => p_application_id
36170          , p_ae_header_id             => l_ae_header_id 
36171 , p_source_2 => p_source_2
36172          , x_transaction_coa_id       => l_adr_transaction_coa_id
36173          , x_accounting_coa_id        => l_adr_accounting_coa_id
36174          , x_value_type_code          => l_adr_value_type_code
36175          , p_side                     => 'NA'
36176    );
36177 
36178    xla_ae_lines_pkg.set_ccid(
36179     p_code_combination_id          => l_ccid
36180   , p_value_type_code              => l_adr_value_type_code
36181   , p_transaction_coa_id           => l_adr_transaction_coa_id
36182   , p_accounting_coa_id            => l_adr_accounting_coa_id
36183   , p_adr_code                     => 'AP_INVOICE_DIST'
36184   , p_adr_type_code                => 'S'
36185   , p_component_type               => l_component_type
36189   , p_amb_context_code             => l_amb_context_code
36186   , p_component_code               => l_component_code
36187   , p_component_type_code          => l_component_type_code
36188   , p_component_appl_id            => l_component_appl_id
36190   , p_side                         => 'NA'
36191   );
36192 
36193 
36194    l_segment := AcctDerRule_8(
36195            p_application_id           => p_application_id
36196          , p_ae_header_id             => l_ae_header_id 
36197 , p_source_4 => p_source_4
36198 , p_source_5 => p_source_5
36199 , p_source_6 => p_source_6
36200          , x_transaction_coa_id       => l_adr_transaction_coa_id
36201          , x_accounting_coa_id        => l_adr_accounting_coa_id
36202          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
36203          , x_flex_value_set_id        => l_adr_flex_value_set_id
36204          , x_value_type_code          => l_adr_value_type_code
36205          , x_value_combination_id     => l_adr_value_combination_id
36206          , x_value_segment_code       => l_adr_value_segment_code
36207          , p_side                     => 'NA'
36208          , p_override_seg_flag        => 'Y'
36209    );
36210 
36211    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
36212 
36213       xla_ae_lines_pkg.set_segment(
36214           p_to_segment_code         => 'GL_ACCOUNT'
36215         , p_segment_value           => l_segment
36216         , p_from_segment_code       => l_adr_value_segment_code
36217         , p_from_combination_id     => l_adr_value_combination_id
36218         , p_value_type_code         => l_adr_value_type_code
36219         , p_transaction_coa_id      => l_adr_transaction_coa_id
36220         , p_accounting_coa_id       => l_adr_accounting_coa_id
36221         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
36222         , p_flex_value_set_id       => l_adr_flex_value_set_id
36223         , p_adr_code                => 'FV_46X002_ALLOTMENT_RES_ACCT'
36224         , p_adr_type_code           => 'S'
36225         , p_component_type          => l_component_type
36226         , p_component_code          => l_component_code
36227         , p_component_type_code     => l_component_type_code
36228         , p_component_appl_id       => l_component_appl_id
36229         , p_amb_context_code        => l_amb_context_code
36230         , p_entity_code             => 'AP_INVOICES'
36231         , p_event_class_code        => 'PREPAYMENTS'
36232         , p_side                    => 'NA'
36233         );
36234 
36235   END IF;
36236 
36237    --
36238    --
36239    END IF;
36240 
36241        --
36242        -- Update the line information that should be overwritten
36243        --
36244        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36245                                          p_header_num   => 1);
36246        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36247 
36248        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36249 
36250        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36251           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36252        END IF;
36253 
36254       --
36255       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36256       --
36257       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36258           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36259       ELSE
36260           ---------------------------------------------------------------------------------------------------
36261           -- 4262811a Switch Sign
36262           ---------------------------------------------------------------------------------------------------
36263           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36264           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36265                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36266           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36267                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36268           -- 5132302
36269           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36270                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36271 
36272       END IF;
36273 
36274       -- 4955764
36275       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36277 
36278 
36279       XLA_AE_LINES_PKG.ValidateCurrentLine;
36280       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36281 
36282       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36283                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36284                ,p_balance_type_code => l_balance_type_code);
36285 
36286    END IF;
36287 
36288    -----------------------------------------------------------------------------------------
36289    -- 4262811 Multiperiod Accounting
36290    -----------------------------------------------------------------------------------------
36291      -- No MPA option is assigned.
36292 
36293 
36297 
36294 END IF;
36295 END IF;
36296 --
36298 --
36299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36300    trace
36301       (p_msg      => 'END of AcctLineType_59'
36302       ,p_level    => C_LEVEL_PROCEDURE
36303       ,p_module   => l_log_module);
36304 END IF;
36305 --
36306 EXCEPTION
36307   WHEN xla_exceptions_pkg.application_exception THEN
36308       RAISE;
36309   WHEN OTHERS THEN
36310        xla_exceptions_pkg.raise_message
36311            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.AcctLineType_59');
36312 END AcctLineType_59;
36313 --
36314 
36315 ---------------------------------------
36316 --
36317 -- PRIVATE PROCEDURE
36318 --         insert_sources_60
36319 --
36320 ----------------------------------------
36321 --
36322 PROCEDURE insert_sources_60(
36323                                 p_target_ledger_id       IN NUMBER
36324                               , p_language               IN VARCHAR2
36325                               , p_sla_ledger_id          IN NUMBER
36326                               , p_pad_start_date         IN DATE
36327                               , p_pad_end_date           IN DATE
36328                          )
36329 IS
36330 
36331 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT MEMOS_ALL';
36332 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CREDIT MEMOS';
36333 p_apps_owner                   VARCHAR2(30);
36334 l_log_module                   VARCHAR2(240);
36335 BEGIN
36336 IF g_log_enabled THEN
36337       l_log_module := C_DEFAULT_MODULE||'.insert_sources_60';
36338 END IF;
36339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36340 
36341       trace
36342          (p_msg      => 'BEGIN of insert_sources_60'
36343          ,p_level    => C_LEVEL_PROCEDURE
36344          ,p_module   => l_log_module);
36345 
36346 END IF;
36347 
36348 -- select APPS owner
36349 SELECT oracle_username
36350   INTO p_apps_owner
36351   FROM fnd_oracle_userid
36352  WHERE read_only_flag = 'U'
36353 ;
36354 
36355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36356       trace
36357          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
36358                         ' - p_language = '||p_language||
36359                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
36360                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
36361                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
36362                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
36363          ,p_level    => C_LEVEL_STATEMENT
36364          ,p_module   => l_log_module);
36365 END IF;
36366 
36367 
36368 --
36369 INSERT INTO xla_diag_sources --hdr2
36370 (
36371         event_id
36372       , ledger_id
36373       , sla_ledger_id
36374       , description_language
36375       , object_name
36376       , object_type_code
36377       , line_number
36378       , source_application_id
36379       , source_type_code
36380       , source_code
36381       , source_value
36382       , source_meaning
36383       , created_by
36384       , creation_date
36385       , last_update_date
36386       , last_updated_by
36387       , last_update_login
36388       , program_update_date
36389       , program_application_id
36390       , program_id
36391       , request_id
36392 )
36393 SELECT
36394         event_id
36395       , p_target_ledger_id
36396       , p_sla_ledger_id
36397       , p_language
36398       , object_name
36399       , object_type_code
36400       , line_number
36401       , source_application_id
36402       , source_type_code
36403       , source_code
36404       , SUBSTR(source_value ,1,1996)
36405       , SUBSTR(source_meaning ,1,200)
36406       , xla_environment_pkg.g_Usr_Id
36407       , TRUNC(SYSDATE)
36408       , TRUNC(SYSDATE)
36409       , xla_environment_pkg.g_Usr_Id
36410       , xla_environment_pkg.g_Login_Id
36411       , TRUNC(SYSDATE)
36412       , xla_environment_pkg.g_Prog_Appl_Id
36413       , xla_environment_pkg.g_Prog_Id
36414       , xla_environment_pkg.g_Req_Id
36415   FROM (
36416        SELECT xet.event_id                  event_id
36417             , 0                          line_number
36418             , CASE r
36419                WHEN 1 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36420                 WHEN 2 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36421                 WHEN 3 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36422                 WHEN 4 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36423                 WHEN 5 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36424                 WHEN 6 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36425                 WHEN 7 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36426                 WHEN 8 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36427                 WHEN 9 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36428                 WHEN 10 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36429                 WHEN 11 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36430                 WHEN 12 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36431                 WHEN 13 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
36432                 
36433                ELSE null
36434               END                           object_name
36435             , CASE r
36436                 WHEN 1 THEN 'HEADER' 
36437                 WHEN 2 THEN 'HEADER' 
36441                 WHEN 6 THEN 'HEADER' 
36438                 WHEN 3 THEN 'HEADER' 
36439                 WHEN 4 THEN 'HEADER' 
36440                 WHEN 5 THEN 'HEADER' 
36442                 WHEN 7 THEN 'HEADER' 
36443                 WHEN 8 THEN 'HEADER' 
36444                 WHEN 9 THEN 'HEADER' 
36445                 WHEN 10 THEN 'HEADER' 
36446                 WHEN 11 THEN 'HEADER' 
36447                 WHEN 12 THEN 'HEADER' 
36448                 WHEN 13 THEN 'HEADER' 
36449                 
36450                 ELSE null
36451               END                           object_type_code
36452             , CASE r
36453                 WHEN 1 THEN '200' 
36454                 WHEN 2 THEN '200' 
36455                 WHEN 3 THEN '200' 
36456                 WHEN 4 THEN '200' 
36457                 WHEN 5 THEN '200' 
36458                 WHEN 6 THEN '200' 
36459                 WHEN 7 THEN '200' 
36460                 WHEN 8 THEN '200' 
36461                 WHEN 9 THEN '200' 
36462                 WHEN 10 THEN '200' 
36463                 WHEN 11 THEN '200' 
36464                 WHEN 12 THEN '200' 
36465                 WHEN 13 THEN '200' 
36466                 
36467                 ELSE null
36468               END                           source_application_id
36469             , 'S'             source_type_code
36470             , CASE r
36471                 WHEN 1 THEN 'AI_PAYMENT_STATUS_FLAG' 
36472                 WHEN 2 THEN 'AI_INVOICE_TYPE_LOOKUP_CODE' 
36473                 WHEN 3 THEN 'AI_INVOICE_ID' 
36474                 WHEN 4 THEN 'AI_INVOICE_CURRENCY_CODE' 
36475                 WHEN 5 THEN 'INV_EXCHANGE_DATE' 
36476                 WHEN 6 THEN 'INV_EXCHANGE_RATE' 
36477                 WHEN 7 THEN 'INV_EXCHANGE_RATE_TYPE' 
36478                 WHEN 8 THEN 'AI_VENDOR_ID' 
36479                 WHEN 9 THEN 'AI_VENDOR_SITE_ID' 
36480                 WHEN 10 THEN 'THIRD_PARTY_TYPE' 
36481                 WHEN 11 THEN 'INV_DOC_SEQUENCE_CATEGORY' 
36482                 WHEN 12 THEN 'INV_DOC_SEQUENCE_IDENTIFIER' 
36483                 WHEN 13 THEN 'INV_DOC_SEQUENCE_VALUE' 
36484                 
36485                 ELSE null
36486               END                           source_code
36487             , CASE r
36488                 WHEN 1 THEN TO_CHAR(h2.AI_PAYMENT_STATUS_FLAG)
36489                 WHEN 2 THEN TO_CHAR(h2.AI_INVOICE_TYPE_LOOKUP_CODE)
36490                 WHEN 3 THEN TO_CHAR(h2.AI_INVOICE_ID)
36491                 WHEN 4 THEN TO_CHAR(h2.AI_INVOICE_CURRENCY_CODE)
36492                 WHEN 5 THEN TO_CHAR(h2.INV_EXCHANGE_DATE)
36493                 WHEN 6 THEN TO_CHAR(h2.INV_EXCHANGE_RATE)
36494                 WHEN 7 THEN TO_CHAR(h2.INV_EXCHANGE_RATE_TYPE)
36495                 WHEN 8 THEN TO_CHAR(h2.AI_VENDOR_ID)
36496                 WHEN 9 THEN TO_CHAR(h2.AI_VENDOR_SITE_ID)
36497                 WHEN 10 THEN TO_CHAR(h2.THIRD_PARTY_TYPE)
36498                 WHEN 11 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_CATEGORY)
36499                 WHEN 12 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_IDENTIFIER)
36500                 WHEN 13 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_VALUE)
36501                 
36502                 ELSE null
36503               END                           source_value
36504             , CASE r
36505                 WHEN 2 THEN fvl13.meaning
36506                 
36507                 ELSE null
36508               END               source_meaning
36509          FROM xla_events_gt     xet  
36510       , AP_INVOICE_EXTRACT_HEADER_V  h2
36511   , fnd_lookup_values    fvl13
36512              ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
36513          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
36514            AND xet.event_class_code = C_EVENT_CLASS_CODE
36515               AND h2.event_id = xet.event_id
36516    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
36517   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
36518   AND fvl13.view_application_id(+) = 200
36519   AND fvl13.language(+)            = USERENV('LANG')
36520   
36521 )
36522 ;
36523 --
36524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36525 
36526       trace
36527          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
36528          ,p_level    => C_LEVEL_STATEMENT
36529          ,p_module   => l_log_module);
36530 
36531 END IF;
36532 --
36533 
36534 
36535 
36536 --
36537 INSERT INTO xla_diag_sources  --line2
36538 (
36539         event_id
36540       , ledger_id
36541       , sla_ledger_id
36542       , description_language
36543       , object_name
36544       , object_type_code
36545       , line_number
36546       , source_application_id
36547       , source_type_code
36548       , source_code
36549       , source_value
36550       , source_meaning
36551       , created_by
36552       , creation_date
36553       , last_update_date
36554       , last_updated_by
36555       , last_update_login
36556       , program_update_date
36557       , program_application_id
36558       , program_id
36559       , request_id
36560 )
36561 SELECT  event_id
36562       , p_target_ledger_id
36563       , p_sla_ledger_id
36564       , p_language
36565       , object_name
36566       , object_type_code
36567       , line_number
36568       , source_application_id
36569       , source_type_code
36573       , xla_environment_pkg.g_Usr_Id
36570       , source_code
36571       , SUBSTR(source_value,1,1996)
36572       , SUBSTR(source_meaning ,1,200)
36574       , TRUNC(SYSDATE)
36575       , TRUNC(SYSDATE)
36576       , xla_environment_pkg.g_Usr_Id
36577       , xla_environment_pkg.g_Login_Id
36578       , TRUNC(SYSDATE)
36579       , xla_environment_pkg.g_Prog_Appl_Id
36580       , xla_environment_pkg.g_Prog_Id
36581       , xla_environment_pkg.g_Req_Id
36582   FROM (
36583        SELECT xet.event_id                  event_id
36584             , l1.line_number                 line_number
36585             , CASE r
36586                WHEN 1 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36587                 WHEN 2 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36588                 WHEN 3 THEN 'FV_XLA_AP_REF_V' 
36589                 WHEN 4 THEN 'FV_XLA_AP_REF_V' 
36590                 WHEN 5 THEN 'FV_XLA_AP_REF_V' 
36591                 WHEN 6 THEN 'FV_XLA_AP_REF_V' 
36592                 WHEN 7 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36593                 WHEN 8 THEN 'FV_XLA_AP_REF_V' 
36594                 WHEN 9 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36595                 WHEN 10 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36596                 WHEN 11 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36597                 WHEN 12 THEN 'FV_XLA_AP_REF_V' 
36598                 WHEN 13 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36599                 WHEN 14 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36600                 WHEN 15 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36601                 WHEN 16 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36602                 WHEN 17 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36603                 WHEN 18 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36604                 WHEN 19 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36605                 WHEN 20 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36606                 WHEN 21 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36607                 WHEN 22 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36608                 WHEN 23 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36609                 WHEN 24 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36610                 WHEN 25 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36611                 WHEN 26 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36612                 WHEN 27 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36613                 WHEN 28 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36614                 WHEN 29 THEN 'FV_XLA_AP_REF_V' 
36615                 WHEN 30 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36616                 WHEN 31 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36617                 WHEN 32 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36618                 WHEN 33 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36619                 WHEN 34 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36620                 WHEN 35 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36621                 WHEN 36 THEN 'ZX_AP_DEF_TAX_EXTRACT_V' 
36622                 WHEN 37 THEN 'ZX_AP_TAX_JRNL_LINE_DESC_V' 
36623                 WHEN 38 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36624                 WHEN 39 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36625                 WHEN 40 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36626                 WHEN 41 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36627                 WHEN 42 THEN 'FV_XLA_AP_REF_V' 
36628                 WHEN 43 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36629                 WHEN 44 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
36630                 
36631                ELSE null
36632               END                           object_name
36633             , CASE r
36634                 WHEN 1 THEN 'LINE' 
36635                 WHEN 2 THEN 'LINE' 
36636                 WHEN 3 THEN 'LINE' 
36637                 WHEN 4 THEN 'LINE' 
36638                 WHEN 5 THEN 'LINE' 
36639                 WHEN 6 THEN 'LINE' 
36640                 WHEN 7 THEN 'LINE' 
36641                 WHEN 8 THEN 'LINE' 
36642                 WHEN 9 THEN 'LINE' 
36643                 WHEN 10 THEN 'LINE' 
36644                 WHEN 11 THEN 'LINE' 
36645                 WHEN 12 THEN 'LINE' 
36646                 WHEN 13 THEN 'LINE' 
36647                 WHEN 14 THEN 'LINE' 
36648                 WHEN 15 THEN 'LINE' 
36649                 WHEN 16 THEN 'LINE' 
36650                 WHEN 17 THEN 'LINE' 
36651                 WHEN 18 THEN 'LINE' 
36652                 WHEN 19 THEN 'LINE' 
36653                 WHEN 20 THEN 'LINE' 
36654                 WHEN 21 THEN 'LINE' 
36655                 WHEN 22 THEN 'LINE' 
36656                 WHEN 23 THEN 'LINE' 
36657                 WHEN 24 THEN 'LINE' 
36658                 WHEN 25 THEN 'LINE' 
36659                 WHEN 26 THEN 'LINE' 
36660                 WHEN 27 THEN 'LINE' 
36661                 WHEN 28 THEN 'LINE' 
36662                 WHEN 29 THEN 'LINE' 
36663                 WHEN 30 THEN 'LINE' 
36664                 WHEN 31 THEN 'LINE' 
36665                 WHEN 32 THEN 'LINE' 
36666                 WHEN 33 THEN 'LINE' 
36667                 WHEN 34 THEN 'LINE' 
36668                 WHEN 35 THEN 'LINE' 
36669                 WHEN 36 THEN 'LINE' 
36670                 WHEN 37 THEN 'LINE' 
36671                 WHEN 38 THEN 'LINE' 
36672                 WHEN 39 THEN 'LINE' 
36673                 WHEN 40 THEN 'LINE' 
36674                 WHEN 41 THEN 'LINE' 
36675                 WHEN 42 THEN 'LINE' 
36676                 WHEN 43 THEN 'LINE' 
36677                 WHEN 44 THEN 'LINE' 
36678                 
36679                 ELSE null
36680               END                           object_type_code
36681             , CASE r
36685                 WHEN 4 THEN '8901' 
36682                 WHEN 1 THEN '200' 
36683                 WHEN 2 THEN '200' 
36684                 WHEN 3 THEN '8901' 
36686                 WHEN 5 THEN '8901' 
36687                 WHEN 6 THEN '8901' 
36688                 WHEN 7 THEN '200' 
36689                 WHEN 8 THEN '8901' 
36690                 WHEN 9 THEN '200' 
36691                 WHEN 10 THEN '200' 
36692                 WHEN 11 THEN '200' 
36693                 WHEN 12 THEN '8901' 
36694                 WHEN 13 THEN '200' 
36695                 WHEN 14 THEN '200' 
36696                 WHEN 15 THEN '200' 
36697                 WHEN 16 THEN '200' 
36698                 WHEN 17 THEN '200' 
36699                 WHEN 18 THEN '200' 
36700                 WHEN 19 THEN '200' 
36701                 WHEN 20 THEN '200' 
36702                 WHEN 21 THEN '200' 
36703                 WHEN 22 THEN '200' 
36704                 WHEN 23 THEN '200' 
36705                 WHEN 24 THEN '200' 
36706                 WHEN 25 THEN '200' 
36707                 WHEN 26 THEN '200' 
36708                 WHEN 27 THEN '200' 
36709                 WHEN 28 THEN '200' 
36710                 WHEN 29 THEN '8901' 
36711                 WHEN 30 THEN '200' 
36712                 WHEN 31 THEN '200' 
36713                 WHEN 32 THEN '200' 
36714                 WHEN 33 THEN '200' 
36715                 WHEN 34 THEN '200' 
36716                 WHEN 35 THEN '200' 
36717                 WHEN 36 THEN '200' 
36718                 WHEN 37 THEN '200' 
36719                 WHEN 38 THEN '200' 
36720                 WHEN 39 THEN '200' 
36721                 WHEN 40 THEN '200' 
36722                 WHEN 41 THEN '200' 
36723                 WHEN 42 THEN '8901' 
36724                 WHEN 43 THEN '200' 
36725                 WHEN 44 THEN '200' 
36726                 
36727                 ELSE null
36728               END                           source_application_id
36729             , 'S'             source_type_code
36730             , CASE r
36731                 WHEN 1 THEN 'AID_DESCRIPTION' 
36732                 WHEN 2 THEN 'AID_DIST_CCID' 
36733                 WHEN 3 THEN 'FEDERAL_ANTICIPATION' 
36734                 WHEN 4 THEN 'FEDERAL_FUND_CATEGORY' 
36735                 WHEN 5 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
36736                 WHEN 6 THEN 'FEDERAL_FUND_CAT_DESC' 
36737                 WHEN 7 THEN 'AID_LINE_TYPE_LOOKUP_CODE' 
36738                 WHEN 8 THEN 'FEDERAL_PRIOR_YEAR_FLAG' 
36739                 WHEN 9 THEN 'ENCUMBRANCE_AMOUNT' 
36740                 WHEN 10 THEN 'POD_ACCRUE_ON_RECEIPT_FLAG' 
36741                 WHEN 11 THEN 'PO_DISTRIBUTION_ID' 
36742                 WHEN 12 THEN 'FEDERAL_ADJUSTMENT_TYPE' 
36743                 WHEN 13 THEN 'DIST_ACCOUNT_REVERSAL_OPTION' 
36744                 WHEN 14 THEN 'DISTRIBUTION_LINK_TYPE' 
36745                 WHEN 15 THEN 'ALLOC_TO_MAIN_DIST_ID' 
36746                 WHEN 16 THEN 'BUS_FLOW_AP_APP_ID' 
36747                 WHEN 17 THEN 'BUS_FLOW_INV_DIST_TYPE' 
36748                 WHEN 18 THEN 'BUS_FLOW_INV_ENTITY_CODE' 
36749                 WHEN 19 THEN 'BUS_FLOW_INV_DIST_ID' 
36750                 WHEN 20 THEN 'BUS_FLOW_INV_ID' 
36751                 WHEN 21 THEN 'AID_INVOICE_DIST_ID' 
36752                 WHEN 22 THEN 'UPG_ENC_CR_CCID' 
36753                 WHEN 23 THEN 'UPG_ENC_CR_AMT' 
36754                 WHEN 24 THEN 'UPG_ENC_CR_BASE_AMT' 
36755                 WHEN 25 THEN 'UPG_ENC_DR_CCID' 
36756                 WHEN 26 THEN 'UPG_ENC_DR_AMT' 
36757                 WHEN 27 THEN 'UPG_ENC_DR_BASE_AMT' 
36758                 WHEN 28 THEN 'UPG_AP_ENCUM_OPTION' 
36759                 WHEN 29 THEN 'FEDERAL_ANTICIPATED_AMT' 
36760                 WHEN 30 THEN 'DEFERRED_END_DATE' 
36761                 WHEN 31 THEN 'DEFERRED_OPTION' 
36762                 WHEN 32 THEN 'DEFERRED_START_DATE' 
36763                 WHEN 33 THEN 'OVERRIDE_ACCTD_AMT_FLAG' 
36764                 WHEN 34 THEN 'AID_PARENT_REVERSAL_ID' 
36765                 WHEN 35 THEN 'AID_STAT_AMOUNT' 
36766                 WHEN 36 THEN 'TAX_LINE_ID' 
36767                 WHEN 37 THEN 'REC_NREC_TAX_DIST_ID' 
36768                 WHEN 38 THEN 'SUMMARY_TAX_LINE_ID' 
36769                 WHEN 39 THEN 'UPG_CR_ENC_TYPE_ID' 
36770                 WHEN 40 THEN 'UPG_DR_ENC_TYPE_ID' 
36771                 WHEN 41 THEN 'ENCUMBRANCE_BASE_AMOUNT' 
36772                 WHEN 42 THEN 'FEDERAL_UNANTICIPATED_AMT' 
36773                 WHEN 43 THEN 'AID_AMOUNT' 
36774                 WHEN 44 THEN 'INV_DIST_BASE_AMOUNT' 
36775                 
36776                 ELSE null
36777               END                           source_code
36778             , CASE r
36779                 WHEN 1 THEN TO_CHAR(l1.AID_DESCRIPTION)
36780                 WHEN 2 THEN TO_CHAR(l1.AID_DIST_CCID)
36781                 WHEN 3 THEN TO_CHAR(l3.FEDERAL_ANTICIPATION)
36782                 WHEN 4 THEN TO_CHAR(l3.FEDERAL_FUND_CATEGORY)
36783                 WHEN 5 THEN TO_CHAR(l3.FEDERAL_FUND_EXPIRED_STATUS)
36784                 WHEN 6 THEN TO_CHAR(l3.FEDERAL_FUND_CAT_DESC)
36785                 WHEN 7 THEN TO_CHAR(l1.AID_LINE_TYPE_LOOKUP_CODE)
36786                 WHEN 8 THEN TO_CHAR(l3.FEDERAL_PRIOR_YEAR_FLAG)
36787                 WHEN 9 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
36788                 WHEN 10 THEN TO_CHAR(l1.POD_ACCRUE_ON_RECEIPT_FLAG)
36789                 WHEN 11 THEN TO_CHAR(l1.PO_DISTRIBUTION_ID)
36790                 WHEN 12 THEN TO_CHAR(l3.FEDERAL_ADJUSTMENT_TYPE)
36791                 WHEN 13 THEN TO_CHAR(l1.DIST_ACCOUNT_REVERSAL_OPTION)
36792                 WHEN 14 THEN TO_CHAR(l1.DISTRIBUTION_LINK_TYPE)
36796                 WHEN 18 THEN TO_CHAR(l1.BUS_FLOW_INV_ENTITY_CODE)
36793                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_MAIN_DIST_ID)
36794                 WHEN 16 THEN TO_CHAR(l1.BUS_FLOW_AP_APP_ID)
36795                 WHEN 17 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_TYPE)
36797                 WHEN 19 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_ID)
36798                 WHEN 20 THEN TO_CHAR(l1.BUS_FLOW_INV_ID)
36799                 WHEN 21 THEN TO_CHAR(l1.AID_INVOICE_DIST_ID)
36800                 WHEN 22 THEN TO_CHAR(l1.UPG_ENC_CR_CCID)
36801                 WHEN 23 THEN TO_CHAR(l1.UPG_ENC_CR_AMT)
36802                 WHEN 24 THEN TO_CHAR(l1.UPG_ENC_CR_BASE_AMT)
36803                 WHEN 25 THEN TO_CHAR(l1.UPG_ENC_DR_CCID)
36804                 WHEN 26 THEN TO_CHAR(l1.UPG_ENC_DR_AMT)
36805                 WHEN 27 THEN TO_CHAR(l1.UPG_ENC_DR_BASE_AMT)
36806                 WHEN 28 THEN TO_CHAR(l1.UPG_AP_ENCUM_OPTION)
36807                 WHEN 29 THEN TO_CHAR(l3.FEDERAL_ANTICIPATED_AMT)
36808                 WHEN 30 THEN TO_CHAR(l1.DEFERRED_END_DATE)
36809                 WHEN 31 THEN TO_CHAR(l1.DEFERRED_OPTION)
36810                 WHEN 32 THEN TO_CHAR(l1.DEFERRED_START_DATE)
36811                 WHEN 33 THEN TO_CHAR(l1.OVERRIDE_ACCTD_AMT_FLAG)
36812                 WHEN 34 THEN TO_CHAR(l1.AID_PARENT_REVERSAL_ID)
36813                 WHEN 35 THEN TO_CHAR(l1.AID_STAT_AMOUNT)
36814                 WHEN 36 THEN TO_CHAR(l4.TAX_LINE_ID)
36815                 WHEN 37 THEN TO_CHAR(l5.REC_NREC_TAX_DIST_ID)
36816                 WHEN 38 THEN TO_CHAR(l1.SUMMARY_TAX_LINE_ID)
36817                 WHEN 39 THEN TO_CHAR(l1.UPG_CR_ENC_TYPE_ID)
36818                 WHEN 40 THEN TO_CHAR(l1.UPG_DR_ENC_TYPE_ID)
36819                 WHEN 41 THEN TO_CHAR(l1.ENCUMBRANCE_BASE_AMOUNT)
36820                 WHEN 42 THEN TO_CHAR(l3.FEDERAL_UNANTICIPATED_AMT)
36821                 WHEN 43 THEN TO_CHAR(l1.AID_AMOUNT)
36822                 WHEN 44 THEN TO_CHAR(l1.INV_DIST_BASE_AMOUNT)
36823                 
36824                 ELSE null
36825               END                           source_value
36826             , CASE r
36827                 WHEN 7 THEN fvl8.meaning
36828                 WHEN 10 THEN fvl11.meaning
36829                 WHEN 33 THEN fvl42.meaning
36830                 
36831                 ELSE null
36832               END               source_meaning
36833          FROM  xla_events_gt     xet  
36834         , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
36835         , FV_XLA_AP_REF_V  l3
36836         , ZX_AP_DEF_TAX_EXTRACT_V  l4
36837         , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
36838   , fnd_lookup_values    fvl8
36839   , fnd_lookup_values    fvl11
36840   , fnd_lookup_values    fvl42
36841             , (select rownum r from all_objects where rownum <= 44 and owner = p_apps_owner)
36842         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
36843           AND xet.event_class_code = C_EVENT_CLASS_CODE
36844             AND l1.event_id          = xet.event_id
36845  AND l3.federal_event_id (+) = l1.event_id  and l3.federal_line_number (+) = l1.line_number AND l1.zrnd_tax_dist_id = l4.rec_nrec_tax_dist_id (+)  AND l1.zrnd_tax_dist_id = l5.rec_nrec_tax_dist_id (+)    AND fvl8.lookup_type(+)         = 
36846 'INVOICE DISTRIBUTION TYPE'
36847   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
36848   AND fvl8.view_application_id(+) = 200
36849   AND fvl8.language(+)            = USERENV('LANG')
36850      AND fvl11.lookup_type(+)         = 'YES_NO'
36851   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
36852   AND fvl11.view_application_id(+) = 0
36853   AND fvl11.language(+)            = USERENV('LANG')
36854      AND fvl42.lookup_type(+)         = 'YES_NO'
36855   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
36856   AND fvl42.view_application_id(+) = 0
36857   AND fvl42.language(+)            = USERENV('LANG')
36858   
36859 )
36860 ;
36861 --
36862 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36863 
36864       trace
36865          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
36866          ,p_level    => C_LEVEL_STATEMENT
36867          ,p_module   => l_log_module);
36868 
36869 END IF;
36870 
36871 
36872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36873       trace
36874          (p_msg      => 'END of insert_sources_60'
36875          ,p_level    => C_LEVEL_PROCEDURE
36876          ,p_module   => l_log_module);
36877 END IF;
36878 EXCEPTION
36879   WHEN xla_exceptions_pkg.application_exception THEN
36880       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
36881             trace
36882                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
36883                ,p_level    => C_LEVEL_EXCEPTION
36884                ,p_module   => l_log_module);
36885       END IF;
36886       RAISE;
36887   WHEN OTHERS THEN
36888       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
36889             trace
36890                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
36891                ,p_level    => C_LEVEL_EXCEPTION
36892                ,p_module   => l_log_module);
36893        END IF;
36894        xla_exceptions_pkg.raise_message
36895            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.insert_sources_60');
36896 END insert_sources_60;
36897 --
36898 
36899 ---------------------------------------
36900 --
36901 -- PRIVATE FUNCTION
36902 --         EventClass_60
36903 --
36904 ----------------------------------------
36905 --
36906 FUNCTION EventClass_60
36907        (p_application_id         IN NUMBER
36911        ,p_currency_code          IN VARCHAR2
36908        ,p_base_ledger_id         IN NUMBER
36909        ,p_target_ledger_id       IN NUMBER
36910        ,p_language               IN VARCHAR2
36912        ,p_sla_ledger_id          IN NUMBER
36913        ,p_pad_start_date         IN DATE
36914        ,p_pad_end_date           IN DATE
36915        ,p_primary_ledger_id      IN NUMBER)
36916 RETURN BOOLEAN IS
36917 --
36918 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT MEMOS_ALL';
36919 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CREDIT MEMOS';
36920 
36921 l_calculate_acctd_flag   VARCHAR2(1) :='N';
36922 l_calculate_g_l_flag     VARCHAR2(1) :='N';
36923 --
36924 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36925 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36926 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
36927 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
36928 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36929 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
36930 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
36931 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36932 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36933 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36934 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36935 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36936 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36937 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
36938 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
36939 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
36940 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
36941 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
36942 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36943 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36944 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36945 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
36946 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
36947 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
36948 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
36949 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
36950 
36951 l_event_id                             NUMBER;
36952 l_previous_event_id                    NUMBER;
36953 l_first_event_id                       NUMBER;
36954 l_last_event_id                        NUMBER;
36955 
36956 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
36957 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
36958 --
36959 --
36960 l_result                    BOOLEAN := TRUE;
36961 l_rows                      NUMBER  := 1000;
36962 l_event_type_name           VARCHAR2(80) := 'All';
36963 l_event_class_name          VARCHAR2(80) := 'Credit Memos';
36964 l_description               VARCHAR2(4000);
36965 l_transaction_reversal      NUMBER;
36966 l_ae_header_id              NUMBER;
36967 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
36968 l_log_module                VARCHAR2(240);
36969 --
36970 l_acct_reversal_source      VARCHAR2(30);
36971 l_trx_reversal_source       VARCHAR2(30);
36972 
36973 l_continue_with_lines       BOOLEAN := TRUE;
36974 --
36975 l_acc_rev_gl_date_source    DATE;                      -- 4262811
36976 --
36977 type t_array_event_id is table of number index by binary_integer;
36978 
36979 l_rec_array_event                    t_rec_array_event;
36980 l_null_rec_array_event               t_rec_array_event;
36981 l_array_ae_header_id                 xla_number_array_type;
36982 l_actual_flag                        VARCHAR2(1) := NULL;
36983 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
36984 l_balance_type_code                  VARCHAR2(1) :=NULL;
36985 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
36986 
36987 --
36988 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
36989 --
36990 
36991 TYPE t_array_source_7 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_PAYMENT_STATUS_FLAG%TYPE INDEX BY BINARY_INTEGER;
36992 TYPE t_array_source_13 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
36993 TYPE t_array_source_20 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_ID%TYPE INDEX BY BINARY_INTEGER;
36994 TYPE t_array_source_29 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
36995 TYPE t_array_source_36 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
36996 TYPE t_array_source_37 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
36997 TYPE t_array_source_38 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
36998 TYPE t_array_source_43 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_ID%TYPE INDEX BY BINARY_INTEGER;
36999 TYPE t_array_source_44 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
37000 TYPE t_array_source_45 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.THIRD_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
37004 
37001 TYPE t_array_source_71 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
37002 TYPE t_array_source_72 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
37003 TYPE t_array_source_73 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
37005 TYPE t_array_source_1 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
37006 TYPE t_array_source_2 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
37007 TYPE t_array_source_3 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATION%TYPE INDEX BY BINARY_INTEGER;
37008 TYPE t_array_source_4 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
37009 TYPE t_array_source_5 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
37010 TYPE t_array_source_6 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CAT_DESC%TYPE INDEX BY BINARY_INTEGER;
37011 TYPE t_array_source_8 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_LINE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
37012 TYPE t_array_source_9 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_PRIOR_YEAR_FLAG%TYPE INDEX BY BINARY_INTEGER;
37013 TYPE t_array_source_10 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
37014 TYPE t_array_source_11 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.POD_ACCRUE_ON_RECEIPT_FLAG%TYPE INDEX BY BINARY_INTEGER;
37015 TYPE t_array_source_12 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
37016 TYPE t_array_source_14 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ADJUSTMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
37017 TYPE t_array_source_15 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DIST_ACCOUNT_REVERSAL_OPTION%TYPE INDEX BY BINARY_INTEGER;
37018 TYPE t_array_source_17 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
37019 TYPE t_array_source_19 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ALLOC_TO_MAIN_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
37020 TYPE t_array_source_21 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_AP_APP_ID%TYPE INDEX BY BINARY_INTEGER;
37021 TYPE t_array_source_22 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
37022 TYPE t_array_source_23 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
37023 TYPE t_array_source_24 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
37024 TYPE t_array_source_25 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ID%TYPE INDEX BY BINARY_INTEGER;
37025 TYPE t_array_source_26 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_INVOICE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
37026 TYPE t_array_source_27 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
37027 TYPE t_array_source_28 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_AMT%TYPE INDEX BY BINARY_INTEGER;
37028 TYPE t_array_source_30 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
37029 TYPE t_array_source_31 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
37030 TYPE t_array_source_32 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_AMT%TYPE INDEX BY BINARY_INTEGER;
37031 TYPE t_array_source_33 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
37032 TYPE t_array_source_34 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_AP_ENCUM_OPTION%TYPE INDEX BY BINARY_INTEGER;
37033 TYPE t_array_source_35 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
37034 TYPE t_array_source_39 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_END_DATE%TYPE INDEX BY BINARY_INTEGER;
37035 TYPE t_array_source_40 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_OPTION%TYPE INDEX BY BINARY_INTEGER;
37036 TYPE t_array_source_41 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_START_DATE%TYPE INDEX BY BINARY_INTEGER;
37037 TYPE t_array_source_42 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.OVERRIDE_ACCTD_AMT_FLAG%TYPE INDEX BY BINARY_INTEGER;
37038 TYPE t_array_source_46 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_PARENT_REVERSAL_ID%TYPE INDEX BY BINARY_INTEGER;
37039 TYPE t_array_source_47 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_STAT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
37040 TYPE t_array_source_48 IS TABLE OF ZX_AP_DEF_TAX_EXTRACT_V.TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
37041 TYPE t_array_source_49 IS TABLE OF ZX_AP_TAX_JRNL_LINE_DESC_V.REC_NREC_TAX_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
37042 TYPE t_array_source_50 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.SUMMARY_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
37043 TYPE t_array_source_51 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
37044 TYPE t_array_source_52 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
37045 TYPE t_array_source_53 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
37046 TYPE t_array_source_54 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_UNANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
37047 TYPE t_array_source_55 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
37048 TYPE t_array_source_56 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.INV_DIST_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
37049 
37050 l_array_source_7              t_array_source_7;
37051 l_array_source_13              t_array_source_13;
37052 l_array_source_13_meaning      t_array_lookup_meaning;
37053 l_array_source_20              t_array_source_20;
37054 l_array_source_29              t_array_source_29;
37055 l_array_source_36              t_array_source_36;
37056 l_array_source_37              t_array_source_37;
37057 l_array_source_38              t_array_source_38;
37058 l_array_source_43              t_array_source_43;
37062 l_array_source_72              t_array_source_72;
37059 l_array_source_44              t_array_source_44;
37060 l_array_source_45              t_array_source_45;
37061 l_array_source_71              t_array_source_71;
37063 l_array_source_73              t_array_source_73;
37064 
37065 l_array_source_1      t_array_source_1;
37066 l_array_source_2      t_array_source_2;
37067 l_array_source_3      t_array_source_3;
37068 l_array_source_4      t_array_source_4;
37069 l_array_source_5      t_array_source_5;
37070 l_array_source_6      t_array_source_6;
37071 l_array_source_8      t_array_source_8;
37072 l_array_source_8_meaning      t_array_lookup_meaning;
37073 l_array_source_9      t_array_source_9;
37074 l_array_source_10      t_array_source_10;
37075 l_array_source_11      t_array_source_11;
37076 l_array_source_11_meaning      t_array_lookup_meaning;
37077 l_array_source_12      t_array_source_12;
37078 l_array_source_14      t_array_source_14;
37079 l_array_source_15      t_array_source_15;
37080 l_array_source_17      t_array_source_17;
37081 l_array_source_19      t_array_source_19;
37082 l_array_source_21      t_array_source_21;
37083 l_array_source_22      t_array_source_22;
37084 l_array_source_23      t_array_source_23;
37085 l_array_source_24      t_array_source_24;
37086 l_array_source_25      t_array_source_25;
37087 l_array_source_26      t_array_source_26;
37088 l_array_source_27      t_array_source_27;
37089 l_array_source_28      t_array_source_28;
37090 l_array_source_30      t_array_source_30;
37091 l_array_source_31      t_array_source_31;
37092 l_array_source_32      t_array_source_32;
37093 l_array_source_33      t_array_source_33;
37094 l_array_source_34      t_array_source_34;
37095 l_array_source_35      t_array_source_35;
37096 l_array_source_39      t_array_source_39;
37097 l_array_source_40      t_array_source_40;
37098 l_array_source_41      t_array_source_41;
37099 l_array_source_42      t_array_source_42;
37100 l_array_source_42_meaning      t_array_lookup_meaning;
37101 l_array_source_46      t_array_source_46;
37102 l_array_source_47      t_array_source_47;
37103 l_array_source_48      t_array_source_48;
37104 l_array_source_49      t_array_source_49;
37105 l_array_source_50      t_array_source_50;
37106 l_array_source_51      t_array_source_51;
37107 l_array_source_52      t_array_source_52;
37108 l_array_source_53      t_array_source_53;
37109 l_array_source_54      t_array_source_54;
37110 l_array_source_55      t_array_source_55;
37111 l_array_source_56      t_array_source_56;
37112 
37113 --
37114 CURSOR header_cur
37115 IS
37116 SELECT /*+ leading(xet) cardinality(xet,1) */
37117 -- Event Class Code: CREDIT MEMOS
37118     xet.entity_id
37119    ,xet.legal_entity_id
37120    ,xet.entity_code
37121    ,xet.transaction_number
37122    ,xet.event_id
37123    ,xet.event_class_code
37124    ,xet.event_type_code
37125    ,xet.event_number
37126    ,xet.event_date
37127    ,xet.transaction_date
37128    ,xet.reference_num_1
37129    ,xet.reference_num_2
37130    ,xet.reference_num_3
37131    ,xet.reference_num_4
37132    ,xet.reference_char_1
37133    ,xet.reference_char_2
37134    ,xet.reference_char_3
37135    ,xet.reference_char_4
37136    ,xet.reference_date_1
37137    ,xet.reference_date_2
37138    ,xet.reference_date_3
37139    ,xet.reference_date_4
37140    ,xet.event_created_by
37141    ,xet.budgetary_control_flag 
37142   , h2.AI_PAYMENT_STATUS_FLAG    source_7
37143   , h2.AI_INVOICE_TYPE_LOOKUP_CODE    source_13
37144   , fvl13.meaning   source_13_meaning
37145   , h2.AI_INVOICE_ID    source_20
37146   , h2.AI_INVOICE_CURRENCY_CODE    source_29
37147   , h2.INV_EXCHANGE_DATE    source_36
37148   , h2.INV_EXCHANGE_RATE    source_37
37149   , h2.INV_EXCHANGE_RATE_TYPE    source_38
37150   , h2.AI_VENDOR_ID    source_43
37151   , h2.AI_VENDOR_SITE_ID    source_44
37152   , h2.THIRD_PARTY_TYPE    source_45
37153   , h2.INV_DOC_SEQUENCE_CATEGORY    source_71
37154   , h2.INV_DOC_SEQUENCE_IDENTIFIER    source_72
37155   , h2.INV_DOC_SEQUENCE_VALUE    source_73
37156   FROM xla_events_gt     xet 
37157   , AP_INVOICE_EXTRACT_HEADER_V  h2
37158   , fnd_lookup_values    fvl13
37159  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
37160    and xet.event_class_code = C_EVENT_CLASS_CODE
37161    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
37162    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
37163   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
37164   AND fvl13.view_application_id(+) = 200
37165   AND fvl13.language(+)            = USERENV('LANG')
37166   
37167  ORDER BY event_id
37168 ;
37169 
37170 
37171 --
37172 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
37173 IS
37174 SELECT  /*+ leading(xet) cardinality(xet,1) */
37175 -- Event Class Code: CREDIT MEMOS
37176     xet.entity_id
37177    ,xet.legal_entity_id
37178    ,xet.entity_code
37179    ,xet.transaction_number
37180    ,xet.event_id
37181    ,xet.event_class_code
37182    ,xet.event_type_code
37183    ,xet.event_number
37184    ,xet.event_date
37185    ,xet.transaction_date
37186    ,xet.reference_num_1
37187    ,xet.reference_num_2
37188    ,xet.reference_num_3
37189    ,xet.reference_num_4
37190    ,xet.reference_char_1
37191    ,xet.reference_char_2
37192    ,xet.reference_char_3
37193    ,xet.reference_char_4
37197    ,xet.reference_date_4
37194    ,xet.reference_date_1
37195    ,xet.reference_date_2
37196    ,xet.reference_date_3
37198    ,xet.event_created_by
37199    ,xet.budgetary_control_flag
37200  , l1.LINE_NUMBER  
37201   , l1.AID_DESCRIPTION    source_1
37202   , l1.AID_DIST_CCID    source_2
37203   , l3.FEDERAL_ANTICIPATION    source_3
37204   , l3.FEDERAL_FUND_CATEGORY    source_4
37205   , l3.FEDERAL_FUND_EXPIRED_STATUS    source_5
37206   , l3.FEDERAL_FUND_CAT_DESC    source_6
37207   , l1.AID_LINE_TYPE_LOOKUP_CODE    source_8
37208   , fvl8.meaning   source_8_meaning
37209   , l3.FEDERAL_PRIOR_YEAR_FLAG    source_9
37210   , l1.ENCUMBRANCE_AMOUNT    source_10
37211   , l1.POD_ACCRUE_ON_RECEIPT_FLAG    source_11
37212   , fvl11.meaning   source_11_meaning
37213   , l1.PO_DISTRIBUTION_ID    source_12
37214   , l3.FEDERAL_ADJUSTMENT_TYPE    source_14
37215   , l1.DIST_ACCOUNT_REVERSAL_OPTION    source_15
37216   , l1.DISTRIBUTION_LINK_TYPE    source_17
37217   , l1.ALLOC_TO_MAIN_DIST_ID    source_19
37218   , l1.BUS_FLOW_AP_APP_ID    source_21
37219   , l1.BUS_FLOW_INV_DIST_TYPE    source_22
37220   , l1.BUS_FLOW_INV_ENTITY_CODE    source_23
37221   , l1.BUS_FLOW_INV_DIST_ID    source_24
37222   , l1.BUS_FLOW_INV_ID    source_25
37223   , l1.AID_INVOICE_DIST_ID    source_26
37224   , l1.UPG_ENC_CR_CCID    source_27
37225   , l1.UPG_ENC_CR_AMT    source_28
37226   , l1.UPG_ENC_CR_BASE_AMT    source_30
37227   , l1.UPG_ENC_DR_CCID    source_31
37228   , l1.UPG_ENC_DR_AMT    source_32
37229   , l1.UPG_ENC_DR_BASE_AMT    source_33
37230   , l1.UPG_AP_ENCUM_OPTION    source_34
37231   , l3.FEDERAL_ANTICIPATED_AMT    source_35
37232   , l1.DEFERRED_END_DATE    source_39
37233   , l1.DEFERRED_OPTION    source_40
37234   , l1.DEFERRED_START_DATE    source_41
37235   , l1.OVERRIDE_ACCTD_AMT_FLAG    source_42
37236   , fvl42.meaning   source_42_meaning
37237   , l1.AID_PARENT_REVERSAL_ID    source_46
37238   , l1.AID_STAT_AMOUNT    source_47
37239   , l4.TAX_LINE_ID    source_48
37240   , l5.REC_NREC_TAX_DIST_ID    source_49
37241   , l1.SUMMARY_TAX_LINE_ID    source_50
37242   , l1.UPG_CR_ENC_TYPE_ID    source_51
37243   , l1.UPG_DR_ENC_TYPE_ID    source_52
37244   , l1.ENCUMBRANCE_BASE_AMOUNT    source_53
37245   , l3.FEDERAL_UNANTICIPATED_AMT    source_54
37246   , l1.AID_AMOUNT    source_55
37247   , l1.INV_DIST_BASE_AMOUNT    source_56
37248   FROM xla_events_gt     xet 
37249   , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
37250   , FV_XLA_AP_REF_V  l3
37251   , ZX_AP_DEF_TAX_EXTRACT_V  l4
37252   , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
37253   , fnd_lookup_values    fvl8
37254   , fnd_lookup_values    fvl11
37255   , fnd_lookup_values    fvl42
37256  WHERE xet.event_id between x_first_event_id and x_last_event_id
37257    and xet.event_date between p_pad_start_date and p_pad_end_date
37258    and xet.event_class_code = C_EVENT_CLASS_CODE
37259    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
37260  AND l3.Federal_Event_Id (+) = l1.event_Id  AND l3.Federal_line_number (+) = l1.line_number AND l1.ZRND_tax_dist_id = l4.REC_NREC_TAX_DIST_ID (+)  AND l1.ZRND_tax_dist_id = l5.REC_NREC_TAX_DIST_ID (+)    AND fvl8.lookup_type(+)         = 
37261 'INVOICE DISTRIBUTION TYPE'
37262   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
37263   AND fvl8.view_application_id(+) = 200
37264   AND fvl8.language(+)            = USERENV('LANG')
37265      AND fvl11.lookup_type(+)         = 'YES_NO'
37266   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
37267   AND fvl11.view_application_id(+) = 0
37268   AND fvl11.language(+)            = USERENV('LANG')
37269      AND fvl42.lookup_type(+)         = 'YES_NO'
37270   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
37271   AND fvl42.view_application_id(+) = 0
37272   AND fvl42.language(+)            = USERENV('LANG')
37273   ;
37274 
37275 --
37276 BEGIN
37277 IF g_log_enabled THEN
37278    l_log_module := C_DEFAULT_MODULE||'.EventClass_60';
37279 END IF;
37280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37281    trace
37282       (p_msg      => 'BEGIN of EventClass_60'
37283       ,p_level    => C_LEVEL_PROCEDURE
37284       ,p_module   => l_log_module);
37285 END IF;
37286 
37287 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
37288    trace
37289       (p_msg      => 'p_application_id = '||p_application_id||
37290                      ' - p_base_ledger_id = '||p_base_ledger_id||
37291                      ' - p_target_ledger_id  = '||p_target_ledger_id||
37292                      ' - p_language = '||p_language||
37293                      ' - p_currency_code = '||p_currency_code||
37294                      ' - p_sla_ledger_id = '||p_sla_ledger_id
37295       ,p_level    => C_LEVEL_STATEMENT
37296       ,p_module   => l_log_module);
37297 END IF;
37298 --
37299 -- initialze arrays
37300 --
37301 g_array_event.DELETE;
37302 l_rec_array_event := l_null_rec_array_event;
37303 --
37304 --------------------------------------
37305 -- 4262811 Initialze MPA Line Number
37306 --------------------------------------
37307 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
37308 
37309 --
37310 
37311 --
37312 OPEN header_cur;
37313 --
37314 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
37315    trace
37316    (p_msg      => 'SQL - FETCH header_cur'
37317    ,p_level    => C_LEVEL_STATEMENT
37318    ,p_module   => l_log_module);
37319 END IF;
37320 --
37324       , l_array_legal_entity_id
37321 LOOP
37322 FETCH header_cur BULK COLLECT INTO
37323         l_array_entity_id
37325       , l_array_entity_code
37326       , l_array_transaction_num
37327       , l_array_event_id
37328       , l_array_class_code
37329       , l_array_event_type
37330       , l_array_event_number
37331       , l_array_event_date
37332       , l_array_transaction_date
37333       , l_array_reference_num_1
37334       , l_array_reference_num_2
37335       , l_array_reference_num_3
37336       , l_array_reference_num_4
37337       , l_array_reference_char_1
37338       , l_array_reference_char_2
37339       , l_array_reference_char_3
37340       , l_array_reference_char_4
37341       , l_array_reference_date_1
37342       , l_array_reference_date_2
37343       , l_array_reference_date_3
37344       , l_array_reference_date_4
37345       , l_array_event_created_by
37346       , l_array_budgetary_control_flag 
37347       , l_array_source_7
37348       , l_array_source_13
37349       , l_array_source_13_meaning
37350       , l_array_source_20
37351       , l_array_source_29
37352       , l_array_source_36
37353       , l_array_source_37
37354       , l_array_source_38
37355       , l_array_source_43
37356       , l_array_source_44
37357       , l_array_source_45
37358       , l_array_source_71
37359       , l_array_source_72
37360       , l_array_source_73
37361       LIMIT l_rows;
37362 --
37363 IF (C_LEVEL_EVENT >= g_log_level) THEN
37364    trace
37365    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
37366    ,p_level    => C_LEVEL_EVENT
37367    ,p_module   => l_log_module);
37368 END IF;
37369 --
37370 EXIT WHEN l_array_entity_id.COUNT = 0;
37371 
37372 -- initialize arrays
37373 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
37374 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
37375 
37376 --
37377 -- Bug 4458708
37378 --
37379 XLA_AE_LINES_PKG.g_LineNumber := 0;
37380 
37381 
37382 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
37383 g_last_hdr_idx := l_array_event_id.LAST;
37384 --
37385 -- loop for the headers. Each iteration is for each header extract row
37386 -- fetched in header cursor
37387 --
37388 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
37389 
37390 --
37391 -- set event info as cache for other routines to refer event attributes
37392 --
37393 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
37394    (p_application_id           => p_application_id
37395    ,p_primary_ledger_id        => p_primary_ledger_id
37396    ,p_base_ledger_id           => p_base_ledger_id
37397    ,p_target_ledger_id         => p_target_ledger_id
37398    ,p_entity_id                => l_array_entity_id(hdr_idx)
37399    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
37400    ,p_entity_code              => l_array_entity_code(hdr_idx)
37401    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
37402    ,p_event_id                 => l_array_event_id(hdr_idx)
37403    ,p_event_class_code         => l_array_class_code(hdr_idx)
37404    ,p_event_type_code          => l_array_event_type(hdr_idx)
37405    ,p_event_number             => l_array_event_number(hdr_idx)
37406    ,p_event_date               => l_array_event_date(hdr_idx)
37407    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
37408    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
37409    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
37410    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
37411    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
37412    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
37413    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
37414    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
37415    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
37416    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
37417    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
37418    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
37419    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
37420    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
37421    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
37422 
37423 --
37424 -- set the status of entry to C_VALID (0)
37425 --
37426 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
37427 
37428 --
37429 -- initialize a row for ae header
37430 --
37431 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
37432 
37433 l_event_id := l_array_event_id(hdr_idx);
37434 
37435 --
37436 -- storing the hdr_idx for event. May be used by line cursor.
37437 --
37438 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
37439 
37440 --
37441 -- store sources from header extract. This can be improved to
37442 -- store only those sources from header extract that may be used in lines
37443 --
37444 
37445 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
37446 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
37447 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
37448 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
37452 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
37449 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
37450 g_array_event(l_event_id).array_value_date('source_36') := l_array_source_36(hdr_idx);
37451 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
37453 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
37454 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
37455 g_array_event(l_event_id).array_value_char('source_45') := l_array_source_45(hdr_idx);
37456 g_array_event(l_event_id).array_value_char('source_71') := l_array_source_71(hdr_idx);
37457 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
37458 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
37459 
37460 --
37461 -- initilaize the status of ae headers for diffrent balance types
37462 -- the status is initialised to C_NOT_CREATED (2)
37463 --
37464 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
37465 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
37466 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
37467 
37468 --
37469 -- call api to validate and store accounting attributes for header
37470 --
37471 
37472 ------------------------------------------------------------
37473 -- Accrual Reversal : to get date for Standard Source (NONE)
37474 ------------------------------------------------------------
37475 l_acc_rev_gl_date_source := NULL;
37476 
37477      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
37478       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_71');
37479      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
37480       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_72');
37481      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
37482       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_73');
37483      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
37484       l_rec_acct_attrs.array_date_value(4) := 
37485 xla_ae_sources_pkg.GetSystemSourceDate(
37486    p_source_code           => 'XLA_EVENT_DATE'
37487  , p_source_type_code      => 'Y'
37488  , p_source_application_id =>  602
37489 );
37490 
37491 
37492 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
37493 
37494 XLA_AE_HEADER_PKG.SetJeCategoryName;
37495 
37496 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
37497 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
37498 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
37499 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
37500 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
37501 
37502 
37503 --
37504 xla_ae_header_pkg.SetHdrDescription(
37505    p_description => Description_1 (
37506    p_application_id => p_application_id 
37507    )
37508 );
37509 --
37510 
37511 -- No header level analytical criteria
37512 
37513 --
37514 --accounting attribute enhancement, bug 3612931
37515 --
37516 l_trx_reversal_source := SUBSTR(NULL, 1,30);
37517 
37518 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
37519    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
37520 
37521    xla_accounting_err_pkg.build_message
37522       (p_appli_s_name            => 'XLA'
37523       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
37524       ,p_token_1                 => 'ACCT_ATTR_NAME'
37525       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
37526       ,p_token_2                 => 'PRODUCT_NAME'
37527       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
37528       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
37529       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
37530       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
37531 
37532 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
37533    --
37534    -- following sets the accounting attributes needed to reverse
37535    -- accounting for a distributeion
37536    --
37537    xla_ae_lines_pkg.SetTrxReversalAttrs
37538       (p_event_id              => l_event_id
37539       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
37540       ,p_trx_reversal_source   => l_trx_reversal_source);
37541 
37542 END IF;
37543 
37544 
37545 ----------------------------------------------------------------
37546 -- 4262811 -  update the header statuses to invalid in need be
37547 ----------------------------------------------------------------
37548 --
37549 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
37550 
37551 
37552   -----------------------------------------------
37553   -- No accrual reversal for the event class/type
37554   -----------------------------------------------
37555 ----------------------------------------------------------------
37556 
37557 --
37558 -- this ends the header loop iteration for one bulk fetch
37559 --
37560 END LOOP;
37564 
37561 
37562 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
37563 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
37565 --
37566 -- insert dummy rows into lines gt table that were created due to
37567 -- transaction reversals
37568 --
37569 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
37570    l_result := XLA_AE_LINES_PKG.InsertLines;
37571 END IF;
37572 
37573 --
37574 -- reset the temp_line_num for each set of events fetched from header
37575 -- cursor rather than doing it for each new event in line cursor
37576 -- Bug 3939231
37577 --
37578 xla_ae_lines_pkg.g_temp_line_num := 0;
37579 
37580 
37581 
37582 --
37583 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
37584 --
37585 --
37586 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
37587 
37588       trace
37589          (p_msg      => 'SQL - FETCH line_cur'
37590          ,p_level    => C_LEVEL_STATEMENT
37591          ,p_module   => l_log_module);
37592 
37593 END IF;
37594 --
37595 --
37596 LOOP
37597   --
37598   FETCH line_cur BULK COLLECT INTO
37599         l_array_entity_id
37600       , l_array_legal_entity_id
37601       , l_array_entity_code
37602       , l_array_transaction_num
37603       , l_array_event_id
37604       , l_array_class_code
37605       , l_array_event_type
37606       , l_array_event_number
37607       , l_array_event_date
37608       , l_array_transaction_date
37609       , l_array_reference_num_1
37610       , l_array_reference_num_2
37611       , l_array_reference_num_3
37612       , l_array_reference_num_4
37613       , l_array_reference_char_1
37614       , l_array_reference_char_2
37615       , l_array_reference_char_3
37616       , l_array_reference_char_4
37617       , l_array_reference_date_1
37618       , l_array_reference_date_2
37619       , l_array_reference_date_3
37620       , l_array_reference_date_4
37621       , l_array_event_created_by
37622       , l_array_budgetary_control_flag
37623       , l_array_extract_line_num 
37624       , l_array_source_1
37625       , l_array_source_2
37626       , l_array_source_3
37627       , l_array_source_4
37628       , l_array_source_5
37629       , l_array_source_6
37630       , l_array_source_8
37631       , l_array_source_8_meaning
37632       , l_array_source_9
37633       , l_array_source_10
37634       , l_array_source_11
37635       , l_array_source_11_meaning
37636       , l_array_source_12
37637       , l_array_source_14
37638       , l_array_source_15
37639       , l_array_source_17
37640       , l_array_source_19
37641       , l_array_source_21
37642       , l_array_source_22
37643       , l_array_source_23
37644       , l_array_source_24
37645       , l_array_source_25
37646       , l_array_source_26
37647       , l_array_source_27
37648       , l_array_source_28
37649       , l_array_source_30
37650       , l_array_source_31
37651       , l_array_source_32
37652       , l_array_source_33
37653       , l_array_source_34
37654       , l_array_source_35
37655       , l_array_source_39
37656       , l_array_source_40
37657       , l_array_source_41
37658       , l_array_source_42
37659       , l_array_source_42_meaning
37660       , l_array_source_46
37661       , l_array_source_47
37662       , l_array_source_48
37663       , l_array_source_49
37664       , l_array_source_50
37665       , l_array_source_51
37666       , l_array_source_52
37667       , l_array_source_53
37668       , l_array_source_54
37669       , l_array_source_55
37670       , l_array_source_56
37671       LIMIT l_rows;
37672 
37673   --
37674   IF (C_LEVEL_EVENT >= g_log_level) THEN
37675             trace
37676                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
37677                ,p_level    => C_LEVEL_EVENT
37678                ,p_module   => l_log_module);
37679   END IF;
37680   --
37681   EXIT WHEN l_array_entity_id.count = 0;
37682 
37683   XLA_AE_LINES_PKG.g_rec_lines := null;
37684 
37685 --
37686 -- Bug 4458708
37687 --
37688 XLA_AE_LINES_PKG.g_LineNumber := 0;
37689 --
37690 --
37691 
37692 FOR Idx IN 1..l_array_event_id.count LOOP
37693    --
37694    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
37695    --
37696    l_event_id := l_array_event_id(idx);  -- 5648433
37697 
37698    --
37699    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
37700    --
37701 
37702    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
37703              (g_array_event(l_event_id).array_value_num('header_index'))
37704          ,'N'
37705          ) <> 'Y'
37706    THEN
37707       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
37708          trace
37709             (p_msg      => 'Trancaction revesal option is not Y '
37710             ,p_level    => C_LEVEL_STATEMENT
37711             ,p_module   => l_log_module);
37712       END IF;
37713 
37714 --
37715 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
37716 --
37717 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
37718 --
37719 -- set event info as cache for other routines to refer event attributes
37723    l_previous_event_id := l_event_id;
37720 --
37721 
37722 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
37724 
37725    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
37726       (p_application_id           => p_application_id
37727       ,p_primary_ledger_id        => p_primary_ledger_id
37728       ,p_base_ledger_id           => p_base_ledger_id
37729       ,p_target_ledger_id         => p_target_ledger_id
37730       ,p_entity_id                => l_array_entity_id(Idx)
37731       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
37732       ,p_entity_code              => l_array_entity_code(Idx)
37733       ,p_transaction_num          => l_array_transaction_num(Idx)
37734       ,p_event_id                 => l_array_event_id(Idx)
37735       ,p_event_class_code         => l_array_class_code(Idx)
37736       ,p_event_type_code          => l_array_event_type(Idx)
37737       ,p_event_number             => l_array_event_number(Idx)
37738       ,p_event_date               => l_array_event_date(Idx)
37739       ,p_transaction_date         => l_array_transaction_date(Idx)
37740       ,p_reference_num_1          => l_array_reference_num_1(Idx)
37741       ,p_reference_num_2          => l_array_reference_num_2(Idx)
37742       ,p_reference_num_3          => l_array_reference_num_3(Idx)
37743       ,p_reference_num_4          => l_array_reference_num_4(Idx)
37744       ,p_reference_char_1         => l_array_reference_char_1(Idx)
37745       ,p_reference_char_2         => l_array_reference_char_2(Idx)
37746       ,p_reference_char_3         => l_array_reference_char_3(Idx)
37747       ,p_reference_char_4         => l_array_reference_char_4(Idx)
37748       ,p_reference_date_1         => l_array_reference_date_1(Idx)
37749       ,p_reference_date_2         => l_array_reference_date_2(Idx)
37750       ,p_reference_date_3         => l_array_reference_date_3(Idx)
37751       ,p_reference_date_4         => l_array_reference_date_4(Idx)
37752       ,p_event_created_by         => l_array_event_created_by(Idx)
37753       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
37754        --
37755 END IF;
37756 
37757 
37758 
37759 --
37760 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
37761 
37762 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
37763 
37764 IF l_continue_with_lines THEN
37765    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
37766       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
37767 
37768       xla_accounting_err_pkg.build_message
37769          (p_appli_s_name            => 'XLA'
37770          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
37771          ,p_token_1                 => 'LINE_NUMBER'
37772          ,p_value_1                 => l_array_extract_line_num(Idx)
37773          ,p_token_2                 => 'PRODUCT_NAME'
37774          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
37775          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
37776          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
37777          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
37778 
37779    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
37780       --
37781       -- following sets the accounting attributes needed to reverse
37782       -- accounting for a distributeion
37783       --
37784 
37785       --
37786       -- 5217187
37787       --
37788       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
37789       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
37790                                        g_array_event(l_event_id).array_value_num('header_index'));
37791       --
37792       --
37793 
37794       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
37795       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
37796       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
37797       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_26(Idx);
37798       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
37799       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
37800       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
37801       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_27(Idx);
37802       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
37803       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_28(Idx);
37804       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
37805       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_29');
37806       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
37807       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_30(Idx);
37808       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
37809       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_31(Idx);
37810       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
37811       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_32(Idx);
37812       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
37813       l_rec_rev_acct_attrs.array_char_value(11)  := g_array_event(l_event_id).array_value_char('source_29');
37814       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
37815       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_33(Idx);
37819       l_rec_rev_acct_attrs.array_char_value(14)  := g_array_event(l_event_id).array_value_char('source_45');
37816       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
37817       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_34(Idx);
37818       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'PARTY_TYPE';
37820       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
37821       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_46(Idx);
37822       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
37823       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_17(Idx);
37824       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'TAX_LINE_REF_ID';
37825       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_48(Idx);
37826       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'TAX_REC_NREC_DIST_REF_ID';
37827       l_rec_rev_acct_attrs.array_num_value(18)  := l_array_source_49(Idx);
37828       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'TAX_SUMMARY_LINE_REF_ID';
37829       l_rec_rev_acct_attrs.array_num_value(19)  := l_array_source_50(Idx);
37830       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
37831       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_51(Idx);
37832       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
37833       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_52(Idx);
37834 
37835 
37836       xla_ae_lines_pkg.SetAcctReversalAttrs
37837          (p_event_id             => l_event_id
37838          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
37839          ,p_calculate_acctd_flag => l_calculate_acctd_flag
37840          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
37841    END IF;
37842 
37843    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
37844        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
37845 
37846 --
37847 AcctLineType_17 (
37848  p_application_id  => p_application_id
37849  ,p_event_id     => l_event_id
37850  ,p_calculate_acctd_flag => l_calculate_acctd_flag
37851  ,p_calculate_g_l_flag => l_calculate_g_l_flag
37852  ,p_actual_flag => l_actual_flag
37853  ,p_balance_type_code => l_balance_type_code
37854  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
37855  
37856  , p_source_1 => l_array_source_1(Idx)
37857  , p_source_2 => l_array_source_2(Idx)
37858  , p_source_3 => l_array_source_3(Idx)
37859  , p_source_8 => l_array_source_8(Idx)
37860  , p_source_8_meaning => l_array_source_8_meaning(Idx)
37861  , p_source_9 => l_array_source_9(Idx)
37862  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
37863  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
37864  , p_source_14 => l_array_source_14(Idx)
37865  , p_source_15 => l_array_source_15(Idx)
37866  , p_source_17 => l_array_source_17(Idx)
37867  , p_source_19 => l_array_source_19(Idx)
37868  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
37869  , p_source_21 => l_array_source_21(Idx)
37870  , p_source_22 => l_array_source_22(Idx)
37871  , p_source_23 => l_array_source_23(Idx)
37872  , p_source_24 => l_array_source_24(Idx)
37873  , p_source_25 => l_array_source_25(Idx)
37874  , p_source_26 => l_array_source_26(Idx)
37875  , p_source_27 => l_array_source_27(Idx)
37876  , p_source_28 => l_array_source_28(Idx)
37877  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
37878  , p_source_30 => l_array_source_30(Idx)
37879  , p_source_31 => l_array_source_31(Idx)
37880  , p_source_32 => l_array_source_32(Idx)
37881  , p_source_33 => l_array_source_33(Idx)
37882  , p_source_34 => l_array_source_34(Idx)
37883  , p_source_35 => l_array_source_35(Idx)
37884  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
37885  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
37886  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
37887  , p_source_39 => l_array_source_39(Idx)
37888  , p_source_40 => l_array_source_40(Idx)
37889  , p_source_41 => l_array_source_41(Idx)
37890  , p_source_42 => l_array_source_42(Idx)
37891  , p_source_42_meaning => l_array_source_42_meaning(Idx)
37892  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
37893  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
37894  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
37895  , p_source_46 => l_array_source_46(Idx)
37896  , p_source_47 => l_array_source_47(Idx)
37897  , p_source_48 => l_array_source_48(Idx)
37898  , p_source_49 => l_array_source_49(Idx)
37899  , p_source_50 => l_array_source_50(Idx)
37900  , p_source_51 => l_array_source_51(Idx)
37901  , p_source_52 => l_array_source_52(Idx)
37902  );
37903 If(l_balance_type_code = 'A') THEN
37904   l_actual_gain_loss_ref := l_gain_or_loss_ref;
37905 END IF;
37906 
37907 --
37908 
37909 
37910 --
37911 AcctLineType_18 (
37912  p_application_id  => p_application_id
37913  ,p_event_id     => l_event_id
37914  ,p_calculate_acctd_flag => l_calculate_acctd_flag
37915  ,p_calculate_g_l_flag => l_calculate_g_l_flag
37916  ,p_actual_flag => l_actual_flag
37917  ,p_balance_type_code => l_balance_type_code
37918  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
37919  
37920  , p_source_1 => l_array_source_1(Idx)
37921  , p_source_2 => l_array_source_2(Idx)
37922  , p_source_8 => l_array_source_8(Idx)
37923  , p_source_8_meaning => l_array_source_8_meaning(Idx)
37927  , p_source_14 => l_array_source_14(Idx)
37924  , p_source_9 => l_array_source_9(Idx)
37925  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
37926  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
37928  , p_source_15 => l_array_source_15(Idx)
37929  , p_source_17 => l_array_source_17(Idx)
37930  , p_source_19 => l_array_source_19(Idx)
37931  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
37932  , p_source_21 => l_array_source_21(Idx)
37933  , p_source_22 => l_array_source_22(Idx)
37934  , p_source_23 => l_array_source_23(Idx)
37935  , p_source_24 => l_array_source_24(Idx)
37936  , p_source_25 => l_array_source_25(Idx)
37937  , p_source_26 => l_array_source_26(Idx)
37938  , p_source_27 => l_array_source_27(Idx)
37939  , p_source_28 => l_array_source_28(Idx)
37940  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
37941  , p_source_30 => l_array_source_30(Idx)
37942  , p_source_31 => l_array_source_31(Idx)
37943  , p_source_32 => l_array_source_32(Idx)
37944  , p_source_33 => l_array_source_33(Idx)
37945  , p_source_34 => l_array_source_34(Idx)
37946  , p_source_35 => l_array_source_35(Idx)
37947  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
37948  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
37949  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
37950  , p_source_39 => l_array_source_39(Idx)
37951  , p_source_40 => l_array_source_40(Idx)
37952  , p_source_41 => l_array_source_41(Idx)
37953  , p_source_42 => l_array_source_42(Idx)
37954  , p_source_42_meaning => l_array_source_42_meaning(Idx)
37955  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
37956  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
37957  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
37958  , p_source_46 => l_array_source_46(Idx)
37959  , p_source_47 => l_array_source_47(Idx)
37960  , p_source_48 => l_array_source_48(Idx)
37961  , p_source_49 => l_array_source_49(Idx)
37962  , p_source_50 => l_array_source_50(Idx)
37963  , p_source_51 => l_array_source_51(Idx)
37964  , p_source_52 => l_array_source_52(Idx)
37965  , p_source_53 => l_array_source_53(Idx)
37966  );
37967 If(l_balance_type_code = 'A') THEN
37968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
37969 END IF;
37970 
37971 --
37972 
37973 
37974 --
37975 AcctLineType_19 (
37976  p_application_id  => p_application_id
37977  ,p_event_id     => l_event_id
37978  ,p_calculate_acctd_flag => l_calculate_acctd_flag
37979  ,p_calculate_g_l_flag => l_calculate_g_l_flag
37980  ,p_actual_flag => l_actual_flag
37981  ,p_balance_type_code => l_balance_type_code
37982  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
37983  
37984  , p_source_1 => l_array_source_1(Idx)
37985  , p_source_2 => l_array_source_2(Idx)
37986  , p_source_3 => l_array_source_3(Idx)
37987  , p_source_8 => l_array_source_8(Idx)
37988  , p_source_8_meaning => l_array_source_8_meaning(Idx)
37989  , p_source_9 => l_array_source_9(Idx)
37990  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
37991  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
37992  , p_source_14 => l_array_source_14(Idx)
37993  , p_source_15 => l_array_source_15(Idx)
37994  , p_source_17 => l_array_source_17(Idx)
37995  , p_source_19 => l_array_source_19(Idx)
37996  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
37997  , p_source_21 => l_array_source_21(Idx)
37998  , p_source_22 => l_array_source_22(Idx)
37999  , p_source_23 => l_array_source_23(Idx)
38000  , p_source_24 => l_array_source_24(Idx)
38001  , p_source_25 => l_array_source_25(Idx)
38002  , p_source_26 => l_array_source_26(Idx)
38003  , p_source_27 => l_array_source_27(Idx)
38004  , p_source_28 => l_array_source_28(Idx)
38005  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38006  , p_source_30 => l_array_source_30(Idx)
38007  , p_source_31 => l_array_source_31(Idx)
38008  , p_source_32 => l_array_source_32(Idx)
38009  , p_source_33 => l_array_source_33(Idx)
38010  , p_source_34 => l_array_source_34(Idx)
38011  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38012  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38013  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38014  , p_source_39 => l_array_source_39(Idx)
38015  , p_source_40 => l_array_source_40(Idx)
38016  , p_source_41 => l_array_source_41(Idx)
38017  , p_source_42 => l_array_source_42(Idx)
38018  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38019  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38020  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38021  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38022  , p_source_46 => l_array_source_46(Idx)
38023  , p_source_47 => l_array_source_47(Idx)
38024  , p_source_48 => l_array_source_48(Idx)
38025  , p_source_49 => l_array_source_49(Idx)
38026  , p_source_50 => l_array_source_50(Idx)
38027  , p_source_51 => l_array_source_51(Idx)
38028  , p_source_52 => l_array_source_52(Idx)
38029  , p_source_54 => l_array_source_54(Idx)
38030  );
38031 If(l_balance_type_code = 'A') THEN
38032   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38033 END IF;
38034 
38035 --
38036 
38037 
38038 --
38039 AcctLineType_20 (
38043  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38040  p_application_id  => p_application_id
38041  ,p_event_id     => l_event_id
38042  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38044  ,p_actual_flag => l_actual_flag
38045  ,p_balance_type_code => l_balance_type_code
38046  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38047  
38048  , p_source_1 => l_array_source_1(Idx)
38049  , p_source_2 => l_array_source_2(Idx)
38050  , p_source_8 => l_array_source_8(Idx)
38051  , p_source_8_meaning => l_array_source_8_meaning(Idx)
38052  , p_source_9 => l_array_source_9(Idx)
38053  , p_source_11 => l_array_source_11(Idx)
38054  , p_source_11_meaning => l_array_source_11_meaning(Idx)
38055  , p_source_12 => l_array_source_12(Idx)
38056  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
38057  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
38058  , p_source_14 => l_array_source_14(Idx)
38059  , p_source_15 => l_array_source_15(Idx)
38060  , p_source_17 => l_array_source_17(Idx)
38061  , p_source_19 => l_array_source_19(Idx)
38062  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38063  , p_source_21 => l_array_source_21(Idx)
38064  , p_source_22 => l_array_source_22(Idx)
38065  , p_source_23 => l_array_source_23(Idx)
38066  , p_source_24 => l_array_source_24(Idx)
38067  , p_source_25 => l_array_source_25(Idx)
38068  , p_source_26 => l_array_source_26(Idx)
38069  , p_source_27 => l_array_source_27(Idx)
38070  , p_source_28 => l_array_source_28(Idx)
38071  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38072  , p_source_30 => l_array_source_30(Idx)
38073  , p_source_31 => l_array_source_31(Idx)
38074  , p_source_32 => l_array_source_32(Idx)
38075  , p_source_33 => l_array_source_33(Idx)
38076  , p_source_34 => l_array_source_34(Idx)
38077  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38078  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38079  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38080  , p_source_39 => l_array_source_39(Idx)
38081  , p_source_40 => l_array_source_40(Idx)
38082  , p_source_41 => l_array_source_41(Idx)
38083  , p_source_42 => l_array_source_42(Idx)
38084  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38085  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38086  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38087  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38088  , p_source_46 => l_array_source_46(Idx)
38089  , p_source_47 => l_array_source_47(Idx)
38090  , p_source_48 => l_array_source_48(Idx)
38091  , p_source_49 => l_array_source_49(Idx)
38092  , p_source_50 => l_array_source_50(Idx)
38093  , p_source_51 => l_array_source_51(Idx)
38094  , p_source_52 => l_array_source_52(Idx)
38095  , p_source_55 => l_array_source_55(Idx)
38096  , p_source_56 => l_array_source_56(Idx)
38097  );
38098 If(l_balance_type_code = 'A') THEN
38099   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38100 END IF;
38101 
38102 --
38103 
38104 
38105 --
38106 AcctLineType_21 (
38107  p_application_id  => p_application_id
38108  ,p_event_id     => l_event_id
38109  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38110  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38111  ,p_actual_flag => l_actual_flag
38112  ,p_balance_type_code => l_balance_type_code
38113  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38114  
38115  , p_source_1 => l_array_source_1(Idx)
38116  , p_source_2 => l_array_source_2(Idx)
38117  , p_source_4 => l_array_source_4(Idx)
38118  , p_source_5 => l_array_source_5(Idx)
38119  , p_source_6 => l_array_source_6(Idx)
38120  , p_source_8 => l_array_source_8(Idx)
38121  , p_source_8_meaning => l_array_source_8_meaning(Idx)
38122  , p_source_9 => l_array_source_9(Idx)
38123  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
38124  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
38125  , p_source_14 => l_array_source_14(Idx)
38126  , p_source_15 => l_array_source_15(Idx)
38127  , p_source_17 => l_array_source_17(Idx)
38128  , p_source_19 => l_array_source_19(Idx)
38129  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38130  , p_source_21 => l_array_source_21(Idx)
38131  , p_source_22 => l_array_source_22(Idx)
38132  , p_source_23 => l_array_source_23(Idx)
38133  , p_source_24 => l_array_source_24(Idx)
38134  , p_source_25 => l_array_source_25(Idx)
38135  , p_source_26 => l_array_source_26(Idx)
38136  , p_source_27 => l_array_source_27(Idx)
38137  , p_source_28 => l_array_source_28(Idx)
38138  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38139  , p_source_30 => l_array_source_30(Idx)
38140  , p_source_31 => l_array_source_31(Idx)
38141  , p_source_32 => l_array_source_32(Idx)
38142  , p_source_33 => l_array_source_33(Idx)
38143  , p_source_34 => l_array_source_34(Idx)
38144  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38145  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38146  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38147  , p_source_39 => l_array_source_39(Idx)
38148  , p_source_40 => l_array_source_40(Idx)
38149  , p_source_41 => l_array_source_41(Idx)
38150  , p_source_42 => l_array_source_42(Idx)
38151  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38155  , p_source_46 => l_array_source_46(Idx)
38152  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38153  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38154  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38156  , p_source_47 => l_array_source_47(Idx)
38157  , p_source_48 => l_array_source_48(Idx)
38158  , p_source_49 => l_array_source_49(Idx)
38159  , p_source_50 => l_array_source_50(Idx)
38160  , p_source_51 => l_array_source_51(Idx)
38161  , p_source_52 => l_array_source_52(Idx)
38162  , p_source_55 => l_array_source_55(Idx)
38163  , p_source_56 => l_array_source_56(Idx)
38164  );
38165 If(l_balance_type_code = 'A') THEN
38166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38167 END IF;
38168 
38169 --
38170 
38171 
38172 --
38173 AcctLineType_22 (
38174  p_application_id  => p_application_id
38175  ,p_event_id     => l_event_id
38176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38178  ,p_actual_flag => l_actual_flag
38179  ,p_balance_type_code => l_balance_type_code
38180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38181  
38182  , p_source_1 => l_array_source_1(Idx)
38183  , p_source_2 => l_array_source_2(Idx)
38184  , p_source_6 => l_array_source_6(Idx)
38185  , p_source_15 => l_array_source_15(Idx)
38186  , p_source_17 => l_array_source_17(Idx)
38187  , p_source_19 => l_array_source_19(Idx)
38188  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38189  , p_source_21 => l_array_source_21(Idx)
38190  , p_source_22 => l_array_source_22(Idx)
38191  , p_source_23 => l_array_source_23(Idx)
38192  , p_source_24 => l_array_source_24(Idx)
38193  , p_source_25 => l_array_source_25(Idx)
38194  , p_source_26 => l_array_source_26(Idx)
38195  , p_source_27 => l_array_source_27(Idx)
38196  , p_source_28 => l_array_source_28(Idx)
38197  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38198  , p_source_30 => l_array_source_30(Idx)
38199  , p_source_31 => l_array_source_31(Idx)
38200  , p_source_32 => l_array_source_32(Idx)
38201  , p_source_33 => l_array_source_33(Idx)
38202  , p_source_34 => l_array_source_34(Idx)
38203  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38204  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38205  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38206  , p_source_39 => l_array_source_39(Idx)
38207  , p_source_40 => l_array_source_40(Idx)
38208  , p_source_41 => l_array_source_41(Idx)
38209  , p_source_42 => l_array_source_42(Idx)
38210  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38211  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38212  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38213  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38214  , p_source_46 => l_array_source_46(Idx)
38215  , p_source_47 => l_array_source_47(Idx)
38216  , p_source_48 => l_array_source_48(Idx)
38217  , p_source_49 => l_array_source_49(Idx)
38218  , p_source_50 => l_array_source_50(Idx)
38219  , p_source_51 => l_array_source_51(Idx)
38220  , p_source_52 => l_array_source_52(Idx)
38221  , p_source_55 => l_array_source_55(Idx)
38222  , p_source_56 => l_array_source_56(Idx)
38223  );
38224 If(l_balance_type_code = 'A') THEN
38225   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38226 END IF;
38227 
38228 --
38229 
38230 
38231 --
38232 AcctLineType_23 (
38233  p_application_id  => p_application_id
38234  ,p_event_id     => l_event_id
38235  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38236  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38237  ,p_actual_flag => l_actual_flag
38238  ,p_balance_type_code => l_balance_type_code
38239  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38240  
38241  , p_source_1 => l_array_source_1(Idx)
38242  , p_source_2 => l_array_source_2(Idx)
38243  , p_source_6 => l_array_source_6(Idx)
38244  , p_source_15 => l_array_source_15(Idx)
38245  , p_source_17 => l_array_source_17(Idx)
38246  , p_source_19 => l_array_source_19(Idx)
38247  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38248  , p_source_21 => l_array_source_21(Idx)
38249  , p_source_22 => l_array_source_22(Idx)
38250  , p_source_23 => l_array_source_23(Idx)
38251  , p_source_24 => l_array_source_24(Idx)
38252  , p_source_25 => l_array_source_25(Idx)
38253  , p_source_26 => l_array_source_26(Idx)
38254  , p_source_27 => l_array_source_27(Idx)
38255  , p_source_28 => l_array_source_28(Idx)
38256  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38257  , p_source_30 => l_array_source_30(Idx)
38258  , p_source_31 => l_array_source_31(Idx)
38259  , p_source_32 => l_array_source_32(Idx)
38260  , p_source_33 => l_array_source_33(Idx)
38261  , p_source_34 => l_array_source_34(Idx)
38262  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38263  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38264  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38265  , p_source_39 => l_array_source_39(Idx)
38266  , p_source_40 => l_array_source_40(Idx)
38267  , p_source_41 => l_array_source_41(Idx)
38268  , p_source_42 => l_array_source_42(Idx)
38269  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38270  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38274  , p_source_47 => l_array_source_47(Idx)
38271  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38272  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38273  , p_source_46 => l_array_source_46(Idx)
38275  , p_source_48 => l_array_source_48(Idx)
38276  , p_source_49 => l_array_source_49(Idx)
38277  , p_source_50 => l_array_source_50(Idx)
38278  , p_source_51 => l_array_source_51(Idx)
38279  , p_source_52 => l_array_source_52(Idx)
38280  , p_source_55 => l_array_source_55(Idx)
38281  , p_source_56 => l_array_source_56(Idx)
38282  );
38283 If(l_balance_type_code = 'A') THEN
38284   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38285 END IF;
38286 
38287 --
38288 
38289 
38290 --
38291 AcctLineType_24 (
38292  p_application_id  => p_application_id
38293  ,p_event_id     => l_event_id
38294  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38295  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38296  ,p_actual_flag => l_actual_flag
38297  ,p_balance_type_code => l_balance_type_code
38298  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38299  
38300  , p_source_6 => l_array_source_6(Idx)
38301  , p_source_15 => l_array_source_15(Idx)
38302  , p_source_17 => l_array_source_17(Idx)
38303  , p_source_19 => l_array_source_19(Idx)
38304  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38305  , p_source_21 => l_array_source_21(Idx)
38306  , p_source_22 => l_array_source_22(Idx)
38307  , p_source_23 => l_array_source_23(Idx)
38308  , p_source_24 => l_array_source_24(Idx)
38309  , p_source_25 => l_array_source_25(Idx)
38310  , p_source_26 => l_array_source_26(Idx)
38311  , p_source_27 => l_array_source_27(Idx)
38312  , p_source_28 => l_array_source_28(Idx)
38313  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38314  , p_source_30 => l_array_source_30(Idx)
38315  , p_source_31 => l_array_source_31(Idx)
38316  , p_source_32 => l_array_source_32(Idx)
38317  , p_source_33 => l_array_source_33(Idx)
38318  , p_source_34 => l_array_source_34(Idx)
38319  , p_source_39 => l_array_source_39(Idx)
38320  , p_source_40 => l_array_source_40(Idx)
38321  , p_source_41 => l_array_source_41(Idx)
38322  , p_source_42 => l_array_source_42(Idx)
38323  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38324  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38325  , p_source_46 => l_array_source_46(Idx)
38326  , p_source_47 => l_array_source_47(Idx)
38327  , p_source_48 => l_array_source_48(Idx)
38328  , p_source_49 => l_array_source_49(Idx)
38329  , p_source_50 => l_array_source_50(Idx)
38330  , p_source_51 => l_array_source_51(Idx)
38331  , p_source_52 => l_array_source_52(Idx)
38332  , p_source_55 => l_array_source_55(Idx)
38333  , p_source_56 => l_array_source_56(Idx)
38334  );
38335 If(l_balance_type_code = 'A') THEN
38336   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38337 END IF;
38338 
38339 --
38340 
38341 
38342 --
38343 AcctLineType_25 (
38344  p_application_id  => p_application_id
38345  ,p_event_id     => l_event_id
38346  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38347  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38348  ,p_actual_flag => l_actual_flag
38349  ,p_balance_type_code => l_balance_type_code
38350  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38351  
38352  , p_source_6 => l_array_source_6(Idx)
38353  , p_source_15 => l_array_source_15(Idx)
38354  , p_source_17 => l_array_source_17(Idx)
38355  , p_source_19 => l_array_source_19(Idx)
38356  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38357  , p_source_21 => l_array_source_21(Idx)
38358  , p_source_22 => l_array_source_22(Idx)
38359  , p_source_23 => l_array_source_23(Idx)
38360  , p_source_24 => l_array_source_24(Idx)
38361  , p_source_25 => l_array_source_25(Idx)
38362  , p_source_26 => l_array_source_26(Idx)
38363  , p_source_27 => l_array_source_27(Idx)
38364  , p_source_28 => l_array_source_28(Idx)
38365  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38366  , p_source_30 => l_array_source_30(Idx)
38367  , p_source_31 => l_array_source_31(Idx)
38368  , p_source_32 => l_array_source_32(Idx)
38369  , p_source_33 => l_array_source_33(Idx)
38370  , p_source_34 => l_array_source_34(Idx)
38371  , p_source_39 => l_array_source_39(Idx)
38372  , p_source_40 => l_array_source_40(Idx)
38373  , p_source_41 => l_array_source_41(Idx)
38374  , p_source_42 => l_array_source_42(Idx)
38375  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38376  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38377  , p_source_46 => l_array_source_46(Idx)
38378  , p_source_47 => l_array_source_47(Idx)
38379  , p_source_48 => l_array_source_48(Idx)
38380  , p_source_49 => l_array_source_49(Idx)
38381  , p_source_50 => l_array_source_50(Idx)
38382  , p_source_51 => l_array_source_51(Idx)
38383  , p_source_52 => l_array_source_52(Idx)
38384  , p_source_55 => l_array_source_55(Idx)
38385  , p_source_56 => l_array_source_56(Idx)
38386  );
38387 If(l_balance_type_code = 'A') THEN
38388   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38389 END IF;
38390 
38391 --
38392 
38393 
38394 --
38395 AcctLineType_26 (
38396  p_application_id  => p_application_id
38397  ,p_event_id     => l_event_id
38398  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38399  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38400  ,p_actual_flag => l_actual_flag
38404  , p_source_1 => l_array_source_1(Idx)
38401  ,p_balance_type_code => l_balance_type_code
38402  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38403  
38405  , p_source_2 => l_array_source_2(Idx)
38406  , p_source_4 => l_array_source_4(Idx)
38407  , p_source_5 => l_array_source_5(Idx)
38408  , p_source_6 => l_array_source_6(Idx)
38409  , p_source_8 => l_array_source_8(Idx)
38410  , p_source_8_meaning => l_array_source_8_meaning(Idx)
38411  , p_source_9 => l_array_source_9(Idx)
38412  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
38413  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
38414  , p_source_15 => l_array_source_15(Idx)
38415  , p_source_17 => l_array_source_17(Idx)
38416  , p_source_19 => l_array_source_19(Idx)
38417  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38418  , p_source_21 => l_array_source_21(Idx)
38419  , p_source_22 => l_array_source_22(Idx)
38420  , p_source_23 => l_array_source_23(Idx)
38421  , p_source_24 => l_array_source_24(Idx)
38422  , p_source_25 => l_array_source_25(Idx)
38423  , p_source_26 => l_array_source_26(Idx)
38424  , p_source_27 => l_array_source_27(Idx)
38425  , p_source_28 => l_array_source_28(Idx)
38426  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38427  , p_source_30 => l_array_source_30(Idx)
38428  , p_source_31 => l_array_source_31(Idx)
38429  , p_source_32 => l_array_source_32(Idx)
38430  , p_source_33 => l_array_source_33(Idx)
38431  , p_source_34 => l_array_source_34(Idx)
38432  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38433  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38434  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38435  , p_source_39 => l_array_source_39(Idx)
38436  , p_source_40 => l_array_source_40(Idx)
38437  , p_source_41 => l_array_source_41(Idx)
38438  , p_source_42 => l_array_source_42(Idx)
38439  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38440  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38441  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38442  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38443  , p_source_46 => l_array_source_46(Idx)
38444  , p_source_47 => l_array_source_47(Idx)
38445  , p_source_48 => l_array_source_48(Idx)
38446  , p_source_49 => l_array_source_49(Idx)
38447  , p_source_50 => l_array_source_50(Idx)
38448  , p_source_51 => l_array_source_51(Idx)
38449  , p_source_52 => l_array_source_52(Idx)
38450  , p_source_55 => l_array_source_55(Idx)
38451  , p_source_56 => l_array_source_56(Idx)
38452  );
38453 If(l_balance_type_code = 'A') THEN
38454   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38455 END IF;
38456 
38457 --
38458 
38459 
38460 --
38461 AcctLineType_27 (
38462  p_application_id  => p_application_id
38463  ,p_event_id     => l_event_id
38464  ,p_calculate_acctd_flag => l_calculate_acctd_flag
38465  ,p_calculate_g_l_flag => l_calculate_g_l_flag
38466  ,p_actual_flag => l_actual_flag
38467  ,p_balance_type_code => l_balance_type_code
38468  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
38469  
38470  , p_source_1 => l_array_source_1(Idx)
38471  , p_source_2 => l_array_source_2(Idx)
38472  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
38473  , p_source_8 => l_array_source_8(Idx)
38474  , p_source_8_meaning => l_array_source_8_meaning(Idx)
38475  , p_source_9 => l_array_source_9(Idx)
38476  , p_source_10 => l_array_source_10(Idx)
38477  , p_source_11 => l_array_source_11(Idx)
38478  , p_source_11_meaning => l_array_source_11_meaning(Idx)
38479  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
38480  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
38481  , p_source_15 => l_array_source_15(Idx)
38482  , p_source_17 => l_array_source_17(Idx)
38483  , p_source_19 => l_array_source_19(Idx)
38484  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
38485  , p_source_21 => l_array_source_21(Idx)
38486  , p_source_22 => l_array_source_22(Idx)
38487  , p_source_23 => l_array_source_23(Idx)
38488  , p_source_24 => l_array_source_24(Idx)
38489  , p_source_25 => l_array_source_25(Idx)
38490  , p_source_26 => l_array_source_26(Idx)
38491  , p_source_27 => l_array_source_27(Idx)
38492  , p_source_28 => l_array_source_28(Idx)
38493  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
38494  , p_source_30 => l_array_source_30(Idx)
38495  , p_source_31 => l_array_source_31(Idx)
38496  , p_source_32 => l_array_source_32(Idx)
38497  , p_source_33 => l_array_source_33(Idx)
38498  , p_source_34 => l_array_source_34(Idx)
38499  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
38500  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
38501  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
38502  , p_source_39 => l_array_source_39(Idx)
38503  , p_source_40 => l_array_source_40(Idx)
38504  , p_source_41 => l_array_source_41(Idx)
38505  , p_source_42 => l_array_source_42(Idx)
38506  , p_source_42_meaning => l_array_source_42_meaning(Idx)
38507  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
38508  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
38509  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
38510  , p_source_46 => l_array_source_46(Idx)
38514  , p_source_50 => l_array_source_50(Idx)
38511  , p_source_47 => l_array_source_47(Idx)
38512  , p_source_48 => l_array_source_48(Idx)
38513  , p_source_49 => l_array_source_49(Idx)
38515  , p_source_51 => l_array_source_51(Idx)
38516  , p_source_52 => l_array_source_52(Idx)
38517  , p_source_55 => l_array_source_55(Idx)
38518  , p_source_56 => l_array_source_56(Idx)
38519  );
38520 If(l_balance_type_code = 'A') THEN
38521   l_actual_gain_loss_ref := l_gain_or_loss_ref;
38522 END IF;
38523 
38524 --
38525 
38526       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
38527       -- or secondary ledger that has different currency with primary
38528       -- or alc that is calculated by sla
38529       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
38530             (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'))
38531 
38532 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
38533 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
38534           AND (l_actual_flag = 'A')) THEN
38535         XLA_AE_LINES_PKG.CreateGainOrLossLines(
38536           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
38537          ,p_application_id   => p_application_id
38538          ,p_amb_context_code => 'DEFAULT'
38539          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
38540          ,p_event_class_code => C_EVENT_CLASS_CODE
38541          ,p_event_type_code  => C_EVENT_TYPE_CODE
38542          
38543          ,p_gain_ccid        => -1
38544          ,p_loss_ccid        => -1
38545 
38546          ,p_actual_flag      => l_actual_flag
38547          ,p_enc_flag         => null
38548          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
38549          ,p_enc_g_l_ref      => null
38550          );
38551       END IF;
38552    END IF;
38553 END IF;
38554 
38555    ELSE
38556       --
38557       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
38558       --
38559       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
38560          trace
38561             (p_msg      => 'Trancaction revesal option is Y'
38562             ,p_level    => C_LEVEL_STATEMENT
38563             ,p_module   => l_log_module);
38564       END IF;
38565    END IF;
38566 
38567 END LOOP;
38568 l_result := XLA_AE_LINES_PKG.InsertLines ;
38569 end loop;
38570 close line_cur;
38571 
38572 
38573 --
38574 -- insert headers into xla_ae_headers_gt table
38575 --
38576 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
38577 
38578 -- insert into errors table here.
38579 
38580 END LOOP;
38581 
38582 --
38583 -- 4865292
38584 --
38585 -- Compare g_hdr_extract_count with event count in
38586 -- CreateHeadersAndLines.
38587 --
38588 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
38589 
38590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
38591    trace (p_msg     => '# rows extracted from header extract objects '
38592                     || ' (running total): '
38593                     || g_hdr_extract_count
38594          ,p_level   => C_LEVEL_STATEMENT
38595          ,p_module  => l_log_module);
38596 END IF;
38597 
38598 CLOSE header_cur;
38599 --
38600 
38601 --
38602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38603    trace
38604       (p_msg      => 'END of EventClass_60'
38605       ,p_level    => C_LEVEL_PROCEDURE
38606       ,p_module   => l_log_module);
38607 END IF;
38608 --
38609 RETURN l_result;
38610 EXCEPTION
38611 WHEN xla_exceptions_pkg.application_exception THEN
38612    
38613 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
38614 
38615    
38616 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
38617 
38618    RAISE;
38619 
38620 WHEN NO_DATA_FOUND THEN
38621 
38622 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
38623 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
38624 
38625 FOR header_record IN header_cur
38626 LOOP
38627     l_array_header_events(header_record.event_id) := header_record.event_id;
38628 END LOOP;
38629 
38630 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
38631 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
38632 
38633 fnd_file.put_line(fnd_file.LOG, '                    ');
38634 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
38635 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
38636 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
38637 
38638 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
38639 LOOP
38640 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
38641 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
38642         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
38643 	END IF;
38644 END LOOP;
38645 
38646 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
38650 xla_exceptions_pkg.raise_message
38647 fnd_file.put_line(fnd_file.LOG, '                    ');
38648 
38649 
38651       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_60');
38652 
38653 
38654 WHEN OTHERS THEN
38655    xla_exceptions_pkg.raise_message
38656       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_60');
38657 END EventClass_60;
38658 --
38659 
38660 ---------------------------------------
38661 --
38662 -- PRIVATE PROCEDURE
38663 --         insert_sources_61
38664 --
38665 ----------------------------------------
38666 --
38667 PROCEDURE insert_sources_61(
38668                                 p_target_ledger_id       IN NUMBER
38669                               , p_language               IN VARCHAR2
38670                               , p_sla_ledger_id          IN NUMBER
38671                               , p_pad_start_date         IN DATE
38672                               , p_pad_end_date           IN DATE
38673                          )
38674 IS
38675 
38676 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT MEMOS_ALL';
38677 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DEBIT MEMOS';
38678 p_apps_owner                   VARCHAR2(30);
38679 l_log_module                   VARCHAR2(240);
38680 BEGIN
38681 IF g_log_enabled THEN
38682       l_log_module := C_DEFAULT_MODULE||'.insert_sources_61';
38683 END IF;
38684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38685 
38686       trace
38687          (p_msg      => 'BEGIN of insert_sources_61'
38688          ,p_level    => C_LEVEL_PROCEDURE
38689          ,p_module   => l_log_module);
38690 
38691 END IF;
38692 
38693 -- select APPS owner
38694 SELECT oracle_username
38695   INTO p_apps_owner
38696   FROM fnd_oracle_userid
38697  WHERE read_only_flag = 'U'
38698 ;
38699 
38700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
38701       trace
38702          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
38703                         ' - p_language = '||p_language||
38704                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
38705                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
38706                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
38707                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
38708          ,p_level    => C_LEVEL_STATEMENT
38709          ,p_module   => l_log_module);
38710 END IF;
38711 
38712 
38713 --
38714 INSERT INTO xla_diag_sources --hdr2
38715 (
38716         event_id
38717       , ledger_id
38718       , sla_ledger_id
38719       , description_language
38720       , object_name
38721       , object_type_code
38722       , line_number
38723       , source_application_id
38724       , source_type_code
38725       , source_code
38726       , source_value
38727       , source_meaning
38728       , created_by
38729       , creation_date
38730       , last_update_date
38731       , last_updated_by
38732       , last_update_login
38733       , program_update_date
38734       , program_application_id
38735       , program_id
38736       , request_id
38737 )
38738 SELECT
38739         event_id
38740       , p_target_ledger_id
38741       , p_sla_ledger_id
38742       , p_language
38743       , object_name
38744       , object_type_code
38745       , line_number
38746       , source_application_id
38747       , source_type_code
38748       , source_code
38749       , SUBSTR(source_value ,1,1996)
38750       , SUBSTR(source_meaning ,1,200)
38751       , xla_environment_pkg.g_Usr_Id
38752       , TRUNC(SYSDATE)
38753       , TRUNC(SYSDATE)
38754       , xla_environment_pkg.g_Usr_Id
38755       , xla_environment_pkg.g_Login_Id
38756       , TRUNC(SYSDATE)
38757       , xla_environment_pkg.g_Prog_Appl_Id
38758       , xla_environment_pkg.g_Prog_Id
38759       , xla_environment_pkg.g_Req_Id
38760   FROM (
38761        SELECT xet.event_id                  event_id
38762             , 0                          line_number
38763             , CASE r
38764                WHEN 1 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38765                 WHEN 2 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38766                 WHEN 3 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38767                 WHEN 4 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38768                 WHEN 5 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38769                 WHEN 6 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38770                 WHEN 7 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38771                 WHEN 8 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38772                 WHEN 9 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38773                 WHEN 10 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38774                 WHEN 11 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38775                 WHEN 12 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38776                 WHEN 13 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
38777                 
38778                ELSE null
38779               END                           object_name
38780             , CASE r
38781                 WHEN 1 THEN 'HEADER' 
38782                 WHEN 2 THEN 'HEADER' 
38783                 WHEN 3 THEN 'HEADER' 
38784                 WHEN 4 THEN 'HEADER' 
38785                 WHEN 5 THEN 'HEADER' 
38786                 WHEN 6 THEN 'HEADER' 
38787                 WHEN 7 THEN 'HEADER' 
38791                 WHEN 11 THEN 'HEADER' 
38788                 WHEN 8 THEN 'HEADER' 
38789                 WHEN 9 THEN 'HEADER' 
38790                 WHEN 10 THEN 'HEADER' 
38792                 WHEN 12 THEN 'HEADER' 
38793                 WHEN 13 THEN 'HEADER' 
38794                 
38795                 ELSE null
38796               END                           object_type_code
38797             , CASE r
38798                 WHEN 1 THEN '200' 
38799                 WHEN 2 THEN '200' 
38800                 WHEN 3 THEN '200' 
38801                 WHEN 4 THEN '200' 
38802                 WHEN 5 THEN '200' 
38803                 WHEN 6 THEN '200' 
38804                 WHEN 7 THEN '200' 
38805                 WHEN 8 THEN '200' 
38806                 WHEN 9 THEN '200' 
38807                 WHEN 10 THEN '200' 
38808                 WHEN 11 THEN '200' 
38809                 WHEN 12 THEN '200' 
38810                 WHEN 13 THEN '200' 
38811                 
38812                 ELSE null
38813               END                           source_application_id
38814             , 'S'             source_type_code
38815             , CASE r
38816                 WHEN 1 THEN 'AI_PAYMENT_STATUS_FLAG' 
38817                 WHEN 2 THEN 'AI_INVOICE_TYPE_LOOKUP_CODE' 
38818                 WHEN 3 THEN 'AI_INVOICE_ID' 
38819                 WHEN 4 THEN 'AI_INVOICE_CURRENCY_CODE' 
38820                 WHEN 5 THEN 'INV_EXCHANGE_DATE' 
38821                 WHEN 6 THEN 'INV_EXCHANGE_RATE' 
38822                 WHEN 7 THEN 'INV_EXCHANGE_RATE_TYPE' 
38823                 WHEN 8 THEN 'AI_VENDOR_ID' 
38824                 WHEN 9 THEN 'AI_VENDOR_SITE_ID' 
38825                 WHEN 10 THEN 'THIRD_PARTY_TYPE' 
38826                 WHEN 11 THEN 'INV_DOC_SEQUENCE_CATEGORY' 
38827                 WHEN 12 THEN 'INV_DOC_SEQUENCE_IDENTIFIER' 
38828                 WHEN 13 THEN 'INV_DOC_SEQUENCE_VALUE' 
38829                 
38830                 ELSE null
38831               END                           source_code
38832             , CASE r
38833                 WHEN 1 THEN TO_CHAR(h2.AI_PAYMENT_STATUS_FLAG)
38834                 WHEN 2 THEN TO_CHAR(h2.AI_INVOICE_TYPE_LOOKUP_CODE)
38835                 WHEN 3 THEN TO_CHAR(h2.AI_INVOICE_ID)
38836                 WHEN 4 THEN TO_CHAR(h2.AI_INVOICE_CURRENCY_CODE)
38837                 WHEN 5 THEN TO_CHAR(h2.INV_EXCHANGE_DATE)
38838                 WHEN 6 THEN TO_CHAR(h2.INV_EXCHANGE_RATE)
38839                 WHEN 7 THEN TO_CHAR(h2.INV_EXCHANGE_RATE_TYPE)
38840                 WHEN 8 THEN TO_CHAR(h2.AI_VENDOR_ID)
38841                 WHEN 9 THEN TO_CHAR(h2.AI_VENDOR_SITE_ID)
38842                 WHEN 10 THEN TO_CHAR(h2.THIRD_PARTY_TYPE)
38843                 WHEN 11 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_CATEGORY)
38844                 WHEN 12 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_IDENTIFIER)
38845                 WHEN 13 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_VALUE)
38846                 
38847                 ELSE null
38848               END                           source_value
38849             , CASE r
38850                 WHEN 2 THEN fvl13.meaning
38851                 
38852                 ELSE null
38853               END               source_meaning
38854          FROM xla_events_gt     xet  
38855       , AP_INVOICE_EXTRACT_HEADER_V  h2
38856   , fnd_lookup_values    fvl13
38857              ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
38858          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
38859            AND xet.event_class_code = C_EVENT_CLASS_CODE
38860               AND h2.event_id = xet.event_id
38861    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
38862   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
38863   AND fvl13.view_application_id(+) = 200
38864   AND fvl13.language(+)            = USERENV('LANG')
38865   
38866 )
38867 ;
38868 --
38869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
38870 
38871       trace
38872          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
38873          ,p_level    => C_LEVEL_STATEMENT
38874          ,p_module   => l_log_module);
38875 
38876 END IF;
38877 --
38878 
38879 
38880 
38881 --
38882 INSERT INTO xla_diag_sources  --line2
38883 (
38884         event_id
38885       , ledger_id
38886       , sla_ledger_id
38887       , description_language
38888       , object_name
38889       , object_type_code
38890       , line_number
38891       , source_application_id
38892       , source_type_code
38893       , source_code
38894       , source_value
38895       , source_meaning
38896       , created_by
38897       , creation_date
38898       , last_update_date
38899       , last_updated_by
38900       , last_update_login
38901       , program_update_date
38902       , program_application_id
38903       , program_id
38904       , request_id
38905 )
38906 SELECT  event_id
38907       , p_target_ledger_id
38908       , p_sla_ledger_id
38909       , p_language
38910       , object_name
38911       , object_type_code
38912       , line_number
38913       , source_application_id
38914       , source_type_code
38915       , source_code
38916       , SUBSTR(source_value,1,1996)
38917       , SUBSTR(source_meaning ,1,200)
38918       , xla_environment_pkg.g_Usr_Id
38919       , TRUNC(SYSDATE)
38920       , TRUNC(SYSDATE)
38921       , xla_environment_pkg.g_Usr_Id
38925       , xla_environment_pkg.g_Prog_Id
38922       , xla_environment_pkg.g_Login_Id
38923       , TRUNC(SYSDATE)
38924       , xla_environment_pkg.g_Prog_Appl_Id
38926       , xla_environment_pkg.g_Req_Id
38927   FROM (
38928        SELECT xet.event_id                  event_id
38929             , l1.line_number                 line_number
38930             , CASE r
38931                WHEN 1 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38932                 WHEN 2 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38933                 WHEN 3 THEN 'FV_XLA_AP_REF_V' 
38934                 WHEN 4 THEN 'FV_XLA_AP_REF_V' 
38935                 WHEN 5 THEN 'FV_XLA_AP_REF_V' 
38936                 WHEN 6 THEN 'FV_XLA_AP_REF_V' 
38937                 WHEN 7 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38938                 WHEN 8 THEN 'FV_XLA_AP_REF_V' 
38939                 WHEN 9 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38940                 WHEN 10 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38941                 WHEN 11 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38942                 WHEN 12 THEN 'FV_XLA_AP_REF_V' 
38943                 WHEN 13 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38944                 WHEN 14 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38945                 WHEN 15 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38946                 WHEN 16 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38947                 WHEN 17 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38948                 WHEN 18 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38949                 WHEN 19 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38950                 WHEN 20 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38951                 WHEN 21 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38952                 WHEN 22 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38953                 WHEN 23 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38954                 WHEN 24 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38955                 WHEN 25 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38956                 WHEN 26 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38957                 WHEN 27 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38958                 WHEN 28 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38959                 WHEN 29 THEN 'FV_XLA_AP_REF_V' 
38960                 WHEN 30 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38961                 WHEN 31 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38962                 WHEN 32 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38963                 WHEN 33 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38964                 WHEN 34 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38965                 WHEN 35 THEN 'ZX_AP_DEF_TAX_EXTRACT_V' 
38966                 WHEN 36 THEN 'ZX_AP_TAX_JRNL_LINE_DESC_V' 
38967                 WHEN 37 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38968                 WHEN 38 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38969                 WHEN 39 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38970                 WHEN 40 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38971                 WHEN 41 THEN 'FV_XLA_AP_REF_V' 
38972                 WHEN 42 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38973                 WHEN 43 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38974                 WHEN 44 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
38975                 
38976                ELSE null
38977               END                           object_name
38978             , CASE r
38979                 WHEN 1 THEN 'LINE' 
38980                 WHEN 2 THEN 'LINE' 
38981                 WHEN 3 THEN 'LINE' 
38982                 WHEN 4 THEN 'LINE' 
38983                 WHEN 5 THEN 'LINE' 
38984                 WHEN 6 THEN 'LINE' 
38985                 WHEN 7 THEN 'LINE' 
38986                 WHEN 8 THEN 'LINE' 
38987                 WHEN 9 THEN 'LINE' 
38988                 WHEN 10 THEN 'LINE' 
38989                 WHEN 11 THEN 'LINE' 
38990                 WHEN 12 THEN 'LINE' 
38991                 WHEN 13 THEN 'LINE' 
38992                 WHEN 14 THEN 'LINE' 
38993                 WHEN 15 THEN 'LINE' 
38994                 WHEN 16 THEN 'LINE' 
38995                 WHEN 17 THEN 'LINE' 
38996                 WHEN 18 THEN 'LINE' 
38997                 WHEN 19 THEN 'LINE' 
38998                 WHEN 20 THEN 'LINE' 
38999                 WHEN 21 THEN 'LINE' 
39000                 WHEN 22 THEN 'LINE' 
39001                 WHEN 23 THEN 'LINE' 
39002                 WHEN 24 THEN 'LINE' 
39003                 WHEN 25 THEN 'LINE' 
39004                 WHEN 26 THEN 'LINE' 
39005                 WHEN 27 THEN 'LINE' 
39006                 WHEN 28 THEN 'LINE' 
39007                 WHEN 29 THEN 'LINE' 
39008                 WHEN 30 THEN 'LINE' 
39009                 WHEN 31 THEN 'LINE' 
39010                 WHEN 32 THEN 'LINE' 
39011                 WHEN 33 THEN 'LINE' 
39012                 WHEN 34 THEN 'LINE' 
39013                 WHEN 35 THEN 'LINE' 
39014                 WHEN 36 THEN 'LINE' 
39015                 WHEN 37 THEN 'LINE' 
39016                 WHEN 38 THEN 'LINE' 
39017                 WHEN 39 THEN 'LINE' 
39018                 WHEN 40 THEN 'LINE' 
39019                 WHEN 41 THEN 'LINE' 
39020                 WHEN 42 THEN 'LINE' 
39021                 WHEN 43 THEN 'LINE' 
39022                 WHEN 44 THEN 'LINE' 
39023                 
39024                 ELSE null
39025               END                           object_type_code
39026             , CASE r
39027                 WHEN 1 THEN '200' 
39028                 WHEN 2 THEN '200' 
39029                 WHEN 3 THEN '8901' 
39030                 WHEN 4 THEN '8901' 
39031                 WHEN 5 THEN '8901' 
39035                 WHEN 9 THEN '200' 
39032                 WHEN 6 THEN '8901' 
39033                 WHEN 7 THEN '200' 
39034                 WHEN 8 THEN '8901' 
39036                 WHEN 10 THEN '200' 
39037                 WHEN 11 THEN '200' 
39038                 WHEN 12 THEN '8901' 
39039                 WHEN 13 THEN '200' 
39040                 WHEN 14 THEN '200' 
39041                 WHEN 15 THEN '200' 
39042                 WHEN 16 THEN '200' 
39043                 WHEN 17 THEN '200' 
39044                 WHEN 18 THEN '200' 
39045                 WHEN 19 THEN '200' 
39046                 WHEN 20 THEN '200' 
39047                 WHEN 21 THEN '200' 
39048                 WHEN 22 THEN '200' 
39049                 WHEN 23 THEN '200' 
39050                 WHEN 24 THEN '200' 
39051                 WHEN 25 THEN '200' 
39052                 WHEN 26 THEN '200' 
39053                 WHEN 27 THEN '200' 
39054                 WHEN 28 THEN '200' 
39055                 WHEN 29 THEN '8901' 
39056                 WHEN 30 THEN '200' 
39057                 WHEN 31 THEN '200' 
39058                 WHEN 32 THEN '200' 
39059                 WHEN 33 THEN '200' 
39060                 WHEN 34 THEN '200' 
39061                 WHEN 35 THEN '200' 
39062                 WHEN 36 THEN '200' 
39063                 WHEN 37 THEN '200' 
39064                 WHEN 38 THEN '200' 
39065                 WHEN 39 THEN '200' 
39066                 WHEN 40 THEN '200' 
39067                 WHEN 41 THEN '8901' 
39068                 WHEN 42 THEN '200' 
39069                 WHEN 43 THEN '200' 
39070                 WHEN 44 THEN '200' 
39071                 
39072                 ELSE null
39073               END                           source_application_id
39074             , 'S'             source_type_code
39075             , CASE r
39076                 WHEN 1 THEN 'AID_DESCRIPTION' 
39077                 WHEN 2 THEN 'AID_DIST_CCID' 
39078                 WHEN 3 THEN 'FEDERAL_ANTICIPATION' 
39079                 WHEN 4 THEN 'FEDERAL_FUND_CATEGORY' 
39080                 WHEN 5 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
39081                 WHEN 6 THEN 'FEDERAL_FUND_CAT_DESC' 
39082                 WHEN 7 THEN 'AID_LINE_TYPE_LOOKUP_CODE' 
39083                 WHEN 8 THEN 'FEDERAL_PRIOR_YEAR_FLAG' 
39084                 WHEN 9 THEN 'ENCUMBRANCE_AMOUNT' 
39085                 WHEN 10 THEN 'POD_ACCRUE_ON_RECEIPT_FLAG' 
39086                 WHEN 11 THEN 'PO_DISTRIBUTION_ID' 
39087                 WHEN 12 THEN 'FEDERAL_ADJUSTMENT_TYPE' 
39088                 WHEN 13 THEN 'DIST_ACCOUNT_REVERSAL_OPTION' 
39089                 WHEN 14 THEN 'DISTRIBUTION_LINK_TYPE' 
39090                 WHEN 15 THEN 'ALLOC_TO_MAIN_DIST_ID' 
39091                 WHEN 16 THEN 'BUS_FLOW_AP_APP_ID' 
39092                 WHEN 17 THEN 'BUS_FLOW_INV_DIST_TYPE' 
39093                 WHEN 18 THEN 'BUS_FLOW_INV_ENTITY_CODE' 
39094                 WHEN 19 THEN 'BUS_FLOW_INV_DIST_ID' 
39095                 WHEN 20 THEN 'BUS_FLOW_INV_ID' 
39096                 WHEN 21 THEN 'AID_INVOICE_DIST_ID' 
39097                 WHEN 22 THEN 'UPG_ENC_CR_CCID' 
39098                 WHEN 23 THEN 'UPG_ENC_CR_AMT' 
39099                 WHEN 24 THEN 'UPG_ENC_CR_BASE_AMT' 
39100                 WHEN 25 THEN 'UPG_ENC_DR_CCID' 
39101                 WHEN 26 THEN 'UPG_ENC_DR_AMT' 
39102                 WHEN 27 THEN 'UPG_ENC_DR_BASE_AMT' 
39103                 WHEN 28 THEN 'UPG_AP_ENCUM_OPTION' 
39104                 WHEN 29 THEN 'FEDERAL_ANTICIPATED_AMT' 
39105                 WHEN 30 THEN 'DEFERRED_END_DATE' 
39106                 WHEN 31 THEN 'DEFERRED_OPTION' 
39107                 WHEN 32 THEN 'DEFERRED_START_DATE' 
39108                 WHEN 33 THEN 'OVERRIDE_ACCTD_AMT_FLAG' 
39109                 WHEN 34 THEN 'AID_PARENT_REVERSAL_ID' 
39110                 WHEN 35 THEN 'TAX_LINE_ID' 
39111                 WHEN 36 THEN 'REC_NREC_TAX_DIST_ID' 
39112                 WHEN 37 THEN 'SUMMARY_TAX_LINE_ID' 
39113                 WHEN 38 THEN 'UPG_CR_ENC_TYPE_ID' 
39114                 WHEN 39 THEN 'UPG_DR_ENC_TYPE_ID' 
39115                 WHEN 40 THEN 'ENCUMBRANCE_BASE_AMOUNT' 
39116                 WHEN 41 THEN 'FEDERAL_UNANTICIPATED_AMT' 
39117                 WHEN 42 THEN 'AID_AMOUNT' 
39118                 WHEN 43 THEN 'INV_DIST_BASE_AMOUNT' 
39119                 WHEN 44 THEN 'AID_BASE_AMT_NO_ROUND' 
39120                 
39121                 ELSE null
39122               END                           source_code
39123             , CASE r
39124                 WHEN 1 THEN TO_CHAR(l1.AID_DESCRIPTION)
39125                 WHEN 2 THEN TO_CHAR(l1.AID_DIST_CCID)
39126                 WHEN 3 THEN TO_CHAR(l3.FEDERAL_ANTICIPATION)
39127                 WHEN 4 THEN TO_CHAR(l3.FEDERAL_FUND_CATEGORY)
39128                 WHEN 5 THEN TO_CHAR(l3.FEDERAL_FUND_EXPIRED_STATUS)
39129                 WHEN 6 THEN TO_CHAR(l3.FEDERAL_FUND_CAT_DESC)
39130                 WHEN 7 THEN TO_CHAR(l1.AID_LINE_TYPE_LOOKUP_CODE)
39131                 WHEN 8 THEN TO_CHAR(l3.FEDERAL_PRIOR_YEAR_FLAG)
39132                 WHEN 9 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
39133                 WHEN 10 THEN TO_CHAR(l1.POD_ACCRUE_ON_RECEIPT_FLAG)
39134                 WHEN 11 THEN TO_CHAR(l1.PO_DISTRIBUTION_ID)
39135                 WHEN 12 THEN TO_CHAR(l3.FEDERAL_ADJUSTMENT_TYPE)
39136                 WHEN 13 THEN TO_CHAR(l1.DIST_ACCOUNT_REVERSAL_OPTION)
39137                 WHEN 14 THEN TO_CHAR(l1.DISTRIBUTION_LINK_TYPE)
39138                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_MAIN_DIST_ID)
39139                 WHEN 16 THEN TO_CHAR(l1.BUS_FLOW_AP_APP_ID)
39143                 WHEN 20 THEN TO_CHAR(l1.BUS_FLOW_INV_ID)
39140                 WHEN 17 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_TYPE)
39141                 WHEN 18 THEN TO_CHAR(l1.BUS_FLOW_INV_ENTITY_CODE)
39142                 WHEN 19 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_ID)
39144                 WHEN 21 THEN TO_CHAR(l1.AID_INVOICE_DIST_ID)
39145                 WHEN 22 THEN TO_CHAR(l1.UPG_ENC_CR_CCID)
39146                 WHEN 23 THEN TO_CHAR(l1.UPG_ENC_CR_AMT)
39147                 WHEN 24 THEN TO_CHAR(l1.UPG_ENC_CR_BASE_AMT)
39148                 WHEN 25 THEN TO_CHAR(l1.UPG_ENC_DR_CCID)
39149                 WHEN 26 THEN TO_CHAR(l1.UPG_ENC_DR_AMT)
39150                 WHEN 27 THEN TO_CHAR(l1.UPG_ENC_DR_BASE_AMT)
39151                 WHEN 28 THEN TO_CHAR(l1.UPG_AP_ENCUM_OPTION)
39152                 WHEN 29 THEN TO_CHAR(l3.FEDERAL_ANTICIPATED_AMT)
39153                 WHEN 30 THEN TO_CHAR(l1.DEFERRED_END_DATE)
39154                 WHEN 31 THEN TO_CHAR(l1.DEFERRED_OPTION)
39155                 WHEN 32 THEN TO_CHAR(l1.DEFERRED_START_DATE)
39156                 WHEN 33 THEN TO_CHAR(l1.OVERRIDE_ACCTD_AMT_FLAG)
39157                 WHEN 34 THEN TO_CHAR(l1.AID_PARENT_REVERSAL_ID)
39158                 WHEN 35 THEN TO_CHAR(l4.TAX_LINE_ID)
39159                 WHEN 36 THEN TO_CHAR(l5.REC_NREC_TAX_DIST_ID)
39160                 WHEN 37 THEN TO_CHAR(l1.SUMMARY_TAX_LINE_ID)
39161                 WHEN 38 THEN TO_CHAR(l1.UPG_CR_ENC_TYPE_ID)
39162                 WHEN 39 THEN TO_CHAR(l1.UPG_DR_ENC_TYPE_ID)
39163                 WHEN 40 THEN TO_CHAR(l1.ENCUMBRANCE_BASE_AMOUNT)
39164                 WHEN 41 THEN TO_CHAR(l3.FEDERAL_UNANTICIPATED_AMT)
39165                 WHEN 42 THEN TO_CHAR(l1.AID_AMOUNT)
39166                 WHEN 43 THEN TO_CHAR(l1.INV_DIST_BASE_AMOUNT)
39167                 WHEN 44 THEN TO_CHAR(l1.AID_BASE_AMT_NO_ROUND)
39168                 
39169                 ELSE null
39170               END                           source_value
39171             , CASE r
39172                 WHEN 7 THEN fvl8.meaning
39173                 WHEN 10 THEN fvl11.meaning
39174                 WHEN 33 THEN fvl42.meaning
39175                 
39176                 ELSE null
39177               END               source_meaning
39178          FROM  xla_events_gt     xet  
39179         , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
39180         , FV_XLA_AP_REF_V  l3
39181         , ZX_AP_DEF_TAX_EXTRACT_V  l4
39182         , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
39183   , fnd_lookup_values    fvl8
39184   , fnd_lookup_values    fvl11
39185   , fnd_lookup_values    fvl42
39186             , (select rownum r from all_objects where rownum <= 44 and owner = p_apps_owner)
39187         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
39188           AND xet.event_class_code = C_EVENT_CLASS_CODE
39189             AND l1.event_id          = xet.event_id
39190  AND l3.federal_event_id (+) = l1.event_id  and l3.federal_line_number (+) = l1.line_number AND l1.zrnd_tax_dist_id = l4.rec_nrec_tax_dist_id (+)  AND l1.zrnd_tax_dist_id = l5.rec_nrec_tax_dist_id (+)    AND fvl8.lookup_type(+)         = 
39191 'INVOICE DISTRIBUTION TYPE'
39192   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
39193   AND fvl8.view_application_id(+) = 200
39194   AND fvl8.language(+)            = USERENV('LANG')
39195      AND fvl11.lookup_type(+)         = 'YES_NO'
39196   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
39197   AND fvl11.view_application_id(+) = 0
39198   AND fvl11.language(+)            = USERENV('LANG')
39199      AND fvl42.lookup_type(+)         = 'YES_NO'
39200   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
39201   AND fvl42.view_application_id(+) = 0
39202   AND fvl42.language(+)            = USERENV('LANG')
39203   
39204 )
39205 ;
39206 --
39207 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
39208 
39209       trace
39210          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
39211          ,p_level    => C_LEVEL_STATEMENT
39212          ,p_module   => l_log_module);
39213 
39214 END IF;
39215 
39216 
39217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39218       trace
39219          (p_msg      => 'END of insert_sources_61'
39220          ,p_level    => C_LEVEL_PROCEDURE
39221          ,p_module   => l_log_module);
39222 END IF;
39223 EXCEPTION
39224   WHEN xla_exceptions_pkg.application_exception THEN
39225       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
39226             trace
39227                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
39228                ,p_level    => C_LEVEL_EXCEPTION
39229                ,p_module   => l_log_module);
39230       END IF;
39231       RAISE;
39232   WHEN OTHERS THEN
39233       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
39234             trace
39235                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
39236                ,p_level    => C_LEVEL_EXCEPTION
39237                ,p_module   => l_log_module);
39238        END IF;
39239        xla_exceptions_pkg.raise_message
39240            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.insert_sources_61');
39241 END insert_sources_61;
39242 --
39243 
39244 ---------------------------------------
39245 --
39246 -- PRIVATE FUNCTION
39247 --         EventClass_61
39248 --
39249 ----------------------------------------
39250 --
39251 FUNCTION EventClass_61
39252        (p_application_id         IN NUMBER
39256        ,p_currency_code          IN VARCHAR2
39253        ,p_base_ledger_id         IN NUMBER
39254        ,p_target_ledger_id       IN NUMBER
39255        ,p_language               IN VARCHAR2
39257        ,p_sla_ledger_id          IN NUMBER
39258        ,p_pad_start_date         IN DATE
39259        ,p_pad_end_date           IN DATE
39260        ,p_primary_ledger_id      IN NUMBER)
39261 RETURN BOOLEAN IS
39262 --
39263 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT MEMOS_ALL';
39264 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DEBIT MEMOS';
39265 
39266 l_calculate_acctd_flag   VARCHAR2(1) :='N';
39267 l_calculate_g_l_flag     VARCHAR2(1) :='N';
39268 --
39269 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39270 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39271 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
39272 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
39273 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39274 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
39275 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
39276 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39277 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39278 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39279 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39280 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39281 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39282 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
39283 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
39284 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
39285 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
39286 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
39287 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39288 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39289 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39290 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
39291 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
39292 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
39293 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
39294 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
39295 
39296 l_event_id                             NUMBER;
39297 l_previous_event_id                    NUMBER;
39298 l_first_event_id                       NUMBER;
39299 l_last_event_id                        NUMBER;
39300 
39301 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
39302 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
39303 --
39304 --
39305 l_result                    BOOLEAN := TRUE;
39306 l_rows                      NUMBER  := 1000;
39307 l_event_type_name           VARCHAR2(80) := 'All';
39308 l_event_class_name          VARCHAR2(80) := 'Debit Memos';
39309 l_description               VARCHAR2(4000);
39310 l_transaction_reversal      NUMBER;
39311 l_ae_header_id              NUMBER;
39312 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
39313 l_log_module                VARCHAR2(240);
39314 --
39315 l_acct_reversal_source      VARCHAR2(30);
39316 l_trx_reversal_source       VARCHAR2(30);
39317 
39318 l_continue_with_lines       BOOLEAN := TRUE;
39319 --
39320 l_acc_rev_gl_date_source    DATE;                      -- 4262811
39321 --
39322 type t_array_event_id is table of number index by binary_integer;
39323 
39324 l_rec_array_event                    t_rec_array_event;
39325 l_null_rec_array_event               t_rec_array_event;
39326 l_array_ae_header_id                 xla_number_array_type;
39327 l_actual_flag                        VARCHAR2(1) := NULL;
39328 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
39329 l_balance_type_code                  VARCHAR2(1) :=NULL;
39330 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
39331 
39332 --
39333 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
39334 --
39335 
39336 TYPE t_array_source_7 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_PAYMENT_STATUS_FLAG%TYPE INDEX BY BINARY_INTEGER;
39337 TYPE t_array_source_13 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
39338 TYPE t_array_source_20 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_ID%TYPE INDEX BY BINARY_INTEGER;
39339 TYPE t_array_source_29 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
39340 TYPE t_array_source_36 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
39341 TYPE t_array_source_37 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
39342 TYPE t_array_source_38 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
39343 TYPE t_array_source_43 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_ID%TYPE INDEX BY BINARY_INTEGER;
39344 TYPE t_array_source_44 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
39348 TYPE t_array_source_73 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
39345 TYPE t_array_source_45 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.THIRD_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
39346 TYPE t_array_source_71 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
39347 TYPE t_array_source_72 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
39349 
39350 TYPE t_array_source_1 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
39351 TYPE t_array_source_2 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
39352 TYPE t_array_source_3 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATION%TYPE INDEX BY BINARY_INTEGER;
39353 TYPE t_array_source_4 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
39354 TYPE t_array_source_5 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
39355 TYPE t_array_source_6 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CAT_DESC%TYPE INDEX BY BINARY_INTEGER;
39356 TYPE t_array_source_8 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_LINE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
39357 TYPE t_array_source_9 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_PRIOR_YEAR_FLAG%TYPE INDEX BY BINARY_INTEGER;
39358 TYPE t_array_source_10 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
39359 TYPE t_array_source_11 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.POD_ACCRUE_ON_RECEIPT_FLAG%TYPE INDEX BY BINARY_INTEGER;
39360 TYPE t_array_source_12 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
39361 TYPE t_array_source_14 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ADJUSTMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
39362 TYPE t_array_source_15 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DIST_ACCOUNT_REVERSAL_OPTION%TYPE INDEX BY BINARY_INTEGER;
39363 TYPE t_array_source_17 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
39364 TYPE t_array_source_19 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ALLOC_TO_MAIN_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
39365 TYPE t_array_source_21 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_AP_APP_ID%TYPE INDEX BY BINARY_INTEGER;
39366 TYPE t_array_source_22 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
39367 TYPE t_array_source_23 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
39368 TYPE t_array_source_24 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
39369 TYPE t_array_source_25 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ID%TYPE INDEX BY BINARY_INTEGER;
39370 TYPE t_array_source_26 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_INVOICE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
39371 TYPE t_array_source_27 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
39372 TYPE t_array_source_28 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_AMT%TYPE INDEX BY BINARY_INTEGER;
39373 TYPE t_array_source_30 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
39374 TYPE t_array_source_31 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
39375 TYPE t_array_source_32 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_AMT%TYPE INDEX BY BINARY_INTEGER;
39376 TYPE t_array_source_33 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
39377 TYPE t_array_source_34 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_AP_ENCUM_OPTION%TYPE INDEX BY BINARY_INTEGER;
39378 TYPE t_array_source_35 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
39379 TYPE t_array_source_39 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_END_DATE%TYPE INDEX BY BINARY_INTEGER;
39380 TYPE t_array_source_40 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_OPTION%TYPE INDEX BY BINARY_INTEGER;
39381 TYPE t_array_source_41 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_START_DATE%TYPE INDEX BY BINARY_INTEGER;
39382 TYPE t_array_source_42 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.OVERRIDE_ACCTD_AMT_FLAG%TYPE INDEX BY BINARY_INTEGER;
39383 TYPE t_array_source_46 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_PARENT_REVERSAL_ID%TYPE INDEX BY BINARY_INTEGER;
39384 TYPE t_array_source_48 IS TABLE OF ZX_AP_DEF_TAX_EXTRACT_V.TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
39385 TYPE t_array_source_49 IS TABLE OF ZX_AP_TAX_JRNL_LINE_DESC_V.REC_NREC_TAX_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
39386 TYPE t_array_source_50 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.SUMMARY_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
39387 TYPE t_array_source_51 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
39388 TYPE t_array_source_52 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
39389 TYPE t_array_source_53 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
39390 TYPE t_array_source_54 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_UNANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
39391 TYPE t_array_source_55 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
39392 TYPE t_array_source_56 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.INV_DIST_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
39393 TYPE t_array_source_58 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_BASE_AMT_NO_ROUND%TYPE INDEX BY BINARY_INTEGER;
39394 
39395 l_array_source_7              t_array_source_7;
39396 l_array_source_13              t_array_source_13;
39397 l_array_source_13_meaning      t_array_lookup_meaning;
39398 l_array_source_20              t_array_source_20;
39399 l_array_source_29              t_array_source_29;
39400 l_array_source_36              t_array_source_36;
39404 l_array_source_44              t_array_source_44;
39401 l_array_source_37              t_array_source_37;
39402 l_array_source_38              t_array_source_38;
39403 l_array_source_43              t_array_source_43;
39405 l_array_source_45              t_array_source_45;
39406 l_array_source_71              t_array_source_71;
39407 l_array_source_72              t_array_source_72;
39408 l_array_source_73              t_array_source_73;
39409 
39410 l_array_source_1      t_array_source_1;
39411 l_array_source_2      t_array_source_2;
39412 l_array_source_3      t_array_source_3;
39413 l_array_source_4      t_array_source_4;
39414 l_array_source_5      t_array_source_5;
39415 l_array_source_6      t_array_source_6;
39416 l_array_source_8      t_array_source_8;
39417 l_array_source_8_meaning      t_array_lookup_meaning;
39418 l_array_source_9      t_array_source_9;
39419 l_array_source_10      t_array_source_10;
39420 l_array_source_11      t_array_source_11;
39421 l_array_source_11_meaning      t_array_lookup_meaning;
39422 l_array_source_12      t_array_source_12;
39423 l_array_source_14      t_array_source_14;
39424 l_array_source_15      t_array_source_15;
39425 l_array_source_17      t_array_source_17;
39426 l_array_source_19      t_array_source_19;
39427 l_array_source_21      t_array_source_21;
39428 l_array_source_22      t_array_source_22;
39429 l_array_source_23      t_array_source_23;
39430 l_array_source_24      t_array_source_24;
39431 l_array_source_25      t_array_source_25;
39432 l_array_source_26      t_array_source_26;
39433 l_array_source_27      t_array_source_27;
39434 l_array_source_28      t_array_source_28;
39435 l_array_source_30      t_array_source_30;
39436 l_array_source_31      t_array_source_31;
39437 l_array_source_32      t_array_source_32;
39438 l_array_source_33      t_array_source_33;
39439 l_array_source_34      t_array_source_34;
39440 l_array_source_35      t_array_source_35;
39441 l_array_source_39      t_array_source_39;
39442 l_array_source_40      t_array_source_40;
39443 l_array_source_41      t_array_source_41;
39444 l_array_source_42      t_array_source_42;
39445 l_array_source_42_meaning      t_array_lookup_meaning;
39446 l_array_source_46      t_array_source_46;
39447 l_array_source_48      t_array_source_48;
39448 l_array_source_49      t_array_source_49;
39449 l_array_source_50      t_array_source_50;
39450 l_array_source_51      t_array_source_51;
39451 l_array_source_52      t_array_source_52;
39452 l_array_source_53      t_array_source_53;
39453 l_array_source_54      t_array_source_54;
39454 l_array_source_55      t_array_source_55;
39455 l_array_source_56      t_array_source_56;
39456 l_array_source_58      t_array_source_58;
39457 
39458 --
39459 CURSOR header_cur
39460 IS
39461 SELECT /*+ leading(xet) cardinality(xet,1) */
39462 -- Event Class Code: DEBIT MEMOS
39463     xet.entity_id
39464    ,xet.legal_entity_id
39465    ,xet.entity_code
39466    ,xet.transaction_number
39467    ,xet.event_id
39468    ,xet.event_class_code
39469    ,xet.event_type_code
39470    ,xet.event_number
39471    ,xet.event_date
39472    ,xet.transaction_date
39473    ,xet.reference_num_1
39474    ,xet.reference_num_2
39475    ,xet.reference_num_3
39476    ,xet.reference_num_4
39477    ,xet.reference_char_1
39478    ,xet.reference_char_2
39479    ,xet.reference_char_3
39480    ,xet.reference_char_4
39481    ,xet.reference_date_1
39482    ,xet.reference_date_2
39483    ,xet.reference_date_3
39484    ,xet.reference_date_4
39485    ,xet.event_created_by
39486    ,xet.budgetary_control_flag 
39487   , h2.AI_PAYMENT_STATUS_FLAG    source_7
39488   , h2.AI_INVOICE_TYPE_LOOKUP_CODE    source_13
39489   , fvl13.meaning   source_13_meaning
39490   , h2.AI_INVOICE_ID    source_20
39491   , h2.AI_INVOICE_CURRENCY_CODE    source_29
39492   , h2.INV_EXCHANGE_DATE    source_36
39493   , h2.INV_EXCHANGE_RATE    source_37
39494   , h2.INV_EXCHANGE_RATE_TYPE    source_38
39495   , h2.AI_VENDOR_ID    source_43
39496   , h2.AI_VENDOR_SITE_ID    source_44
39497   , h2.THIRD_PARTY_TYPE    source_45
39498   , h2.INV_DOC_SEQUENCE_CATEGORY    source_71
39499   , h2.INV_DOC_SEQUENCE_IDENTIFIER    source_72
39500   , h2.INV_DOC_SEQUENCE_VALUE    source_73
39501   FROM xla_events_gt     xet 
39502   , AP_INVOICE_EXTRACT_HEADER_V  h2
39503   , fnd_lookup_values    fvl13
39504  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
39505    and xet.event_class_code = C_EVENT_CLASS_CODE
39506    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
39507    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
39508   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
39509   AND fvl13.view_application_id(+) = 200
39510   AND fvl13.language(+)            = USERENV('LANG')
39511   
39512  ORDER BY event_id
39513 ;
39514 
39515 
39516 --
39517 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
39518 IS
39519 SELECT  /*+ leading(xet) cardinality(xet,1) */
39520 -- Event Class Code: DEBIT MEMOS
39521     xet.entity_id
39522    ,xet.legal_entity_id
39523    ,xet.entity_code
39524    ,xet.transaction_number
39525    ,xet.event_id
39526    ,xet.event_class_code
39527    ,xet.event_type_code
39528    ,xet.event_number
39529    ,xet.event_date
39530    ,xet.transaction_date
39531    ,xet.reference_num_1
39532    ,xet.reference_num_2
39533    ,xet.reference_num_3
39537    ,xet.reference_char_3
39534    ,xet.reference_num_4
39535    ,xet.reference_char_1
39536    ,xet.reference_char_2
39538    ,xet.reference_char_4
39539    ,xet.reference_date_1
39540    ,xet.reference_date_2
39541    ,xet.reference_date_3
39542    ,xet.reference_date_4
39543    ,xet.event_created_by
39544    ,xet.budgetary_control_flag
39545  , l1.LINE_NUMBER  
39546   , l1.AID_DESCRIPTION    source_1
39547   , l1.AID_DIST_CCID    source_2
39548   , l3.FEDERAL_ANTICIPATION    source_3
39549   , l3.FEDERAL_FUND_CATEGORY    source_4
39550   , l3.FEDERAL_FUND_EXPIRED_STATUS    source_5
39551   , l3.FEDERAL_FUND_CAT_DESC    source_6
39552   , l1.AID_LINE_TYPE_LOOKUP_CODE    source_8
39553   , fvl8.meaning   source_8_meaning
39554   , l3.FEDERAL_PRIOR_YEAR_FLAG    source_9
39555   , l1.ENCUMBRANCE_AMOUNT    source_10
39556   , l1.POD_ACCRUE_ON_RECEIPT_FLAG    source_11
39557   , fvl11.meaning   source_11_meaning
39558   , l1.PO_DISTRIBUTION_ID    source_12
39559   , l3.FEDERAL_ADJUSTMENT_TYPE    source_14
39560   , l1.DIST_ACCOUNT_REVERSAL_OPTION    source_15
39561   , l1.DISTRIBUTION_LINK_TYPE    source_17
39562   , l1.ALLOC_TO_MAIN_DIST_ID    source_19
39563   , l1.BUS_FLOW_AP_APP_ID    source_21
39564   , l1.BUS_FLOW_INV_DIST_TYPE    source_22
39565   , l1.BUS_FLOW_INV_ENTITY_CODE    source_23
39566   , l1.BUS_FLOW_INV_DIST_ID    source_24
39567   , l1.BUS_FLOW_INV_ID    source_25
39568   , l1.AID_INVOICE_DIST_ID    source_26
39569   , l1.UPG_ENC_CR_CCID    source_27
39570   , l1.UPG_ENC_CR_AMT    source_28
39571   , l1.UPG_ENC_CR_BASE_AMT    source_30
39572   , l1.UPG_ENC_DR_CCID    source_31
39573   , l1.UPG_ENC_DR_AMT    source_32
39574   , l1.UPG_ENC_DR_BASE_AMT    source_33
39575   , l1.UPG_AP_ENCUM_OPTION    source_34
39576   , l3.FEDERAL_ANTICIPATED_AMT    source_35
39577   , l1.DEFERRED_END_DATE    source_39
39578   , l1.DEFERRED_OPTION    source_40
39579   , l1.DEFERRED_START_DATE    source_41
39580   , l1.OVERRIDE_ACCTD_AMT_FLAG    source_42
39581   , fvl42.meaning   source_42_meaning
39582   , l1.AID_PARENT_REVERSAL_ID    source_46
39583   , l4.TAX_LINE_ID    source_48
39584   , l5.REC_NREC_TAX_DIST_ID    source_49
39585   , l1.SUMMARY_TAX_LINE_ID    source_50
39586   , l1.UPG_CR_ENC_TYPE_ID    source_51
39587   , l1.UPG_DR_ENC_TYPE_ID    source_52
39588   , l1.ENCUMBRANCE_BASE_AMOUNT    source_53
39589   , l3.FEDERAL_UNANTICIPATED_AMT    source_54
39590   , l1.AID_AMOUNT    source_55
39591   , l1.INV_DIST_BASE_AMOUNT    source_56
39592   , l1.AID_BASE_AMT_NO_ROUND    source_58
39593   FROM xla_events_gt     xet 
39594   , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
39595   , FV_XLA_AP_REF_V  l3
39596   , ZX_AP_DEF_TAX_EXTRACT_V  l4
39597   , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
39598   , fnd_lookup_values    fvl8
39599   , fnd_lookup_values    fvl11
39600   , fnd_lookup_values    fvl42
39601  WHERE xet.event_id between x_first_event_id and x_last_event_id
39602    and xet.event_date between p_pad_start_date and p_pad_end_date
39603    and xet.event_class_code = C_EVENT_CLASS_CODE
39604    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
39605  AND l3.Federal_Event_Id (+) = l1.event_Id  AND l3.Federal_line_number (+) = l1.line_number AND l1.ZRND_tax_dist_id = l4.REC_NREC_TAX_DIST_ID (+)  AND l1.ZRND_tax_dist_id = l5.REC_NREC_TAX_DIST_ID (+)    AND fvl8.lookup_type(+)         = 
39606 'INVOICE DISTRIBUTION TYPE'
39607   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
39608   AND fvl8.view_application_id(+) = 200
39609   AND fvl8.language(+)            = USERENV('LANG')
39610      AND fvl11.lookup_type(+)         = 'YES_NO'
39611   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
39612   AND fvl11.view_application_id(+) = 0
39613   AND fvl11.language(+)            = USERENV('LANG')
39614      AND fvl42.lookup_type(+)         = 'YES_NO'
39615   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
39616   AND fvl42.view_application_id(+) = 0
39617   AND fvl42.language(+)            = USERENV('LANG')
39618   ;
39619 
39620 --
39621 BEGIN
39622 IF g_log_enabled THEN
39623    l_log_module := C_DEFAULT_MODULE||'.EventClass_61';
39624 END IF;
39625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39626    trace
39627       (p_msg      => 'BEGIN of EventClass_61'
39628       ,p_level    => C_LEVEL_PROCEDURE
39629       ,p_module   => l_log_module);
39630 END IF;
39631 
39632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
39633    trace
39634       (p_msg      => 'p_application_id = '||p_application_id||
39635                      ' - p_base_ledger_id = '||p_base_ledger_id||
39636                      ' - p_target_ledger_id  = '||p_target_ledger_id||
39637                      ' - p_language = '||p_language||
39638                      ' - p_currency_code = '||p_currency_code||
39639                      ' - p_sla_ledger_id = '||p_sla_ledger_id
39640       ,p_level    => C_LEVEL_STATEMENT
39641       ,p_module   => l_log_module);
39642 END IF;
39643 --
39644 -- initialze arrays
39645 --
39646 g_array_event.DELETE;
39647 l_rec_array_event := l_null_rec_array_event;
39648 --
39649 --------------------------------------
39650 -- 4262811 Initialze MPA Line Number
39651 --------------------------------------
39652 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
39653 
39654 --
39655 
39656 --
39657 OPEN header_cur;
39658 --
39659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
39660    trace
39661    (p_msg      => 'SQL - FETCH header_cur'
39665 --
39662    ,p_level    => C_LEVEL_STATEMENT
39663    ,p_module   => l_log_module);
39664 END IF;
39666 LOOP
39667 FETCH header_cur BULK COLLECT INTO
39668         l_array_entity_id
39669       , l_array_legal_entity_id
39670       , l_array_entity_code
39671       , l_array_transaction_num
39672       , l_array_event_id
39673       , l_array_class_code
39674       , l_array_event_type
39675       , l_array_event_number
39676       , l_array_event_date
39677       , l_array_transaction_date
39678       , l_array_reference_num_1
39679       , l_array_reference_num_2
39680       , l_array_reference_num_3
39681       , l_array_reference_num_4
39682       , l_array_reference_char_1
39683       , l_array_reference_char_2
39684       , l_array_reference_char_3
39685       , l_array_reference_char_4
39686       , l_array_reference_date_1
39687       , l_array_reference_date_2
39688       , l_array_reference_date_3
39689       , l_array_reference_date_4
39690       , l_array_event_created_by
39691       , l_array_budgetary_control_flag 
39692       , l_array_source_7
39693       , l_array_source_13
39694       , l_array_source_13_meaning
39695       , l_array_source_20
39696       , l_array_source_29
39697       , l_array_source_36
39698       , l_array_source_37
39699       , l_array_source_38
39700       , l_array_source_43
39701       , l_array_source_44
39702       , l_array_source_45
39703       , l_array_source_71
39704       , l_array_source_72
39705       , l_array_source_73
39706       LIMIT l_rows;
39707 --
39708 IF (C_LEVEL_EVENT >= g_log_level) THEN
39709    trace
39710    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
39711    ,p_level    => C_LEVEL_EVENT
39712    ,p_module   => l_log_module);
39713 END IF;
39714 --
39715 EXIT WHEN l_array_entity_id.COUNT = 0;
39716 
39717 -- initialize arrays
39718 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
39719 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
39720 
39721 --
39722 -- Bug 4458708
39723 --
39724 XLA_AE_LINES_PKG.g_LineNumber := 0;
39725 
39726 
39727 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
39728 g_last_hdr_idx := l_array_event_id.LAST;
39729 --
39730 -- loop for the headers. Each iteration is for each header extract row
39731 -- fetched in header cursor
39732 --
39733 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
39734 
39735 --
39736 -- set event info as cache for other routines to refer event attributes
39737 --
39738 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
39739    (p_application_id           => p_application_id
39740    ,p_primary_ledger_id        => p_primary_ledger_id
39741    ,p_base_ledger_id           => p_base_ledger_id
39742    ,p_target_ledger_id         => p_target_ledger_id
39743    ,p_entity_id                => l_array_entity_id(hdr_idx)
39744    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
39745    ,p_entity_code              => l_array_entity_code(hdr_idx)
39746    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
39747    ,p_event_id                 => l_array_event_id(hdr_idx)
39748    ,p_event_class_code         => l_array_class_code(hdr_idx)
39749    ,p_event_type_code          => l_array_event_type(hdr_idx)
39750    ,p_event_number             => l_array_event_number(hdr_idx)
39751    ,p_event_date               => l_array_event_date(hdr_idx)
39752    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
39753    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
39754    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
39755    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
39756    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
39757    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
39758    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
39759    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
39760    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
39761    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
39762    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
39763    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
39764    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
39765    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
39766    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
39767 
39768 --
39769 -- set the status of entry to C_VALID (0)
39770 --
39771 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
39772 
39773 --
39774 -- initialize a row for ae header
39775 --
39776 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
39777 
39778 l_event_id := l_array_event_id(hdr_idx);
39779 
39780 --
39781 -- storing the hdr_idx for event. May be used by line cursor.
39782 --
39783 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
39784 
39785 --
39786 -- store sources from header extract. This can be improved to
39787 -- store only those sources from header extract that may be used in lines
39788 --
39789 
39790 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
39791 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
39795 g_array_event(l_event_id).array_value_date('source_36') := l_array_source_36(hdr_idx);
39792 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
39793 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
39794 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
39796 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
39797 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
39798 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
39799 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
39800 g_array_event(l_event_id).array_value_char('source_45') := l_array_source_45(hdr_idx);
39801 g_array_event(l_event_id).array_value_char('source_71') := l_array_source_71(hdr_idx);
39802 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
39803 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
39804 
39805 --
39806 -- initilaize the status of ae headers for diffrent balance types
39807 -- the status is initialised to C_NOT_CREATED (2)
39808 --
39809 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
39810 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
39811 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
39812 
39813 --
39814 -- call api to validate and store accounting attributes for header
39815 --
39816 
39817 ------------------------------------------------------------
39818 -- Accrual Reversal : to get date for Standard Source (NONE)
39819 ------------------------------------------------------------
39820 l_acc_rev_gl_date_source := NULL;
39821 
39822      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
39823       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_71');
39824      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
39825       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_72');
39826      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
39827       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_73');
39828      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
39829       l_rec_acct_attrs.array_date_value(4) := 
39830 xla_ae_sources_pkg.GetSystemSourceDate(
39831    p_source_code           => 'XLA_EVENT_DATE'
39832  , p_source_type_code      => 'Y'
39833  , p_source_application_id =>  602
39834 );
39835 
39836 
39837 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
39838 
39839 XLA_AE_HEADER_PKG.SetJeCategoryName;
39840 
39841 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
39842 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
39843 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
39844 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
39845 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
39846 
39847 
39848 --
39849 xla_ae_header_pkg.SetHdrDescription(
39850    p_description => Description_1 (
39851    p_application_id => p_application_id 
39852    )
39853 );
39854 --
39855 
39856 -- No header level analytical criteria
39857 
39858 --
39859 --accounting attribute enhancement, bug 3612931
39860 --
39861 l_trx_reversal_source := SUBSTR(NULL, 1,30);
39862 
39863 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
39864    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
39865 
39866    xla_accounting_err_pkg.build_message
39867       (p_appli_s_name            => 'XLA'
39868       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
39869       ,p_token_1                 => 'ACCT_ATTR_NAME'
39870       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
39871       ,p_token_2                 => 'PRODUCT_NAME'
39872       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
39873       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
39874       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
39875       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
39876 
39877 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
39878    --
39879    -- following sets the accounting attributes needed to reverse
39880    -- accounting for a distributeion
39881    --
39882    xla_ae_lines_pkg.SetTrxReversalAttrs
39883       (p_event_id              => l_event_id
39884       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
39885       ,p_trx_reversal_source   => l_trx_reversal_source);
39886 
39887 END IF;
39888 
39889 
39890 ----------------------------------------------------------------
39891 -- 4262811 -  update the header statuses to invalid in need be
39892 ----------------------------------------------------------------
39893 --
39897   -----------------------------------------------
39894 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
39895 
39896 
39898   -- No accrual reversal for the event class/type
39899   -----------------------------------------------
39900 ----------------------------------------------------------------
39901 
39902 --
39903 -- this ends the header loop iteration for one bulk fetch
39904 --
39905 END LOOP;
39906 
39907 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
39908 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
39909 
39910 --
39911 -- insert dummy rows into lines gt table that were created due to
39912 -- transaction reversals
39913 --
39914 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
39915    l_result := XLA_AE_LINES_PKG.InsertLines;
39916 END IF;
39917 
39918 --
39919 -- reset the temp_line_num for each set of events fetched from header
39920 -- cursor rather than doing it for each new event in line cursor
39921 -- Bug 3939231
39922 --
39923 xla_ae_lines_pkg.g_temp_line_num := 0;
39924 
39925 
39926 
39927 --
39928 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
39929 --
39930 --
39931 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
39932 
39933       trace
39934          (p_msg      => 'SQL - FETCH line_cur'
39935          ,p_level    => C_LEVEL_STATEMENT
39936          ,p_module   => l_log_module);
39937 
39938 END IF;
39939 --
39940 --
39941 LOOP
39942   --
39943   FETCH line_cur BULK COLLECT INTO
39944         l_array_entity_id
39945       , l_array_legal_entity_id
39946       , l_array_entity_code
39947       , l_array_transaction_num
39948       , l_array_event_id
39949       , l_array_class_code
39950       , l_array_event_type
39951       , l_array_event_number
39952       , l_array_event_date
39953       , l_array_transaction_date
39954       , l_array_reference_num_1
39955       , l_array_reference_num_2
39956       , l_array_reference_num_3
39957       , l_array_reference_num_4
39958       , l_array_reference_char_1
39959       , l_array_reference_char_2
39960       , l_array_reference_char_3
39961       , l_array_reference_char_4
39962       , l_array_reference_date_1
39963       , l_array_reference_date_2
39964       , l_array_reference_date_3
39965       , l_array_reference_date_4
39966       , l_array_event_created_by
39967       , l_array_budgetary_control_flag
39968       , l_array_extract_line_num 
39969       , l_array_source_1
39970       , l_array_source_2
39971       , l_array_source_3
39972       , l_array_source_4
39973       , l_array_source_5
39974       , l_array_source_6
39975       , l_array_source_8
39976       , l_array_source_8_meaning
39977       , l_array_source_9
39978       , l_array_source_10
39979       , l_array_source_11
39980       , l_array_source_11_meaning
39981       , l_array_source_12
39982       , l_array_source_14
39983       , l_array_source_15
39984       , l_array_source_17
39985       , l_array_source_19
39986       , l_array_source_21
39987       , l_array_source_22
39988       , l_array_source_23
39989       , l_array_source_24
39990       , l_array_source_25
39991       , l_array_source_26
39992       , l_array_source_27
39993       , l_array_source_28
39994       , l_array_source_30
39995       , l_array_source_31
39996       , l_array_source_32
39997       , l_array_source_33
39998       , l_array_source_34
39999       , l_array_source_35
40000       , l_array_source_39
40001       , l_array_source_40
40002       , l_array_source_41
40003       , l_array_source_42
40004       , l_array_source_42_meaning
40005       , l_array_source_46
40006       , l_array_source_48
40007       , l_array_source_49
40008       , l_array_source_50
40009       , l_array_source_51
40010       , l_array_source_52
40011       , l_array_source_53
40012       , l_array_source_54
40013       , l_array_source_55
40014       , l_array_source_56
40015       , l_array_source_58
40016       LIMIT l_rows;
40017 
40018   --
40019   IF (C_LEVEL_EVENT >= g_log_level) THEN
40020             trace
40021                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
40022                ,p_level    => C_LEVEL_EVENT
40023                ,p_module   => l_log_module);
40024   END IF;
40025   --
40026   EXIT WHEN l_array_entity_id.count = 0;
40027 
40028   XLA_AE_LINES_PKG.g_rec_lines := null;
40029 
40030 --
40031 -- Bug 4458708
40032 --
40033 XLA_AE_LINES_PKG.g_LineNumber := 0;
40034 --
40035 --
40036 
40037 FOR Idx IN 1..l_array_event_id.count LOOP
40038    --
40039    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
40040    --
40041    l_event_id := l_array_event_id(idx);  -- 5648433
40042 
40043    --
40044    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
40045    --
40046 
40047    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
40048              (g_array_event(l_event_id).array_value_num('header_index'))
40049          ,'N'
40050          ) <> 'Y'
40051    THEN
40052       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
40056             ,p_module   => l_log_module);
40053          trace
40054             (p_msg      => 'Trancaction revesal option is not Y '
40055             ,p_level    => C_LEVEL_STATEMENT
40057       END IF;
40058 
40059 --
40060 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
40061 --
40062 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
40063 --
40064 -- set event info as cache for other routines to refer event attributes
40065 --
40066 
40067 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
40068    l_previous_event_id := l_event_id;
40069 
40070    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
40071       (p_application_id           => p_application_id
40072       ,p_primary_ledger_id        => p_primary_ledger_id
40073       ,p_base_ledger_id           => p_base_ledger_id
40074       ,p_target_ledger_id         => p_target_ledger_id
40075       ,p_entity_id                => l_array_entity_id(Idx)
40076       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
40077       ,p_entity_code              => l_array_entity_code(Idx)
40078       ,p_transaction_num          => l_array_transaction_num(Idx)
40079       ,p_event_id                 => l_array_event_id(Idx)
40080       ,p_event_class_code         => l_array_class_code(Idx)
40081       ,p_event_type_code          => l_array_event_type(Idx)
40082       ,p_event_number             => l_array_event_number(Idx)
40083       ,p_event_date               => l_array_event_date(Idx)
40084       ,p_transaction_date         => l_array_transaction_date(Idx)
40085       ,p_reference_num_1          => l_array_reference_num_1(Idx)
40086       ,p_reference_num_2          => l_array_reference_num_2(Idx)
40087       ,p_reference_num_3          => l_array_reference_num_3(Idx)
40088       ,p_reference_num_4          => l_array_reference_num_4(Idx)
40089       ,p_reference_char_1         => l_array_reference_char_1(Idx)
40090       ,p_reference_char_2         => l_array_reference_char_2(Idx)
40091       ,p_reference_char_3         => l_array_reference_char_3(Idx)
40092       ,p_reference_char_4         => l_array_reference_char_4(Idx)
40093       ,p_reference_date_1         => l_array_reference_date_1(Idx)
40094       ,p_reference_date_2         => l_array_reference_date_2(Idx)
40095       ,p_reference_date_3         => l_array_reference_date_3(Idx)
40096       ,p_reference_date_4         => l_array_reference_date_4(Idx)
40097       ,p_event_created_by         => l_array_event_created_by(Idx)
40098       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
40099        --
40100 END IF;
40101 
40102 
40103 
40104 --
40105 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
40106 
40107 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
40108 
40109 IF l_continue_with_lines THEN
40110    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
40111       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
40112 
40113       xla_accounting_err_pkg.build_message
40114          (p_appli_s_name            => 'XLA'
40115          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
40116          ,p_token_1                 => 'LINE_NUMBER'
40117          ,p_value_1                 => l_array_extract_line_num(Idx)
40118          ,p_token_2                 => 'PRODUCT_NAME'
40119          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
40120          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
40121          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
40122          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
40123 
40124    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
40125       --
40126       -- following sets the accounting attributes needed to reverse
40127       -- accounting for a distributeion
40128       --
40129 
40130       --
40131       -- 5217187
40132       --
40133       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
40134       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
40135                                        g_array_event(l_event_id).array_value_num('header_index'));
40136       --
40137       --
40138 
40139       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
40140       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
40141       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
40142       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_26(Idx);
40143       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
40144       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
40145       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
40146       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_27(Idx);
40147       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
40148       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_28(Idx);
40149       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
40150       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_29');
40151       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
40152       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_30(Idx);
40153       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
40154       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_31(Idx);
40155       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
40156       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_32(Idx);
40157       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
40158       l_rec_rev_acct_attrs.array_char_value(11)  := g_array_event(l_event_id).array_value_char('source_29');
40159       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
40160       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_33(Idx);
40161       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
40162       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_34(Idx);
40163       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'PARTY_TYPE';
40164       l_rec_rev_acct_attrs.array_char_value(14)  := g_array_event(l_event_id).array_value_char('source_45');
40165       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
40166       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_46(Idx);
40167       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
40168       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_17(Idx);
40169       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'TAX_LINE_REF_ID';
40170       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_48(Idx);
40171       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'TAX_REC_NREC_DIST_REF_ID';
40172       l_rec_rev_acct_attrs.array_num_value(18)  := l_array_source_49(Idx);
40173       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'TAX_SUMMARY_LINE_REF_ID';
40174       l_rec_rev_acct_attrs.array_num_value(19)  := l_array_source_50(Idx);
40175       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
40176       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_51(Idx);
40177       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
40178       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_52(Idx);
40179 
40180 
40181       xla_ae_lines_pkg.SetAcctReversalAttrs
40182          (p_event_id             => l_event_id
40183          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
40184          ,p_calculate_acctd_flag => l_calculate_acctd_flag
40185          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
40186    END IF;
40187 
40188    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
40189        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
40190 
40191 --
40192 AcctLineType_28 (
40193  p_application_id  => p_application_id
40194  ,p_event_id     => l_event_id
40195  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40196  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40197  ,p_actual_flag => l_actual_flag
40198  ,p_balance_type_code => l_balance_type_code
40199  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40200  
40201  , p_source_1 => l_array_source_1(Idx)
40202  , p_source_2 => l_array_source_2(Idx)
40203  , p_source_4 => l_array_source_4(Idx)
40204  , p_source_5 => l_array_source_5(Idx)
40205  , p_source_6 => l_array_source_6(Idx)
40206  , p_source_8 => l_array_source_8(Idx)
40207  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40208  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40209  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40210  , p_source_15 => l_array_source_15(Idx)
40211  , p_source_17 => l_array_source_17(Idx)
40212  , p_source_19 => l_array_source_19(Idx)
40213  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40214  , p_source_21 => l_array_source_21(Idx)
40215  , p_source_22 => l_array_source_22(Idx)
40216  , p_source_23 => l_array_source_23(Idx)
40217  , p_source_24 => l_array_source_24(Idx)
40218  , p_source_25 => l_array_source_25(Idx)
40219  , p_source_26 => l_array_source_26(Idx)
40220  , p_source_27 => l_array_source_27(Idx)
40221  , p_source_28 => l_array_source_28(Idx)
40222  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40223  , p_source_30 => l_array_source_30(Idx)
40224  , p_source_31 => l_array_source_31(Idx)
40225  , p_source_32 => l_array_source_32(Idx)
40226  , p_source_33 => l_array_source_33(Idx)
40227  , p_source_34 => l_array_source_34(Idx)
40228  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40229  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40230  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40234  , p_source_42 => l_array_source_42(Idx)
40231  , p_source_39 => l_array_source_39(Idx)
40232  , p_source_40 => l_array_source_40(Idx)
40233  , p_source_41 => l_array_source_41(Idx)
40235  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40236  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40237  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40238  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40239  , p_source_46 => l_array_source_46(Idx)
40240  , p_source_48 => l_array_source_48(Idx)
40241  , p_source_49 => l_array_source_49(Idx)
40242  , p_source_50 => l_array_source_50(Idx)
40243  , p_source_51 => l_array_source_51(Idx)
40244  , p_source_52 => l_array_source_52(Idx)
40245  , p_source_55 => l_array_source_55(Idx)
40246  , p_source_58 => l_array_source_58(Idx)
40247  );
40248 If(l_balance_type_code = 'A') THEN
40249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40250 END IF;
40251 
40252 --
40253 
40254 
40255 --
40256 AcctLineType_29 (
40257  p_application_id  => p_application_id
40258  ,p_event_id     => l_event_id
40259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40261  ,p_actual_flag => l_actual_flag
40262  ,p_balance_type_code => l_balance_type_code
40263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40264  
40265  , p_source_1 => l_array_source_1(Idx)
40266  , p_source_2 => l_array_source_2(Idx)
40267  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
40268  , p_source_8 => l_array_source_8(Idx)
40269  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40270  , p_source_9 => l_array_source_9(Idx)
40271  , p_source_10 => l_array_source_10(Idx)
40272  , p_source_11 => l_array_source_11(Idx)
40273  , p_source_11_meaning => l_array_source_11_meaning(Idx)
40274  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40275  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40276  , p_source_15 => l_array_source_15(Idx)
40277  , p_source_17 => l_array_source_17(Idx)
40278  , p_source_19 => l_array_source_19(Idx)
40279  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40280  , p_source_21 => l_array_source_21(Idx)
40281  , p_source_22 => l_array_source_22(Idx)
40282  , p_source_23 => l_array_source_23(Idx)
40283  , p_source_24 => l_array_source_24(Idx)
40284  , p_source_25 => l_array_source_25(Idx)
40285  , p_source_26 => l_array_source_26(Idx)
40286  , p_source_27 => l_array_source_27(Idx)
40287  , p_source_28 => l_array_source_28(Idx)
40288  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40289  , p_source_30 => l_array_source_30(Idx)
40290  , p_source_31 => l_array_source_31(Idx)
40291  , p_source_32 => l_array_source_32(Idx)
40292  , p_source_33 => l_array_source_33(Idx)
40293  , p_source_34 => l_array_source_34(Idx)
40294  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40295  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40296  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40297  , p_source_39 => l_array_source_39(Idx)
40298  , p_source_40 => l_array_source_40(Idx)
40299  , p_source_41 => l_array_source_41(Idx)
40300  , p_source_42 => l_array_source_42(Idx)
40301  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40302  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40303  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40304  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40305  , p_source_46 => l_array_source_46(Idx)
40306  , p_source_48 => l_array_source_48(Idx)
40307  , p_source_49 => l_array_source_49(Idx)
40308  , p_source_50 => l_array_source_50(Idx)
40309  , p_source_51 => l_array_source_51(Idx)
40310  , p_source_52 => l_array_source_52(Idx)
40311  , p_source_55 => l_array_source_55(Idx)
40312  , p_source_58 => l_array_source_58(Idx)
40313  );
40314 If(l_balance_type_code = 'A') THEN
40315   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40316 END IF;
40317 
40318 --
40319 
40320 
40321 --
40322 AcctLineType_32 (
40323  p_application_id  => p_application_id
40324  ,p_event_id     => l_event_id
40325  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40326  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40327  ,p_actual_flag => l_actual_flag
40328  ,p_balance_type_code => l_balance_type_code
40329  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40330  
40331  , p_source_1 => l_array_source_1(Idx)
40332  , p_source_2 => l_array_source_2(Idx)
40333  , p_source_3 => l_array_source_3(Idx)
40334  , p_source_8 => l_array_source_8(Idx)
40335  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40336  , p_source_9 => l_array_source_9(Idx)
40337  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40338  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40339  , p_source_14 => l_array_source_14(Idx)
40340  , p_source_15 => l_array_source_15(Idx)
40341  , p_source_17 => l_array_source_17(Idx)
40342  , p_source_19 => l_array_source_19(Idx)
40343  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40344  , p_source_21 => l_array_source_21(Idx)
40345  , p_source_22 => l_array_source_22(Idx)
40346  , p_source_23 => l_array_source_23(Idx)
40347  , p_source_24 => l_array_source_24(Idx)
40348  , p_source_25 => l_array_source_25(Idx)
40349  , p_source_26 => l_array_source_26(Idx)
40350  , p_source_27 => l_array_source_27(Idx)
40351  , p_source_28 => l_array_source_28(Idx)
40352  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40353  , p_source_30 => l_array_source_30(Idx)
40354  , p_source_31 => l_array_source_31(Idx)
40355  , p_source_32 => l_array_source_32(Idx)
40356  , p_source_33 => l_array_source_33(Idx)
40357  , p_source_34 => l_array_source_34(Idx)
40361  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40358  , p_source_35 => l_array_source_35(Idx)
40359  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40360  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40362  , p_source_39 => l_array_source_39(Idx)
40363  , p_source_40 => l_array_source_40(Idx)
40364  , p_source_41 => l_array_source_41(Idx)
40365  , p_source_42 => l_array_source_42(Idx)
40366  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40367  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40368  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40369  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40370  , p_source_46 => l_array_source_46(Idx)
40371  , p_source_48 => l_array_source_48(Idx)
40372  , p_source_49 => l_array_source_49(Idx)
40373  , p_source_50 => l_array_source_50(Idx)
40374  , p_source_51 => l_array_source_51(Idx)
40375  , p_source_52 => l_array_source_52(Idx)
40376  );
40377 If(l_balance_type_code = 'A') THEN
40378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40379 END IF;
40380 
40381 --
40382 
40383 
40384 --
40385 AcctLineType_33 (
40386  p_application_id  => p_application_id
40387  ,p_event_id     => l_event_id
40388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40390  ,p_actual_flag => l_actual_flag
40391  ,p_balance_type_code => l_balance_type_code
40392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40393  
40394  , p_source_1 => l_array_source_1(Idx)
40395  , p_source_2 => l_array_source_2(Idx)
40396  , p_source_8 => l_array_source_8(Idx)
40397  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40398  , p_source_9 => l_array_source_9(Idx)
40399  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40400  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40401  , p_source_14 => l_array_source_14(Idx)
40402  , p_source_15 => l_array_source_15(Idx)
40403  , p_source_17 => l_array_source_17(Idx)
40404  , p_source_19 => l_array_source_19(Idx)
40405  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40406  , p_source_21 => l_array_source_21(Idx)
40407  , p_source_22 => l_array_source_22(Idx)
40408  , p_source_23 => l_array_source_23(Idx)
40409  , p_source_24 => l_array_source_24(Idx)
40410  , p_source_25 => l_array_source_25(Idx)
40411  , p_source_26 => l_array_source_26(Idx)
40412  , p_source_27 => l_array_source_27(Idx)
40413  , p_source_28 => l_array_source_28(Idx)
40414  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40415  , p_source_30 => l_array_source_30(Idx)
40416  , p_source_31 => l_array_source_31(Idx)
40417  , p_source_32 => l_array_source_32(Idx)
40418  , p_source_33 => l_array_source_33(Idx)
40419  , p_source_34 => l_array_source_34(Idx)
40420  , p_source_35 => l_array_source_35(Idx)
40421  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40422  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40423  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40424  , p_source_39 => l_array_source_39(Idx)
40425  , p_source_40 => l_array_source_40(Idx)
40426  , p_source_41 => l_array_source_41(Idx)
40427  , p_source_42 => l_array_source_42(Idx)
40428  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40429  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40430  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40431  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40432  , p_source_46 => l_array_source_46(Idx)
40433  , p_source_48 => l_array_source_48(Idx)
40434  , p_source_49 => l_array_source_49(Idx)
40435  , p_source_50 => l_array_source_50(Idx)
40436  , p_source_51 => l_array_source_51(Idx)
40437  , p_source_52 => l_array_source_52(Idx)
40438  , p_source_53 => l_array_source_53(Idx)
40439  );
40440 If(l_balance_type_code = 'A') THEN
40441   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40442 END IF;
40443 
40444 --
40445 
40446 
40447 --
40448 AcctLineType_34 (
40449  p_application_id  => p_application_id
40450  ,p_event_id     => l_event_id
40451  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40452  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40453  ,p_actual_flag => l_actual_flag
40454  ,p_balance_type_code => l_balance_type_code
40455  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40456  
40457  , p_source_1 => l_array_source_1(Idx)
40458  , p_source_2 => l_array_source_2(Idx)
40459  , p_source_3 => l_array_source_3(Idx)
40460  , p_source_8 => l_array_source_8(Idx)
40461  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40462  , p_source_9 => l_array_source_9(Idx)
40463  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40464  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40465  , p_source_14 => l_array_source_14(Idx)
40466  , p_source_15 => l_array_source_15(Idx)
40467  , p_source_17 => l_array_source_17(Idx)
40468  , p_source_19 => l_array_source_19(Idx)
40469  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40470  , p_source_21 => l_array_source_21(Idx)
40471  , p_source_22 => l_array_source_22(Idx)
40472  , p_source_23 => l_array_source_23(Idx)
40473  , p_source_24 => l_array_source_24(Idx)
40474  , p_source_25 => l_array_source_25(Idx)
40475  , p_source_26 => l_array_source_26(Idx)
40476  , p_source_27 => l_array_source_27(Idx)
40477  , p_source_28 => l_array_source_28(Idx)
40478  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40479  , p_source_30 => l_array_source_30(Idx)
40480  , p_source_31 => l_array_source_31(Idx)
40481  , p_source_32 => l_array_source_32(Idx)
40482  , p_source_33 => l_array_source_33(Idx)
40483  , p_source_34 => l_array_source_34(Idx)
40487  , p_source_39 => l_array_source_39(Idx)
40484  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40485  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40486  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40488  , p_source_40 => l_array_source_40(Idx)
40489  , p_source_41 => l_array_source_41(Idx)
40490  , p_source_42 => l_array_source_42(Idx)
40491  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40492  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40493  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40494  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40495  , p_source_46 => l_array_source_46(Idx)
40496  , p_source_48 => l_array_source_48(Idx)
40497  , p_source_49 => l_array_source_49(Idx)
40498  , p_source_50 => l_array_source_50(Idx)
40499  , p_source_51 => l_array_source_51(Idx)
40500  , p_source_52 => l_array_source_52(Idx)
40501  , p_source_54 => l_array_source_54(Idx)
40502  );
40503 If(l_balance_type_code = 'A') THEN
40504   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40505 END IF;
40506 
40507 --
40508 
40509 
40510 --
40511 AcctLineType_35 (
40512  p_application_id  => p_application_id
40513  ,p_event_id     => l_event_id
40514  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40515  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40516  ,p_actual_flag => l_actual_flag
40517  ,p_balance_type_code => l_balance_type_code
40518  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40519  
40520  , p_source_1 => l_array_source_1(Idx)
40521  , p_source_2 => l_array_source_2(Idx)
40522  , p_source_8 => l_array_source_8(Idx)
40523  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40524  , p_source_9 => l_array_source_9(Idx)
40525  , p_source_11 => l_array_source_11(Idx)
40526  , p_source_11_meaning => l_array_source_11_meaning(Idx)
40527  , p_source_12 => l_array_source_12(Idx)
40528  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40529  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40530  , p_source_14 => l_array_source_14(Idx)
40531  , p_source_15 => l_array_source_15(Idx)
40532  , p_source_17 => l_array_source_17(Idx)
40533  , p_source_19 => l_array_source_19(Idx)
40534  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40535  , p_source_21 => l_array_source_21(Idx)
40536  , p_source_22 => l_array_source_22(Idx)
40537  , p_source_23 => l_array_source_23(Idx)
40538  , p_source_24 => l_array_source_24(Idx)
40539  , p_source_25 => l_array_source_25(Idx)
40540  , p_source_26 => l_array_source_26(Idx)
40541  , p_source_27 => l_array_source_27(Idx)
40542  , p_source_28 => l_array_source_28(Idx)
40543  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40544  , p_source_30 => l_array_source_30(Idx)
40545  , p_source_31 => l_array_source_31(Idx)
40546  , p_source_32 => l_array_source_32(Idx)
40547  , p_source_33 => l_array_source_33(Idx)
40548  , p_source_34 => l_array_source_34(Idx)
40549  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40550  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40551  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40552  , p_source_39 => l_array_source_39(Idx)
40553  , p_source_40 => l_array_source_40(Idx)
40554  , p_source_41 => l_array_source_41(Idx)
40555  , p_source_42 => l_array_source_42(Idx)
40556  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40557  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40558  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40559  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40560  , p_source_46 => l_array_source_46(Idx)
40561  , p_source_48 => l_array_source_48(Idx)
40562  , p_source_49 => l_array_source_49(Idx)
40563  , p_source_50 => l_array_source_50(Idx)
40564  , p_source_51 => l_array_source_51(Idx)
40565  , p_source_52 => l_array_source_52(Idx)
40566  , p_source_55 => l_array_source_55(Idx)
40567  , p_source_56 => l_array_source_56(Idx)
40568  );
40569 If(l_balance_type_code = 'A') THEN
40570   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40571 END IF;
40572 
40573 --
40574 
40575 
40576 --
40577 AcctLineType_36 (
40578  p_application_id  => p_application_id
40579  ,p_event_id     => l_event_id
40580  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40581  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40582  ,p_actual_flag => l_actual_flag
40583  ,p_balance_type_code => l_balance_type_code
40584  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40585  
40586  , p_source_1 => l_array_source_1(Idx)
40587  , p_source_2 => l_array_source_2(Idx)
40588  , p_source_4 => l_array_source_4(Idx)
40589  , p_source_5 => l_array_source_5(Idx)
40590  , p_source_6 => l_array_source_6(Idx)
40591  , p_source_8 => l_array_source_8(Idx)
40592  , p_source_8_meaning => l_array_source_8_meaning(Idx)
40593  , p_source_9 => l_array_source_9(Idx)
40594  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
40595  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
40596  , p_source_14 => l_array_source_14(Idx)
40597  , p_source_15 => l_array_source_15(Idx)
40598  , p_source_17 => l_array_source_17(Idx)
40599  , p_source_19 => l_array_source_19(Idx)
40600  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40601  , p_source_21 => l_array_source_21(Idx)
40602  , p_source_22 => l_array_source_22(Idx)
40603  , p_source_23 => l_array_source_23(Idx)
40604  , p_source_24 => l_array_source_24(Idx)
40605  , p_source_25 => l_array_source_25(Idx)
40606  , p_source_26 => l_array_source_26(Idx)
40607  , p_source_27 => l_array_source_27(Idx)
40608  , p_source_28 => l_array_source_28(Idx)
40609  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40613  , p_source_33 => l_array_source_33(Idx)
40610  , p_source_30 => l_array_source_30(Idx)
40611  , p_source_31 => l_array_source_31(Idx)
40612  , p_source_32 => l_array_source_32(Idx)
40614  , p_source_34 => l_array_source_34(Idx)
40615  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40616  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40617  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40618  , p_source_39 => l_array_source_39(Idx)
40619  , p_source_40 => l_array_source_40(Idx)
40620  , p_source_41 => l_array_source_41(Idx)
40621  , p_source_42 => l_array_source_42(Idx)
40622  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40623  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40624  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40625  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40626  , p_source_46 => l_array_source_46(Idx)
40627  , p_source_48 => l_array_source_48(Idx)
40628  , p_source_49 => l_array_source_49(Idx)
40629  , p_source_50 => l_array_source_50(Idx)
40630  , p_source_51 => l_array_source_51(Idx)
40631  , p_source_52 => l_array_source_52(Idx)
40632  , p_source_55 => l_array_source_55(Idx)
40633  , p_source_56 => l_array_source_56(Idx)
40634  );
40635 If(l_balance_type_code = 'A') THEN
40636   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40637 END IF;
40638 
40639 --
40640 
40641 
40642 --
40643 AcctLineType_37 (
40644  p_application_id  => p_application_id
40645  ,p_event_id     => l_event_id
40646  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40647  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40648  ,p_actual_flag => l_actual_flag
40649  ,p_balance_type_code => l_balance_type_code
40650  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40651  
40652  , p_source_1 => l_array_source_1(Idx)
40653  , p_source_2 => l_array_source_2(Idx)
40654  , p_source_6 => l_array_source_6(Idx)
40655  , p_source_15 => l_array_source_15(Idx)
40656  , p_source_17 => l_array_source_17(Idx)
40657  , p_source_19 => l_array_source_19(Idx)
40658  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40659  , p_source_21 => l_array_source_21(Idx)
40660  , p_source_22 => l_array_source_22(Idx)
40661  , p_source_23 => l_array_source_23(Idx)
40662  , p_source_24 => l_array_source_24(Idx)
40663  , p_source_25 => l_array_source_25(Idx)
40664  , p_source_26 => l_array_source_26(Idx)
40665  , p_source_27 => l_array_source_27(Idx)
40666  , p_source_28 => l_array_source_28(Idx)
40667  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40668  , p_source_30 => l_array_source_30(Idx)
40669  , p_source_31 => l_array_source_31(Idx)
40670  , p_source_32 => l_array_source_32(Idx)
40671  , p_source_33 => l_array_source_33(Idx)
40672  , p_source_34 => l_array_source_34(Idx)
40673  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40674  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40675  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40676  , p_source_39 => l_array_source_39(Idx)
40677  , p_source_40 => l_array_source_40(Idx)
40678  , p_source_41 => l_array_source_41(Idx)
40679  , p_source_42 => l_array_source_42(Idx)
40680  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40681  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40682  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40683  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40684  , p_source_46 => l_array_source_46(Idx)
40685  , p_source_48 => l_array_source_48(Idx)
40686  , p_source_49 => l_array_source_49(Idx)
40687  , p_source_50 => l_array_source_50(Idx)
40688  , p_source_51 => l_array_source_51(Idx)
40689  , p_source_52 => l_array_source_52(Idx)
40690  , p_source_55 => l_array_source_55(Idx)
40691  , p_source_58 => l_array_source_58(Idx)
40692  );
40693 If(l_balance_type_code = 'A') THEN
40694   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40695 END IF;
40696 
40697 --
40698 
40699 
40700 --
40701 AcctLineType_38 (
40702  p_application_id  => p_application_id
40703  ,p_event_id     => l_event_id
40704  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40705  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40706  ,p_actual_flag => l_actual_flag
40707  ,p_balance_type_code => l_balance_type_code
40708  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40709  
40710  , p_source_1 => l_array_source_1(Idx)
40711  , p_source_2 => l_array_source_2(Idx)
40712  , p_source_6 => l_array_source_6(Idx)
40713  , p_source_15 => l_array_source_15(Idx)
40714  , p_source_17 => l_array_source_17(Idx)
40715  , p_source_19 => l_array_source_19(Idx)
40716  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40717  , p_source_21 => l_array_source_21(Idx)
40718  , p_source_22 => l_array_source_22(Idx)
40719  , p_source_23 => l_array_source_23(Idx)
40720  , p_source_24 => l_array_source_24(Idx)
40721  , p_source_25 => l_array_source_25(Idx)
40722  , p_source_26 => l_array_source_26(Idx)
40723  , p_source_27 => l_array_source_27(Idx)
40724  , p_source_28 => l_array_source_28(Idx)
40725  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40726  , p_source_30 => l_array_source_30(Idx)
40727  , p_source_31 => l_array_source_31(Idx)
40728  , p_source_32 => l_array_source_32(Idx)
40729  , p_source_33 => l_array_source_33(Idx)
40730  , p_source_34 => l_array_source_34(Idx)
40731  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
40732  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
40733  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
40734  , p_source_39 => l_array_source_39(Idx)
40735  , p_source_40 => l_array_source_40(Idx)
40736  , p_source_41 => l_array_source_41(Idx)
40737  , p_source_42 => l_array_source_42(Idx)
40741  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40738  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40739  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
40740  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
40742  , p_source_46 => l_array_source_46(Idx)
40743  , p_source_48 => l_array_source_48(Idx)
40744  , p_source_49 => l_array_source_49(Idx)
40745  , p_source_50 => l_array_source_50(Idx)
40746  , p_source_51 => l_array_source_51(Idx)
40747  , p_source_52 => l_array_source_52(Idx)
40748  , p_source_55 => l_array_source_55(Idx)
40749  , p_source_58 => l_array_source_58(Idx)
40750  );
40751 If(l_balance_type_code = 'A') THEN
40752   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40753 END IF;
40754 
40755 --
40756 
40757 
40758 --
40759 AcctLineType_39 (
40760  p_application_id  => p_application_id
40761  ,p_event_id     => l_event_id
40762  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40763  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40764  ,p_actual_flag => l_actual_flag
40765  ,p_balance_type_code => l_balance_type_code
40766  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40767  
40768  , p_source_6 => l_array_source_6(Idx)
40769  , p_source_15 => l_array_source_15(Idx)
40770  , p_source_17 => l_array_source_17(Idx)
40771  , p_source_19 => l_array_source_19(Idx)
40772  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40773  , p_source_21 => l_array_source_21(Idx)
40774  , p_source_22 => l_array_source_22(Idx)
40775  , p_source_23 => l_array_source_23(Idx)
40776  , p_source_24 => l_array_source_24(Idx)
40777  , p_source_25 => l_array_source_25(Idx)
40778  , p_source_26 => l_array_source_26(Idx)
40779  , p_source_27 => l_array_source_27(Idx)
40780  , p_source_28 => l_array_source_28(Idx)
40781  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40782  , p_source_30 => l_array_source_30(Idx)
40783  , p_source_31 => l_array_source_31(Idx)
40784  , p_source_32 => l_array_source_32(Idx)
40785  , p_source_33 => l_array_source_33(Idx)
40786  , p_source_34 => l_array_source_34(Idx)
40787  , p_source_39 => l_array_source_39(Idx)
40788  , p_source_40 => l_array_source_40(Idx)
40789  , p_source_41 => l_array_source_41(Idx)
40790  , p_source_42 => l_array_source_42(Idx)
40791  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40792  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40793  , p_source_46 => l_array_source_46(Idx)
40794  , p_source_48 => l_array_source_48(Idx)
40795  , p_source_49 => l_array_source_49(Idx)
40796  , p_source_50 => l_array_source_50(Idx)
40797  , p_source_51 => l_array_source_51(Idx)
40798  , p_source_52 => l_array_source_52(Idx)
40799  , p_source_55 => l_array_source_55(Idx)
40800  , p_source_58 => l_array_source_58(Idx)
40801  );
40802 If(l_balance_type_code = 'A') THEN
40803   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40804 END IF;
40805 
40806 --
40807 
40808 
40809 --
40810 AcctLineType_40 (
40811  p_application_id  => p_application_id
40812  ,p_event_id     => l_event_id
40813  ,p_calculate_acctd_flag => l_calculate_acctd_flag
40814  ,p_calculate_g_l_flag => l_calculate_g_l_flag
40815  ,p_actual_flag => l_actual_flag
40816  ,p_balance_type_code => l_balance_type_code
40817  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
40818  
40819  , p_source_6 => l_array_source_6(Idx)
40820  , p_source_15 => l_array_source_15(Idx)
40821  , p_source_17 => l_array_source_17(Idx)
40822  , p_source_19 => l_array_source_19(Idx)
40823  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
40824  , p_source_21 => l_array_source_21(Idx)
40825  , p_source_22 => l_array_source_22(Idx)
40826  , p_source_23 => l_array_source_23(Idx)
40827  , p_source_24 => l_array_source_24(Idx)
40828  , p_source_25 => l_array_source_25(Idx)
40829  , p_source_26 => l_array_source_26(Idx)
40830  , p_source_27 => l_array_source_27(Idx)
40831  , p_source_28 => l_array_source_28(Idx)
40832  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
40833  , p_source_30 => l_array_source_30(Idx)
40834  , p_source_31 => l_array_source_31(Idx)
40835  , p_source_32 => l_array_source_32(Idx)
40836  , p_source_33 => l_array_source_33(Idx)
40837  , p_source_34 => l_array_source_34(Idx)
40838  , p_source_39 => l_array_source_39(Idx)
40839  , p_source_40 => l_array_source_40(Idx)
40840  , p_source_41 => l_array_source_41(Idx)
40841  , p_source_42 => l_array_source_42(Idx)
40842  , p_source_42_meaning => l_array_source_42_meaning(Idx)
40843  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
40844  , p_source_46 => l_array_source_46(Idx)
40845  , p_source_48 => l_array_source_48(Idx)
40846  , p_source_49 => l_array_source_49(Idx)
40847  , p_source_50 => l_array_source_50(Idx)
40848  , p_source_51 => l_array_source_51(Idx)
40849  , p_source_52 => l_array_source_52(Idx)
40850  , p_source_55 => l_array_source_55(Idx)
40851  , p_source_58 => l_array_source_58(Idx)
40852  );
40853 If(l_balance_type_code = 'A') THEN
40854   l_actual_gain_loss_ref := l_gain_or_loss_ref;
40855 END IF;
40856 
40857 --
40858 
40859       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
40860       -- or secondary ledger that has different currency with primary
40861       -- or alc that is calculated by sla
40862       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
40863             (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'))
40864 
40865 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
40866 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
40867           AND (l_actual_flag = 'A')) THEN
40871          ,p_amb_context_code => 'DEFAULT'
40868         XLA_AE_LINES_PKG.CreateGainOrLossLines(
40869           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
40870          ,p_application_id   => p_application_id
40872          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
40873          ,p_event_class_code => C_EVENT_CLASS_CODE
40874          ,p_event_type_code  => C_EVENT_TYPE_CODE
40875          
40876          ,p_gain_ccid        => -1
40877          ,p_loss_ccid        => -1
40878 
40879          ,p_actual_flag      => l_actual_flag
40880          ,p_enc_flag         => null
40881          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
40882          ,p_enc_g_l_ref      => null
40883          );
40884       END IF;
40885    END IF;
40886 END IF;
40887 
40888    ELSE
40889       --
40890       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
40891       --
40892       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
40893          trace
40894             (p_msg      => 'Trancaction revesal option is Y'
40895             ,p_level    => C_LEVEL_STATEMENT
40896             ,p_module   => l_log_module);
40897       END IF;
40898    END IF;
40899 
40900 END LOOP;
40901 l_result := XLA_AE_LINES_PKG.InsertLines ;
40902 end loop;
40903 close line_cur;
40904 
40905 
40906 --
40907 -- insert headers into xla_ae_headers_gt table
40908 --
40909 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
40910 
40911 -- insert into errors table here.
40912 
40913 END LOOP;
40914 
40915 --
40916 -- 4865292
40917 --
40918 -- Compare g_hdr_extract_count with event count in
40919 -- CreateHeadersAndLines.
40920 --
40921 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
40922 
40923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
40924    trace (p_msg     => '# rows extracted from header extract objects '
40925                     || ' (running total): '
40926                     || g_hdr_extract_count
40927          ,p_level   => C_LEVEL_STATEMENT
40928          ,p_module  => l_log_module);
40929 END IF;
40930 
40931 CLOSE header_cur;
40932 --
40933 
40934 --
40935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40936    trace
40937       (p_msg      => 'END of EventClass_61'
40938       ,p_level    => C_LEVEL_PROCEDURE
40939       ,p_module   => l_log_module);
40940 END IF;
40941 --
40942 RETURN l_result;
40943 EXCEPTION
40944 WHEN xla_exceptions_pkg.application_exception THEN
40945    
40946 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
40947 
40948    
40949 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
40950 
40951    RAISE;
40952 
40953 WHEN NO_DATA_FOUND THEN
40954 
40955 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
40956 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
40957 
40958 FOR header_record IN header_cur
40959 LOOP
40960     l_array_header_events(header_record.event_id) := header_record.event_id;
40961 END LOOP;
40962 
40963 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
40964 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
40965 
40966 fnd_file.put_line(fnd_file.LOG, '                    ');
40967 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
40968 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
40969 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
40970 
40971 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
40972 LOOP
40973 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
40974 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
40975         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
40976 	END IF;
40977 END LOOP;
40978 
40979 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
40980 fnd_file.put_line(fnd_file.LOG, '                    ');
40981 
40982 
40983 xla_exceptions_pkg.raise_message
40984       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_61');
40985 
40986 
40987 WHEN OTHERS THEN
40988    xla_exceptions_pkg.raise_message
40989       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_61');
40990 END EventClass_61;
40991 --
40992 
40993 ---------------------------------------
40994 --
40995 -- PRIVATE PROCEDURE
40996 --         insert_sources_62
40997 --
40998 ----------------------------------------
40999 --
41000 PROCEDURE insert_sources_62(
41001                                 p_target_ledger_id       IN NUMBER
41002                               , p_language               IN VARCHAR2
41003                               , p_sla_ledger_id          IN NUMBER
41004                               , p_pad_start_date         IN DATE
41005                               , p_pad_end_date           IN DATE
41006                          )
41007 IS
41008 
41009 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICES_ALL';
41010 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVOICES';
41011 p_apps_owner                   VARCHAR2(30);
41012 l_log_module                   VARCHAR2(240);
41013 BEGIN
41014 IF g_log_enabled THEN
41015       l_log_module := C_DEFAULT_MODULE||'.insert_sources_62';
41016 END IF;
41017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41018 
41019       trace
41020          (p_msg      => 'BEGIN of insert_sources_62'
41021          ,p_level    => C_LEVEL_PROCEDURE
41022          ,p_module   => l_log_module);
41023 
41024 END IF;
41025 
41029   FROM fnd_oracle_userid
41026 -- select APPS owner
41027 SELECT oracle_username
41028   INTO p_apps_owner
41030  WHERE read_only_flag = 'U'
41031 ;
41032 
41033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
41034       trace
41035          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
41036                         ' - p_language = '||p_language||
41037                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
41038                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
41039                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
41040                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
41041          ,p_level    => C_LEVEL_STATEMENT
41042          ,p_module   => l_log_module);
41043 END IF;
41044 
41045 
41046 --
41047 INSERT INTO xla_diag_sources --hdr2
41048 (
41049         event_id
41050       , ledger_id
41051       , sla_ledger_id
41052       , description_language
41053       , object_name
41054       , object_type_code
41055       , line_number
41056       , source_application_id
41057       , source_type_code
41058       , source_code
41059       , source_value
41060       , source_meaning
41061       , created_by
41062       , creation_date
41063       , last_update_date
41064       , last_updated_by
41065       , last_update_login
41066       , program_update_date
41067       , program_application_id
41068       , program_id
41069       , request_id
41070 )
41071 SELECT
41072         event_id
41073       , p_target_ledger_id
41074       , p_sla_ledger_id
41075       , p_language
41076       , object_name
41077       , object_type_code
41078       , line_number
41079       , source_application_id
41080       , source_type_code
41081       , source_code
41082       , SUBSTR(source_value ,1,1996)
41083       , SUBSTR(source_meaning ,1,200)
41084       , xla_environment_pkg.g_Usr_Id
41085       , TRUNC(SYSDATE)
41086       , TRUNC(SYSDATE)
41087       , xla_environment_pkg.g_Usr_Id
41088       , xla_environment_pkg.g_Login_Id
41089       , TRUNC(SYSDATE)
41090       , xla_environment_pkg.g_Prog_Appl_Id
41091       , xla_environment_pkg.g_Prog_Id
41092       , xla_environment_pkg.g_Req_Id
41093   FROM (
41094        SELECT xet.event_id                  event_id
41095             , 0                          line_number
41096             , CASE r
41097                WHEN 1 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41098                 WHEN 2 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41099                 WHEN 3 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41100                 WHEN 4 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41101                 WHEN 5 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41102                 WHEN 6 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41103                 WHEN 7 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41104                 WHEN 8 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41105                 WHEN 9 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41106                 WHEN 10 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41107                 WHEN 11 THEN 'AP_SYSTEM_PARAMETERS_EXTRACT_V' 
41108                 WHEN 12 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41109                 WHEN 13 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41110                 WHEN 14 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
41111                 
41112                ELSE null
41113               END                           object_name
41114             , CASE r
41115                 WHEN 1 THEN 'HEADER' 
41116                 WHEN 2 THEN 'HEADER' 
41117                 WHEN 3 THEN 'HEADER' 
41118                 WHEN 4 THEN 'HEADER' 
41119                 WHEN 5 THEN 'HEADER' 
41120                 WHEN 6 THEN 'HEADER' 
41121                 WHEN 7 THEN 'HEADER' 
41122                 WHEN 8 THEN 'HEADER' 
41123                 WHEN 9 THEN 'HEADER' 
41124                 WHEN 10 THEN 'HEADER' 
41125                 WHEN 11 THEN 'HEADER' 
41126                 WHEN 12 THEN 'HEADER' 
41127                 WHEN 13 THEN 'HEADER' 
41128                 WHEN 14 THEN 'HEADER' 
41129                 
41130                 ELSE null
41131               END                           object_type_code
41132             , CASE r
41133                 WHEN 1 THEN '200' 
41134                 WHEN 2 THEN '200' 
41135                 WHEN 3 THEN '200' 
41136                 WHEN 4 THEN '200' 
41137                 WHEN 5 THEN '200' 
41138                 WHEN 6 THEN '200' 
41139                 WHEN 7 THEN '200' 
41140                 WHEN 8 THEN '200' 
41141                 WHEN 9 THEN '200' 
41142                 WHEN 10 THEN '200' 
41143                 WHEN 11 THEN '200' 
41144                 WHEN 12 THEN '200' 
41145                 WHEN 13 THEN '200' 
41146                 WHEN 14 THEN '200' 
41147                 
41148                 ELSE null
41149               END                           source_application_id
41150             , 'S'             source_type_code
41151             , CASE r
41152                 WHEN 1 THEN 'AI_PAYMENT_STATUS_FLAG' 
41153                 WHEN 2 THEN 'AI_INVOICE_TYPE_LOOKUP_CODE' 
41154                 WHEN 3 THEN 'AI_INVOICE_ID' 
41155                 WHEN 4 THEN 'AI_INVOICE_CURRENCY_CODE' 
41156                 WHEN 5 THEN 'INV_EXCHANGE_DATE' 
41157                 WHEN 6 THEN 'INV_EXCHANGE_RATE' 
41158                 WHEN 7 THEN 'INV_EXCHANGE_RATE_TYPE' 
41159                 WHEN 8 THEN 'AI_VENDOR_ID' 
41160                 WHEN 9 THEN 'AI_VENDOR_SITE_ID' 
41161                 WHEN 10 THEN 'THIRD_PARTY_TYPE' 
41162                 WHEN 11 THEN 'FSP_PURCH_ENCUMBRANCE_FLAG' 
41163                 WHEN 12 THEN 'INV_DOC_SEQUENCE_CATEGORY' 
41164                 WHEN 13 THEN 'INV_DOC_SEQUENCE_IDENTIFIER' 
41165                 WHEN 14 THEN 'INV_DOC_SEQUENCE_VALUE' 
41166                 
41170                 WHEN 1 THEN TO_CHAR(h2.AI_PAYMENT_STATUS_FLAG)
41167                 ELSE null
41168               END                           source_code
41169             , CASE r
41171                 WHEN 2 THEN TO_CHAR(h2.AI_INVOICE_TYPE_LOOKUP_CODE)
41172                 WHEN 3 THEN TO_CHAR(h2.AI_INVOICE_ID)
41173                 WHEN 4 THEN TO_CHAR(h2.AI_INVOICE_CURRENCY_CODE)
41174                 WHEN 5 THEN TO_CHAR(h2.INV_EXCHANGE_DATE)
41175                 WHEN 6 THEN TO_CHAR(h2.INV_EXCHANGE_RATE)
41176                 WHEN 7 THEN TO_CHAR(h2.INV_EXCHANGE_RATE_TYPE)
41177                 WHEN 8 THEN TO_CHAR(h2.AI_VENDOR_ID)
41178                 WHEN 9 THEN TO_CHAR(h2.AI_VENDOR_SITE_ID)
41179                 WHEN 10 THEN TO_CHAR(h2.THIRD_PARTY_TYPE)
41180                 WHEN 11 THEN TO_CHAR(h3.FSP_PURCH_ENCUMBRANCE_FLAG)
41181                 WHEN 12 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_CATEGORY)
41182                 WHEN 13 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_IDENTIFIER)
41183                 WHEN 14 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_VALUE)
41184                 
41185                 ELSE null
41186               END                           source_value
41187             , CASE r
41188                 WHEN 2 THEN fvl13.meaning
41189                 WHEN 11 THEN fvl60.meaning
41190                 
41191                 ELSE null
41192               END               source_meaning
41193          FROM xla_events_gt     xet  
41194       , AP_INVOICE_EXTRACT_HEADER_V  h2
41195       , AP_SYSTEM_PARAMETERS_EXTRACT_V  h3
41196   , fnd_lookup_values    fvl13
41197   , fnd_lookup_values    fvl60
41198              ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
41199          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
41200            AND xet.event_class_code = C_EVENT_CLASS_CODE
41201               AND h2.event_id = xet.event_id
41202  AND h3.asp_org_id = h2.ai_org_id   AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
41203   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
41204   AND fvl13.view_application_id(+) = 200
41205   AND fvl13.language(+)            = USERENV('LANG')
41206      AND fvl60.lookup_type(+)         = 'YES_NO'
41207   AND fvl60.lookup_code(+)         = h3.FSP_PURCH_ENCUMBRANCE_FLAG
41208   AND fvl60.view_application_id(+) = 0
41209   AND fvl60.language(+)            = USERENV('LANG')
41210   
41211 )
41212 ;
41213 --
41214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
41215 
41216       trace
41217          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
41218          ,p_level    => C_LEVEL_STATEMENT
41219          ,p_module   => l_log_module);
41220 
41221 END IF;
41222 --
41223 
41224 
41225 
41226 --
41227 INSERT INTO xla_diag_sources  --line2
41228 (
41229         event_id
41230       , ledger_id
41231       , sla_ledger_id
41232       , description_language
41233       , object_name
41234       , object_type_code
41235       , line_number
41236       , source_application_id
41237       , source_type_code
41238       , source_code
41239       , source_value
41240       , source_meaning
41241       , created_by
41242       , creation_date
41243       , last_update_date
41244       , last_updated_by
41245       , last_update_login
41246       , program_update_date
41247       , program_application_id
41248       , program_id
41249       , request_id
41250 )
41251 SELECT  event_id
41252       , p_target_ledger_id
41253       , p_sla_ledger_id
41254       , p_language
41255       , object_name
41256       , object_type_code
41257       , line_number
41258       , source_application_id
41259       , source_type_code
41260       , source_code
41261       , SUBSTR(source_value,1,1996)
41262       , SUBSTR(source_meaning ,1,200)
41263       , xla_environment_pkg.g_Usr_Id
41264       , TRUNC(SYSDATE)
41265       , TRUNC(SYSDATE)
41266       , xla_environment_pkg.g_Usr_Id
41267       , xla_environment_pkg.g_Login_Id
41268       , TRUNC(SYSDATE)
41269       , xla_environment_pkg.g_Prog_Appl_Id
41270       , xla_environment_pkg.g_Prog_Id
41271       , xla_environment_pkg.g_Req_Id
41272   FROM (
41273        SELECT xet.event_id                  event_id
41274             , l1.line_number                 line_number
41275             , CASE r
41276                WHEN 1 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41277                 WHEN 2 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41278                 WHEN 3 THEN 'FV_XLA_AP_REF_V' 
41279                 WHEN 4 THEN 'FV_XLA_AP_REF_V' 
41280                 WHEN 5 THEN 'FV_XLA_AP_REF_V' 
41281                 WHEN 6 THEN 'FV_XLA_AP_REF_V' 
41282                 WHEN 7 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41283                 WHEN 8 THEN 'FV_XLA_AP_REF_V' 
41284                 WHEN 9 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41285                 WHEN 10 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41286                 WHEN 11 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41287                 WHEN 12 THEN 'FV_XLA_AP_REF_V' 
41288                 WHEN 13 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41289                 WHEN 14 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41290                 WHEN 15 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41291                 WHEN 16 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41292                 WHEN 17 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41293                 WHEN 18 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41294                 WHEN 19 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41295                 WHEN 20 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41296                 WHEN 21 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41297                 WHEN 22 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41298                 WHEN 23 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41299                 WHEN 24 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41300                 WHEN 25 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41304                 WHEN 29 THEN 'FV_XLA_AP_REF_V' 
41301                 WHEN 26 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41302                 WHEN 27 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41303                 WHEN 28 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41305                 WHEN 30 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41306                 WHEN 31 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41307                 WHEN 32 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41308                 WHEN 33 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41309                 WHEN 34 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41310                 WHEN 35 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41311                 WHEN 36 THEN 'ZX_AP_DEF_TAX_EXTRACT_V' 
41312                 WHEN 37 THEN 'ZX_AP_TAX_JRNL_LINE_DESC_V' 
41313                 WHEN 38 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41314                 WHEN 39 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41315                 WHEN 40 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41316                 WHEN 41 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41317                 WHEN 42 THEN 'FV_XLA_AP_REF_V' 
41318                 WHEN 43 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41319                 WHEN 44 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41320                 WHEN 45 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41321                 WHEN 46 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41322                 WHEN 47 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41323                 WHEN 48 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41324                 WHEN 49 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41325                 WHEN 50 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41326                 WHEN 51 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41327                 WHEN 52 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41328                 WHEN 53 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41329                 WHEN 54 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
41330                 WHEN 55 THEN 'FV_XLA_AP_REF_V' 
41331                 
41332                ELSE null
41333               END                           object_name
41334             , CASE r
41335                 WHEN 1 THEN 'LINE' 
41336                 WHEN 2 THEN 'LINE' 
41337                 WHEN 3 THEN 'LINE' 
41338                 WHEN 4 THEN 'LINE' 
41339                 WHEN 5 THEN 'LINE' 
41340                 WHEN 6 THEN 'LINE' 
41341                 WHEN 7 THEN 'LINE' 
41342                 WHEN 8 THEN 'LINE' 
41343                 WHEN 9 THEN 'LINE' 
41344                 WHEN 10 THEN 'LINE' 
41345                 WHEN 11 THEN 'LINE' 
41346                 WHEN 12 THEN 'LINE' 
41347                 WHEN 13 THEN 'LINE' 
41348                 WHEN 14 THEN 'LINE' 
41349                 WHEN 15 THEN 'LINE' 
41350                 WHEN 16 THEN 'LINE' 
41351                 WHEN 17 THEN 'LINE' 
41352                 WHEN 18 THEN 'LINE' 
41353                 WHEN 19 THEN 'LINE' 
41354                 WHEN 20 THEN 'LINE' 
41355                 WHEN 21 THEN 'LINE' 
41356                 WHEN 22 THEN 'LINE' 
41357                 WHEN 23 THEN 'LINE' 
41358                 WHEN 24 THEN 'LINE' 
41359                 WHEN 25 THEN 'LINE' 
41360                 WHEN 26 THEN 'LINE' 
41361                 WHEN 27 THEN 'LINE' 
41362                 WHEN 28 THEN 'LINE' 
41363                 WHEN 29 THEN 'LINE' 
41364                 WHEN 30 THEN 'LINE' 
41365                 WHEN 31 THEN 'LINE' 
41366                 WHEN 32 THEN 'LINE' 
41367                 WHEN 33 THEN 'LINE' 
41368                 WHEN 34 THEN 'LINE' 
41369                 WHEN 35 THEN 'LINE' 
41370                 WHEN 36 THEN 'LINE' 
41371                 WHEN 37 THEN 'LINE' 
41372                 WHEN 38 THEN 'LINE' 
41373                 WHEN 39 THEN 'LINE' 
41374                 WHEN 40 THEN 'LINE' 
41375                 WHEN 41 THEN 'LINE' 
41376                 WHEN 42 THEN 'LINE' 
41377                 WHEN 43 THEN 'LINE' 
41378                 WHEN 44 THEN 'LINE' 
41379                 WHEN 45 THEN 'LINE' 
41380                 WHEN 46 THEN 'LINE' 
41381                 WHEN 47 THEN 'LINE' 
41382                 WHEN 48 THEN 'LINE' 
41383                 WHEN 49 THEN 'LINE' 
41384                 WHEN 50 THEN 'LINE' 
41385                 WHEN 51 THEN 'LINE' 
41386                 WHEN 52 THEN 'LINE' 
41387                 WHEN 53 THEN 'LINE' 
41388                 WHEN 54 THEN 'LINE' 
41389                 WHEN 55 THEN 'LINE' 
41390                 
41391                 ELSE null
41392               END                           object_type_code
41393             , CASE r
41394                 WHEN 1 THEN '200' 
41395                 WHEN 2 THEN '200' 
41396                 WHEN 3 THEN '8901' 
41397                 WHEN 4 THEN '8901' 
41398                 WHEN 5 THEN '8901' 
41399                 WHEN 6 THEN '8901' 
41400                 WHEN 7 THEN '200' 
41401                 WHEN 8 THEN '8901' 
41402                 WHEN 9 THEN '200' 
41403                 WHEN 10 THEN '200' 
41404                 WHEN 11 THEN '200' 
41405                 WHEN 12 THEN '8901' 
41406                 WHEN 13 THEN '200' 
41407                 WHEN 14 THEN '200' 
41408                 WHEN 15 THEN '200' 
41409                 WHEN 16 THEN '200' 
41410                 WHEN 17 THEN '200' 
41411                 WHEN 18 THEN '200' 
41412                 WHEN 19 THEN '200' 
41413                 WHEN 20 THEN '200' 
41414                 WHEN 21 THEN '200' 
41415                 WHEN 22 THEN '200' 
41416                 WHEN 23 THEN '200' 
41417                 WHEN 24 THEN '200' 
41418                 WHEN 25 THEN '200' 
41419                 WHEN 26 THEN '200' 
41420                 WHEN 27 THEN '200' 
41421                 WHEN 28 THEN '200' 
41422                 WHEN 29 THEN '8901' 
41423                 WHEN 30 THEN '200' 
41424                 WHEN 31 THEN '200' 
41425                 WHEN 32 THEN '200' 
41426                 WHEN 33 THEN '200' 
41430                 WHEN 37 THEN '200' 
41427                 WHEN 34 THEN '200' 
41428                 WHEN 35 THEN '200' 
41429                 WHEN 36 THEN '200' 
41431                 WHEN 38 THEN '200' 
41432                 WHEN 39 THEN '200' 
41433                 WHEN 40 THEN '200' 
41434                 WHEN 41 THEN '200' 
41435                 WHEN 42 THEN '8901' 
41436                 WHEN 43 THEN '200' 
41437                 WHEN 44 THEN '200' 
41438                 WHEN 45 THEN '200' 
41439                 WHEN 46 THEN '200' 
41440                 WHEN 47 THEN '200' 
41441                 WHEN 48 THEN '200' 
41442                 WHEN 49 THEN '200' 
41443                 WHEN 50 THEN '200' 
41444                 WHEN 51 THEN '200' 
41445                 WHEN 52 THEN '200' 
41446                 WHEN 53 THEN '200' 
41447                 WHEN 54 THEN '200' 
41448                 WHEN 55 THEN '8901' 
41449                 
41450                 ELSE null
41451               END                           source_application_id
41452             , 'S'             source_type_code
41453             , CASE r
41454                 WHEN 1 THEN 'AID_DESCRIPTION' 
41455                 WHEN 2 THEN 'AID_DIST_CCID' 
41456                 WHEN 3 THEN 'FEDERAL_ANTICIPATION' 
41457                 WHEN 4 THEN 'FEDERAL_FUND_CATEGORY' 
41458                 WHEN 5 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
41459                 WHEN 6 THEN 'FEDERAL_FUND_CAT_DESC' 
41460                 WHEN 7 THEN 'AID_LINE_TYPE_LOOKUP_CODE' 
41461                 WHEN 8 THEN 'FEDERAL_PRIOR_YEAR_FLAG' 
41462                 WHEN 9 THEN 'ENCUMBRANCE_AMOUNT' 
41463                 WHEN 10 THEN 'POD_ACCRUE_ON_RECEIPT_FLAG' 
41464                 WHEN 11 THEN 'PO_DISTRIBUTION_ID' 
41465                 WHEN 12 THEN 'FEDERAL_ADJUSTMENT_TYPE' 
41466                 WHEN 13 THEN 'DIST_ACCOUNT_REVERSAL_OPTION' 
41467                 WHEN 14 THEN 'DISTRIBUTION_LINK_TYPE' 
41468                 WHEN 15 THEN 'ALLOC_TO_MAIN_DIST_ID' 
41469                 WHEN 16 THEN 'BUS_FLOW_AP_APP_ID' 
41470                 WHEN 17 THEN 'BUS_FLOW_INV_DIST_TYPE' 
41471                 WHEN 18 THEN 'BUS_FLOW_INV_ENTITY_CODE' 
41472                 WHEN 19 THEN 'BUS_FLOW_INV_DIST_ID' 
41473                 WHEN 20 THEN 'BUS_FLOW_INV_ID' 
41474                 WHEN 21 THEN 'AID_INVOICE_DIST_ID' 
41475                 WHEN 22 THEN 'UPG_ENC_CR_CCID' 
41476                 WHEN 23 THEN 'UPG_ENC_CR_AMT' 
41477                 WHEN 24 THEN 'UPG_ENC_CR_BASE_AMT' 
41478                 WHEN 25 THEN 'UPG_ENC_DR_CCID' 
41479                 WHEN 26 THEN 'UPG_ENC_DR_AMT' 
41480                 WHEN 27 THEN 'UPG_ENC_DR_BASE_AMT' 
41481                 WHEN 28 THEN 'UPG_AP_ENCUM_OPTION' 
41482                 WHEN 29 THEN 'FEDERAL_ANTICIPATED_AMT' 
41483                 WHEN 30 THEN 'DEFERRED_END_DATE' 
41484                 WHEN 31 THEN 'DEFERRED_OPTION' 
41485                 WHEN 32 THEN 'DEFERRED_START_DATE' 
41486                 WHEN 33 THEN 'OVERRIDE_ACCTD_AMT_FLAG' 
41487                 WHEN 34 THEN 'AID_PARENT_REVERSAL_ID' 
41488                 WHEN 35 THEN 'AID_STAT_AMOUNT' 
41489                 WHEN 36 THEN 'TAX_LINE_ID' 
41490                 WHEN 37 THEN 'REC_NREC_TAX_DIST_ID' 
41491                 WHEN 38 THEN 'SUMMARY_TAX_LINE_ID' 
41492                 WHEN 39 THEN 'UPG_CR_ENC_TYPE_ID' 
41493                 WHEN 40 THEN 'UPG_DR_ENC_TYPE_ID' 
41494                 WHEN 41 THEN 'ENCUMBRANCE_BASE_AMOUNT' 
41495                 WHEN 42 THEN 'FEDERAL_UNANTICIPATED_AMT' 
41496                 WHEN 43 THEN 'AID_AMOUNT' 
41497                 WHEN 44 THEN 'INV_DIST_BASE_AMOUNT' 
41498                 WHEN 45 THEN 'AID_BASE_AMT_NO_ROUND' 
41499                 WHEN 46 THEN 'AID_AMOUNT_VARIANCE' 
41500                 WHEN 47 THEN 'AID_BASE_AMOUNT_VARIANCE' 
41501                 WHEN 48 THEN 'AID_QUANTITY_VARIANCE' 
41502                 WHEN 49 THEN 'AID_BASE_QUANTITY_VARIANCE' 
41503                 WHEN 50 THEN 'BUS_FLOW_PO_APP_ID' 
41504                 WHEN 51 THEN 'BUS_FLOW_PO_DIST_TYPE' 
41505                 WHEN 52 THEN 'BUS_FLOW_PO_ENTITY_CODE' 
41506                 WHEN 53 THEN 'BUS_FLOW_PO_DIST_ID' 
41507                 WHEN 54 THEN 'BUS_FLOW_PO_DOC_ID' 
41508                 WHEN 55 THEN 'FEDERAL_PAID_UNEXP_OBG_AMT' 
41509                 
41510                 ELSE null
41511               END                           source_code
41512             , CASE r
41513                 WHEN 1 THEN TO_CHAR(l1.AID_DESCRIPTION)
41514                 WHEN 2 THEN TO_CHAR(l1.AID_DIST_CCID)
41515                 WHEN 3 THEN TO_CHAR(l4.FEDERAL_ANTICIPATION)
41516                 WHEN 4 THEN TO_CHAR(l4.FEDERAL_FUND_CATEGORY)
41517                 WHEN 5 THEN TO_CHAR(l4.FEDERAL_FUND_EXPIRED_STATUS)
41518                 WHEN 6 THEN TO_CHAR(l4.FEDERAL_FUND_CAT_DESC)
41519                 WHEN 7 THEN TO_CHAR(l1.AID_LINE_TYPE_LOOKUP_CODE)
41520                 WHEN 8 THEN TO_CHAR(l4.FEDERAL_PRIOR_YEAR_FLAG)
41521                 WHEN 9 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
41522                 WHEN 10 THEN TO_CHAR(l1.POD_ACCRUE_ON_RECEIPT_FLAG)
41523                 WHEN 11 THEN TO_CHAR(l1.PO_DISTRIBUTION_ID)
41524                 WHEN 12 THEN TO_CHAR(l4.FEDERAL_ADJUSTMENT_TYPE)
41525                 WHEN 13 THEN TO_CHAR(l1.DIST_ACCOUNT_REVERSAL_OPTION)
41526                 WHEN 14 THEN TO_CHAR(l1.DISTRIBUTION_LINK_TYPE)
41527                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_MAIN_DIST_ID)
41528                 WHEN 16 THEN TO_CHAR(l1.BUS_FLOW_AP_APP_ID)
41529                 WHEN 17 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_TYPE)
41530                 WHEN 18 THEN TO_CHAR(l1.BUS_FLOW_INV_ENTITY_CODE)
41531                 WHEN 19 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_ID)
41532                 WHEN 20 THEN TO_CHAR(l1.BUS_FLOW_INV_ID)
41533                 WHEN 21 THEN TO_CHAR(l1.AID_INVOICE_DIST_ID)
41534                 WHEN 22 THEN TO_CHAR(l1.UPG_ENC_CR_CCID)
41535                 WHEN 23 THEN TO_CHAR(l1.UPG_ENC_CR_AMT)
41536                 WHEN 24 THEN TO_CHAR(l1.UPG_ENC_CR_BASE_AMT)
41540                 WHEN 28 THEN TO_CHAR(l1.UPG_AP_ENCUM_OPTION)
41537                 WHEN 25 THEN TO_CHAR(l1.UPG_ENC_DR_CCID)
41538                 WHEN 26 THEN TO_CHAR(l1.UPG_ENC_DR_AMT)
41539                 WHEN 27 THEN TO_CHAR(l1.UPG_ENC_DR_BASE_AMT)
41541                 WHEN 29 THEN TO_CHAR(l4.FEDERAL_ANTICIPATED_AMT)
41542                 WHEN 30 THEN TO_CHAR(l1.DEFERRED_END_DATE)
41543                 WHEN 31 THEN TO_CHAR(l1.DEFERRED_OPTION)
41544                 WHEN 32 THEN TO_CHAR(l1.DEFERRED_START_DATE)
41545                 WHEN 33 THEN TO_CHAR(l1.OVERRIDE_ACCTD_AMT_FLAG)
41546                 WHEN 34 THEN TO_CHAR(l1.AID_PARENT_REVERSAL_ID)
41547                 WHEN 35 THEN TO_CHAR(l1.AID_STAT_AMOUNT)
41548                 WHEN 36 THEN TO_CHAR(l5.TAX_LINE_ID)
41549                 WHEN 37 THEN TO_CHAR(l6.REC_NREC_TAX_DIST_ID)
41550                 WHEN 38 THEN TO_CHAR(l1.SUMMARY_TAX_LINE_ID)
41551                 WHEN 39 THEN TO_CHAR(l1.UPG_CR_ENC_TYPE_ID)
41552                 WHEN 40 THEN TO_CHAR(l1.UPG_DR_ENC_TYPE_ID)
41553                 WHEN 41 THEN TO_CHAR(l1.ENCUMBRANCE_BASE_AMOUNT)
41554                 WHEN 42 THEN TO_CHAR(l4.FEDERAL_UNANTICIPATED_AMT)
41555                 WHEN 43 THEN TO_CHAR(l1.AID_AMOUNT)
41556                 WHEN 44 THEN TO_CHAR(l1.INV_DIST_BASE_AMOUNT)
41557                 WHEN 45 THEN TO_CHAR(l1.AID_BASE_AMT_NO_ROUND)
41558                 WHEN 46 THEN TO_CHAR(l1.AID_AMOUNT_VARIANCE)
41559                 WHEN 47 THEN TO_CHAR(l1.AID_BASE_AMOUNT_VARIANCE)
41560                 WHEN 48 THEN TO_CHAR(l1.AID_QUANTITY_VARIANCE)
41561                 WHEN 49 THEN TO_CHAR(l1.AID_BASE_QUANTITY_VARIANCE)
41562                 WHEN 50 THEN TO_CHAR(l1.BUS_FLOW_PO_APP_ID)
41563                 WHEN 51 THEN TO_CHAR(l1.BUS_FLOW_PO_DIST_TYPE)
41564                 WHEN 52 THEN TO_CHAR(l1.BUS_FLOW_PO_ENTITY_CODE)
41565                 WHEN 53 THEN TO_CHAR(l1.BUS_FLOW_PO_DIST_ID)
41566                 WHEN 54 THEN TO_CHAR(l1.BUS_FLOW_PO_DOC_ID)
41567                 WHEN 55 THEN TO_CHAR(l4.FEDERAL_PAID_UNEXP_OBG_AMT)
41568                 
41569                 ELSE null
41570               END                           source_value
41571             , CASE r
41572                 WHEN 7 THEN fvl8.meaning
41573                 WHEN 10 THEN fvl11.meaning
41574                 WHEN 33 THEN fvl42.meaning
41575                 
41576                 ELSE null
41577               END               source_meaning
41578          FROM  xla_events_gt     xet  
41579         , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
41580         , FV_XLA_AP_REF_V  l4
41581         , ZX_AP_DEF_TAX_EXTRACT_V  l5
41582         , ZX_AP_TAX_JRNL_LINE_DESC_V  l6
41583   , fnd_lookup_values    fvl8
41584   , fnd_lookup_values    fvl11
41585   , fnd_lookup_values    fvl42
41586             , (select rownum r from all_objects where rownum <= 55 and owner = p_apps_owner)
41587         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
41588           AND xet.event_class_code = C_EVENT_CLASS_CODE
41589             AND l1.event_id          = xet.event_id
41590  AND l4.federal_event_id (+) = l1.event_id  and l4.federal_line_number (+) = l1.line_number AND l1.zrnd_tax_dist_id = l5.rec_nrec_tax_dist_id (+)  AND l1.zrnd_tax_dist_id = l6.rec_nrec_tax_dist_id (+)    AND fvl8.lookup_type(+)         = 
41591 'INVOICE DISTRIBUTION TYPE'
41592   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
41593   AND fvl8.view_application_id(+) = 200
41594   AND fvl8.language(+)            = USERENV('LANG')
41595      AND fvl11.lookup_type(+)         = 'YES_NO'
41596   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
41597   AND fvl11.view_application_id(+) = 0
41598   AND fvl11.language(+)            = USERENV('LANG')
41599      AND fvl42.lookup_type(+)         = 'YES_NO'
41600   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
41601   AND fvl42.view_application_id(+) = 0
41602   AND fvl42.language(+)            = USERENV('LANG')
41603   
41604 )
41605 ;
41606 --
41607 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
41608 
41609       trace
41610          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
41611          ,p_level    => C_LEVEL_STATEMENT
41612          ,p_module   => l_log_module);
41613 
41614 END IF;
41615 
41616 
41617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41618       trace
41619          (p_msg      => 'END of insert_sources_62'
41620          ,p_level    => C_LEVEL_PROCEDURE
41621          ,p_module   => l_log_module);
41622 END IF;
41623 EXCEPTION
41624   WHEN xla_exceptions_pkg.application_exception THEN
41625       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
41626             trace
41627                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
41628                ,p_level    => C_LEVEL_EXCEPTION
41629                ,p_module   => l_log_module);
41630       END IF;
41631       RAISE;
41632   WHEN OTHERS THEN
41633       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
41634             trace
41635                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
41636                ,p_level    => C_LEVEL_EXCEPTION
41637                ,p_module   => l_log_module);
41638        END IF;
41639        xla_exceptions_pkg.raise_message
41640            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.insert_sources_62');
41641 END insert_sources_62;
41642 --
41643 
41644 ---------------------------------------
41645 --
41646 -- PRIVATE FUNCTION
41647 --         EventClass_62
41648 --
41649 ----------------------------------------
41650 --
41651 FUNCTION EventClass_62
41652        (p_application_id         IN NUMBER
41653        ,p_base_ledger_id         IN NUMBER
41654        ,p_target_ledger_id       IN NUMBER
41655        ,p_language               IN VARCHAR2
41656        ,p_currency_code          IN VARCHAR2
41657        ,p_sla_ledger_id          IN NUMBER
41658        ,p_pad_start_date         IN DATE
41659        ,p_pad_end_date           IN DATE
41663 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICES_ALL';
41660        ,p_primary_ledger_id      IN NUMBER)
41661 RETURN BOOLEAN IS
41662 --
41664 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVOICES';
41665 
41666 l_calculate_acctd_flag   VARCHAR2(1) :='N';
41667 l_calculate_g_l_flag     VARCHAR2(1) :='N';
41668 --
41669 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41670 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41671 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
41672 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
41673 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41674 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
41675 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
41676 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41677 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41678 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41679 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41680 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41681 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41682 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
41683 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
41684 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
41685 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
41686 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
41687 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41688 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41689 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41690 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
41691 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
41692 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
41693 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
41694 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
41695 
41696 l_event_id                             NUMBER;
41697 l_previous_event_id                    NUMBER;
41698 l_first_event_id                       NUMBER;
41699 l_last_event_id                        NUMBER;
41700 
41701 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
41702 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
41703 --
41704 --
41705 l_result                    BOOLEAN := TRUE;
41706 l_rows                      NUMBER  := 1000;
41707 l_event_type_name           VARCHAR2(80) := 'All';
41708 l_event_class_name          VARCHAR2(80) := 'Invoices';
41709 l_description               VARCHAR2(4000);
41710 l_transaction_reversal      NUMBER;
41711 l_ae_header_id              NUMBER;
41712 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
41713 l_log_module                VARCHAR2(240);
41714 --
41715 l_acct_reversal_source      VARCHAR2(30);
41716 l_trx_reversal_source       VARCHAR2(30);
41717 
41718 l_continue_with_lines       BOOLEAN := TRUE;
41719 --
41720 l_acc_rev_gl_date_source    DATE;                      -- 4262811
41721 --
41722 type t_array_event_id is table of number index by binary_integer;
41723 
41724 l_rec_array_event                    t_rec_array_event;
41725 l_null_rec_array_event               t_rec_array_event;
41726 l_array_ae_header_id                 xla_number_array_type;
41727 l_actual_flag                        VARCHAR2(1) := NULL;
41728 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
41729 l_balance_type_code                  VARCHAR2(1) :=NULL;
41730 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
41731 
41732 --
41733 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
41734 --
41735 
41736 TYPE t_array_source_7 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_PAYMENT_STATUS_FLAG%TYPE INDEX BY BINARY_INTEGER;
41737 TYPE t_array_source_13 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
41738 TYPE t_array_source_20 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_ID%TYPE INDEX BY BINARY_INTEGER;
41739 TYPE t_array_source_29 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
41740 TYPE t_array_source_36 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
41741 TYPE t_array_source_37 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
41742 TYPE t_array_source_38 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
41743 TYPE t_array_source_43 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_ID%TYPE INDEX BY BINARY_INTEGER;
41744 TYPE t_array_source_44 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
41745 TYPE t_array_source_45 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.THIRD_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
41746 TYPE t_array_source_60 IS TABLE OF AP_SYSTEM_PARAMETERS_EXTRACT_V.FSP_PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
41747 TYPE t_array_source_71 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
41748 TYPE t_array_source_72 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
41749 TYPE t_array_source_73 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
41750 
41751 TYPE t_array_source_1 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
41752 TYPE t_array_source_2 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
41756 TYPE t_array_source_6 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CAT_DESC%TYPE INDEX BY BINARY_INTEGER;
41753 TYPE t_array_source_3 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATION%TYPE INDEX BY BINARY_INTEGER;
41754 TYPE t_array_source_4 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
41755 TYPE t_array_source_5 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
41757 TYPE t_array_source_8 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_LINE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
41758 TYPE t_array_source_9 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_PRIOR_YEAR_FLAG%TYPE INDEX BY BINARY_INTEGER;
41759 TYPE t_array_source_10 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
41760 TYPE t_array_source_11 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.POD_ACCRUE_ON_RECEIPT_FLAG%TYPE INDEX BY BINARY_INTEGER;
41761 TYPE t_array_source_12 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
41762 TYPE t_array_source_14 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ADJUSTMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
41763 TYPE t_array_source_15 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DIST_ACCOUNT_REVERSAL_OPTION%TYPE INDEX BY BINARY_INTEGER;
41764 TYPE t_array_source_17 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
41765 TYPE t_array_source_19 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ALLOC_TO_MAIN_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
41766 TYPE t_array_source_21 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_AP_APP_ID%TYPE INDEX BY BINARY_INTEGER;
41767 TYPE t_array_source_22 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
41768 TYPE t_array_source_23 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
41769 TYPE t_array_source_24 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
41770 TYPE t_array_source_25 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ID%TYPE INDEX BY BINARY_INTEGER;
41771 TYPE t_array_source_26 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_INVOICE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
41772 TYPE t_array_source_27 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
41773 TYPE t_array_source_28 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_AMT%TYPE INDEX BY BINARY_INTEGER;
41774 TYPE t_array_source_30 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
41775 TYPE t_array_source_31 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
41776 TYPE t_array_source_32 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_AMT%TYPE INDEX BY BINARY_INTEGER;
41777 TYPE t_array_source_33 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
41778 TYPE t_array_source_34 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_AP_ENCUM_OPTION%TYPE INDEX BY BINARY_INTEGER;
41779 TYPE t_array_source_35 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_ANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
41780 TYPE t_array_source_39 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_END_DATE%TYPE INDEX BY BINARY_INTEGER;
41781 TYPE t_array_source_40 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_OPTION%TYPE INDEX BY BINARY_INTEGER;
41782 TYPE t_array_source_41 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_START_DATE%TYPE INDEX BY BINARY_INTEGER;
41783 TYPE t_array_source_42 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.OVERRIDE_ACCTD_AMT_FLAG%TYPE INDEX BY BINARY_INTEGER;
41784 TYPE t_array_source_46 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_PARENT_REVERSAL_ID%TYPE INDEX BY BINARY_INTEGER;
41785 TYPE t_array_source_47 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_STAT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
41786 TYPE t_array_source_48 IS TABLE OF ZX_AP_DEF_TAX_EXTRACT_V.TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
41787 TYPE t_array_source_49 IS TABLE OF ZX_AP_TAX_JRNL_LINE_DESC_V.REC_NREC_TAX_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
41788 TYPE t_array_source_50 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.SUMMARY_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
41789 TYPE t_array_source_51 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
41790 TYPE t_array_source_52 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
41791 TYPE t_array_source_53 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ENCUMBRANCE_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
41792 TYPE t_array_source_54 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_UNANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
41793 TYPE t_array_source_55 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
41794 TYPE t_array_source_56 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.INV_DIST_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
41795 TYPE t_array_source_58 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_BASE_AMT_NO_ROUND%TYPE INDEX BY BINARY_INTEGER;
41796 TYPE t_array_source_59 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_AMOUNT_VARIANCE%TYPE INDEX BY BINARY_INTEGER;
41797 TYPE t_array_source_61 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_BASE_AMOUNT_VARIANCE%TYPE INDEX BY BINARY_INTEGER;
41798 TYPE t_array_source_62 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_QUANTITY_VARIANCE%TYPE INDEX BY BINARY_INTEGER;
41799 TYPE t_array_source_63 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_BASE_QUANTITY_VARIANCE%TYPE INDEX BY BINARY_INTEGER;
41800 TYPE t_array_source_64 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_PO_APP_ID%TYPE INDEX BY BINARY_INTEGER;
41801 TYPE t_array_source_65 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_PO_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
41802 TYPE t_array_source_66 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
41803 TYPE t_array_source_67 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_PO_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
41804 TYPE t_array_source_68 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
41805 TYPE t_array_source_69 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_PAID_UNEXP_OBG_AMT%TYPE INDEX BY BINARY_INTEGER;
41806 
41807 l_array_source_7              t_array_source_7;
41808 l_array_source_13              t_array_source_13;
41809 l_array_source_13_meaning      t_array_lookup_meaning;
41810 l_array_source_20              t_array_source_20;
41811 l_array_source_29              t_array_source_29;
41812 l_array_source_36              t_array_source_36;
41816 l_array_source_44              t_array_source_44;
41813 l_array_source_37              t_array_source_37;
41814 l_array_source_38              t_array_source_38;
41815 l_array_source_43              t_array_source_43;
41817 l_array_source_45              t_array_source_45;
41818 l_array_source_60              t_array_source_60;
41819 l_array_source_60_meaning      t_array_lookup_meaning;
41820 l_array_source_71              t_array_source_71;
41821 l_array_source_72              t_array_source_72;
41822 l_array_source_73              t_array_source_73;
41823 
41824 l_array_source_1      t_array_source_1;
41825 l_array_source_2      t_array_source_2;
41826 l_array_source_3      t_array_source_3;
41827 l_array_source_4      t_array_source_4;
41828 l_array_source_5      t_array_source_5;
41829 l_array_source_6      t_array_source_6;
41830 l_array_source_8      t_array_source_8;
41831 l_array_source_8_meaning      t_array_lookup_meaning;
41832 l_array_source_9      t_array_source_9;
41833 l_array_source_10      t_array_source_10;
41834 l_array_source_11      t_array_source_11;
41835 l_array_source_11_meaning      t_array_lookup_meaning;
41836 l_array_source_12      t_array_source_12;
41837 l_array_source_14      t_array_source_14;
41838 l_array_source_15      t_array_source_15;
41839 l_array_source_17      t_array_source_17;
41840 l_array_source_19      t_array_source_19;
41841 l_array_source_21      t_array_source_21;
41842 l_array_source_22      t_array_source_22;
41843 l_array_source_23      t_array_source_23;
41844 l_array_source_24      t_array_source_24;
41845 l_array_source_25      t_array_source_25;
41846 l_array_source_26      t_array_source_26;
41847 l_array_source_27      t_array_source_27;
41848 l_array_source_28      t_array_source_28;
41849 l_array_source_30      t_array_source_30;
41850 l_array_source_31      t_array_source_31;
41851 l_array_source_32      t_array_source_32;
41852 l_array_source_33      t_array_source_33;
41853 l_array_source_34      t_array_source_34;
41854 l_array_source_35      t_array_source_35;
41855 l_array_source_39      t_array_source_39;
41856 l_array_source_40      t_array_source_40;
41857 l_array_source_41      t_array_source_41;
41858 l_array_source_42      t_array_source_42;
41859 l_array_source_42_meaning      t_array_lookup_meaning;
41860 l_array_source_46      t_array_source_46;
41861 l_array_source_47      t_array_source_47;
41862 l_array_source_48      t_array_source_48;
41863 l_array_source_49      t_array_source_49;
41864 l_array_source_50      t_array_source_50;
41865 l_array_source_51      t_array_source_51;
41866 l_array_source_52      t_array_source_52;
41867 l_array_source_53      t_array_source_53;
41868 l_array_source_54      t_array_source_54;
41869 l_array_source_55      t_array_source_55;
41870 l_array_source_56      t_array_source_56;
41871 l_array_source_58      t_array_source_58;
41872 l_array_source_59      t_array_source_59;
41873 l_array_source_61      t_array_source_61;
41874 l_array_source_62      t_array_source_62;
41875 l_array_source_63      t_array_source_63;
41876 l_array_source_64      t_array_source_64;
41877 l_array_source_65      t_array_source_65;
41878 l_array_source_66      t_array_source_66;
41879 l_array_source_67      t_array_source_67;
41880 l_array_source_68      t_array_source_68;
41881 l_array_source_69      t_array_source_69;
41882 
41883 --
41884 CURSOR header_cur
41885 IS
41886 SELECT /*+ leading(xet) cardinality(xet,1) */
41887 -- Event Class Code: INVOICES
41888     xet.entity_id
41889    ,xet.legal_entity_id
41890    ,xet.entity_code
41891    ,xet.transaction_number
41892    ,xet.event_id
41893    ,xet.event_class_code
41894    ,xet.event_type_code
41895    ,xet.event_number
41896    ,xet.event_date
41897    ,xet.transaction_date
41898    ,xet.reference_num_1
41899    ,xet.reference_num_2
41900    ,xet.reference_num_3
41901    ,xet.reference_num_4
41902    ,xet.reference_char_1
41903    ,xet.reference_char_2
41904    ,xet.reference_char_3
41905    ,xet.reference_char_4
41906    ,xet.reference_date_1
41907    ,xet.reference_date_2
41908    ,xet.reference_date_3
41909    ,xet.reference_date_4
41910    ,xet.event_created_by
41911    ,xet.budgetary_control_flag 
41912   , h2.AI_PAYMENT_STATUS_FLAG    source_7
41913   , h2.AI_INVOICE_TYPE_LOOKUP_CODE    source_13
41914   , fvl13.meaning   source_13_meaning
41915   , h2.AI_INVOICE_ID    source_20
41916   , h2.AI_INVOICE_CURRENCY_CODE    source_29
41917   , h2.INV_EXCHANGE_DATE    source_36
41918   , h2.INV_EXCHANGE_RATE    source_37
41919   , h2.INV_EXCHANGE_RATE_TYPE    source_38
41920   , h2.AI_VENDOR_ID    source_43
41921   , h2.AI_VENDOR_SITE_ID    source_44
41922   , h2.THIRD_PARTY_TYPE    source_45
41923   , h3.FSP_PURCH_ENCUMBRANCE_FLAG    source_60
41924   , fvl60.meaning   source_60_meaning
41925   , h2.INV_DOC_SEQUENCE_CATEGORY    source_71
41926   , h2.INV_DOC_SEQUENCE_IDENTIFIER    source_72
41927   , h2.INV_DOC_SEQUENCE_VALUE    source_73
41928   FROM xla_events_gt     xet 
41929   , AP_INVOICE_EXTRACT_HEADER_V  h2
41930   , AP_SYSTEM_PARAMETERS_EXTRACT_V  h3
41931   , fnd_lookup_values    fvl13
41932   , fnd_lookup_values    fvl60
41933  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
41934    and xet.event_class_code = C_EVENT_CLASS_CODE
41935    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
41936  AND h3.asp_org_id = h2.ai_org_id   AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
41937   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
41938   AND fvl13.view_application_id(+) = 200
41939   AND fvl13.language(+)            = USERENV('LANG')
41940      AND fvl60.lookup_type(+)         = 'YES_NO'
41941   AND fvl60.lookup_code(+)         = h3.FSP_PURCH_ENCUMBRANCE_FLAG
41942   AND fvl60.view_application_id(+) = 0
41943   AND fvl60.language(+)            = USERENV('LANG')
41944   
41945  ORDER BY event_id
41946 ;
41947 
41951 IS
41948 
41949 --
41950 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
41952 SELECT  /*+ leading(xet) cardinality(xet,1) */
41953 -- Event Class Code: INVOICES
41954     xet.entity_id
41955    ,xet.legal_entity_id
41956    ,xet.entity_code
41957    ,xet.transaction_number
41958    ,xet.event_id
41959    ,xet.event_class_code
41960    ,xet.event_type_code
41961    ,xet.event_number
41962    ,xet.event_date
41963    ,xet.transaction_date
41964    ,xet.reference_num_1
41965    ,xet.reference_num_2
41966    ,xet.reference_num_3
41967    ,xet.reference_num_4
41968    ,xet.reference_char_1
41969    ,xet.reference_char_2
41970    ,xet.reference_char_3
41971    ,xet.reference_char_4
41972    ,xet.reference_date_1
41973    ,xet.reference_date_2
41974    ,xet.reference_date_3
41975    ,xet.reference_date_4
41976    ,xet.event_created_by
41977    ,xet.budgetary_control_flag
41978  , l1.LINE_NUMBER  
41979   , l1.AID_DESCRIPTION    source_1
41980   , l1.AID_DIST_CCID    source_2
41981   , l4.FEDERAL_ANTICIPATION    source_3
41982   , l4.FEDERAL_FUND_CATEGORY    source_4
41983   , l4.FEDERAL_FUND_EXPIRED_STATUS    source_5
41984   , l4.FEDERAL_FUND_CAT_DESC    source_6
41985   , l1.AID_LINE_TYPE_LOOKUP_CODE    source_8
41986   , fvl8.meaning   source_8_meaning
41987   , l4.FEDERAL_PRIOR_YEAR_FLAG    source_9
41988   , l1.ENCUMBRANCE_AMOUNT    source_10
41989   , l1.POD_ACCRUE_ON_RECEIPT_FLAG    source_11
41990   , fvl11.meaning   source_11_meaning
41991   , l1.PO_DISTRIBUTION_ID    source_12
41992   , l4.FEDERAL_ADJUSTMENT_TYPE    source_14
41993   , l1.DIST_ACCOUNT_REVERSAL_OPTION    source_15
41994   , l1.DISTRIBUTION_LINK_TYPE    source_17
41995   , l1.ALLOC_TO_MAIN_DIST_ID    source_19
41996   , l1.BUS_FLOW_AP_APP_ID    source_21
41997   , l1.BUS_FLOW_INV_DIST_TYPE    source_22
41998   , l1.BUS_FLOW_INV_ENTITY_CODE    source_23
41999   , l1.BUS_FLOW_INV_DIST_ID    source_24
42000   , l1.BUS_FLOW_INV_ID    source_25
42001   , l1.AID_INVOICE_DIST_ID    source_26
42002   , l1.UPG_ENC_CR_CCID    source_27
42003   , l1.UPG_ENC_CR_AMT    source_28
42004   , l1.UPG_ENC_CR_BASE_AMT    source_30
42005   , l1.UPG_ENC_DR_CCID    source_31
42006   , l1.UPG_ENC_DR_AMT    source_32
42007   , l1.UPG_ENC_DR_BASE_AMT    source_33
42008   , l1.UPG_AP_ENCUM_OPTION    source_34
42009   , l4.FEDERAL_ANTICIPATED_AMT    source_35
42010   , l1.DEFERRED_END_DATE    source_39
42011   , l1.DEFERRED_OPTION    source_40
42012   , l1.DEFERRED_START_DATE    source_41
42013   , l1.OVERRIDE_ACCTD_AMT_FLAG    source_42
42014   , fvl42.meaning   source_42_meaning
42015   , l1.AID_PARENT_REVERSAL_ID    source_46
42016   , l1.AID_STAT_AMOUNT    source_47
42017   , l5.TAX_LINE_ID    source_48
42018   , l6.REC_NREC_TAX_DIST_ID    source_49
42019   , l1.SUMMARY_TAX_LINE_ID    source_50
42020   , l1.UPG_CR_ENC_TYPE_ID    source_51
42021   , l1.UPG_DR_ENC_TYPE_ID    source_52
42022   , l1.ENCUMBRANCE_BASE_AMOUNT    source_53
42023   , l4.FEDERAL_UNANTICIPATED_AMT    source_54
42024   , l1.AID_AMOUNT    source_55
42025   , l1.INV_DIST_BASE_AMOUNT    source_56
42026   , l1.AID_BASE_AMT_NO_ROUND    source_58
42027   , l1.AID_AMOUNT_VARIANCE    source_59
42028   , l1.AID_BASE_AMOUNT_VARIANCE    source_61
42029   , l1.AID_QUANTITY_VARIANCE    source_62
42030   , l1.AID_BASE_QUANTITY_VARIANCE    source_63
42031   , l1.BUS_FLOW_PO_APP_ID    source_64
42032   , l1.BUS_FLOW_PO_DIST_TYPE    source_65
42033   , l1.BUS_FLOW_PO_ENTITY_CODE    source_66
42034   , l1.BUS_FLOW_PO_DIST_ID    source_67
42035   , l1.BUS_FLOW_PO_DOC_ID    source_68
42036   , l4.FEDERAL_PAID_UNEXP_OBG_AMT    source_69
42037   FROM xla_events_gt     xet 
42038   , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
42039   , FV_XLA_AP_REF_V  l4
42040   , ZX_AP_DEF_TAX_EXTRACT_V  l5
42041   , ZX_AP_TAX_JRNL_LINE_DESC_V  l6
42042   , fnd_lookup_values    fvl8
42043   , fnd_lookup_values    fvl11
42044   , fnd_lookup_values    fvl42
42045  WHERE xet.event_id between x_first_event_id and x_last_event_id
42046    and xet.event_date between p_pad_start_date and p_pad_end_date
42047    and xet.event_class_code = C_EVENT_CLASS_CODE
42048    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
42049  AND l4.Federal_Event_Id (+) = l1.event_Id  AND l4.Federal_line_number (+) = l1.line_number AND l1.ZRND_tax_dist_id = l5.REC_NREC_TAX_DIST_ID (+)  AND l1.ZRND_tax_dist_id = l6.REC_NREC_TAX_DIST_ID (+)    AND fvl8.lookup_type(+)         = 
42050 'INVOICE DISTRIBUTION TYPE'
42051   AND fvl8.lookup_code(+)         = l1.AID_LINE_TYPE_LOOKUP_CODE
42052   AND fvl8.view_application_id(+) = 200
42053   AND fvl8.language(+)            = USERENV('LANG')
42054      AND fvl11.lookup_type(+)         = 'YES_NO'
42055   AND fvl11.lookup_code(+)         = l1.POD_ACCRUE_ON_RECEIPT_FLAG
42056   AND fvl11.view_application_id(+) = 0
42057   AND fvl11.language(+)            = USERENV('LANG')
42058      AND fvl42.lookup_type(+)         = 'YES_NO'
42059   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
42060   AND fvl42.view_application_id(+) = 0
42061   AND fvl42.language(+)            = USERENV('LANG')
42062   ;
42063 
42064 --
42065 BEGIN
42066 IF g_log_enabled THEN
42067    l_log_module := C_DEFAULT_MODULE||'.EventClass_62';
42068 END IF;
42069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42070    trace
42071       (p_msg      => 'BEGIN of EventClass_62'
42072       ,p_level    => C_LEVEL_PROCEDURE
42073       ,p_module   => l_log_module);
42074 END IF;
42075 
42076 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
42077    trace
42078       (p_msg      => 'p_application_id = '||p_application_id||
42079                      ' - p_base_ledger_id = '||p_base_ledger_id||
42080                      ' - p_target_ledger_id  = '||p_target_ledger_id||
42081                      ' - p_language = '||p_language||
42082                      ' - p_currency_code = '||p_currency_code||
42086 END IF;
42083                      ' - p_sla_ledger_id = '||p_sla_ledger_id
42084       ,p_level    => C_LEVEL_STATEMENT
42085       ,p_module   => l_log_module);
42087 --
42088 -- initialze arrays
42089 --
42090 g_array_event.DELETE;
42091 l_rec_array_event := l_null_rec_array_event;
42092 --
42093 --------------------------------------
42094 -- 4262811 Initialze MPA Line Number
42095 --------------------------------------
42096 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
42097 
42098 --
42099 
42100 --
42101 OPEN header_cur;
42102 --
42103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
42104    trace
42105    (p_msg      => 'SQL - FETCH header_cur'
42106    ,p_level    => C_LEVEL_STATEMENT
42107    ,p_module   => l_log_module);
42108 END IF;
42109 --
42110 LOOP
42111 FETCH header_cur BULK COLLECT INTO
42112         l_array_entity_id
42113       , l_array_legal_entity_id
42114       , l_array_entity_code
42115       , l_array_transaction_num
42116       , l_array_event_id
42117       , l_array_class_code
42118       , l_array_event_type
42119       , l_array_event_number
42120       , l_array_event_date
42121       , l_array_transaction_date
42122       , l_array_reference_num_1
42123       , l_array_reference_num_2
42124       , l_array_reference_num_3
42125       , l_array_reference_num_4
42126       , l_array_reference_char_1
42127       , l_array_reference_char_2
42128       , l_array_reference_char_3
42129       , l_array_reference_char_4
42130       , l_array_reference_date_1
42131       , l_array_reference_date_2
42132       , l_array_reference_date_3
42133       , l_array_reference_date_4
42134       , l_array_event_created_by
42135       , l_array_budgetary_control_flag 
42136       , l_array_source_7
42137       , l_array_source_13
42138       , l_array_source_13_meaning
42139       , l_array_source_20
42140       , l_array_source_29
42141       , l_array_source_36
42142       , l_array_source_37
42143       , l_array_source_38
42144       , l_array_source_43
42145       , l_array_source_44
42146       , l_array_source_45
42147       , l_array_source_60
42148       , l_array_source_60_meaning
42149       , l_array_source_71
42150       , l_array_source_72
42151       , l_array_source_73
42152       LIMIT l_rows;
42153 --
42154 IF (C_LEVEL_EVENT >= g_log_level) THEN
42155    trace
42156    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
42157    ,p_level    => C_LEVEL_EVENT
42158    ,p_module   => l_log_module);
42159 END IF;
42160 --
42161 EXIT WHEN l_array_entity_id.COUNT = 0;
42162 
42163 -- initialize arrays
42164 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
42165 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
42166 
42167 --
42168 -- Bug 4458708
42169 --
42170 XLA_AE_LINES_PKG.g_LineNumber := 0;
42171 
42172 
42173 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
42174 g_last_hdr_idx := l_array_event_id.LAST;
42175 --
42176 -- loop for the headers. Each iteration is for each header extract row
42177 -- fetched in header cursor
42178 --
42179 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
42180 
42181 --
42182 -- set event info as cache for other routines to refer event attributes
42183 --
42184 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
42185    (p_application_id           => p_application_id
42186    ,p_primary_ledger_id        => p_primary_ledger_id
42187    ,p_base_ledger_id           => p_base_ledger_id
42188    ,p_target_ledger_id         => p_target_ledger_id
42189    ,p_entity_id                => l_array_entity_id(hdr_idx)
42190    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
42191    ,p_entity_code              => l_array_entity_code(hdr_idx)
42192    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
42193    ,p_event_id                 => l_array_event_id(hdr_idx)
42194    ,p_event_class_code         => l_array_class_code(hdr_idx)
42195    ,p_event_type_code          => l_array_event_type(hdr_idx)
42196    ,p_event_number             => l_array_event_number(hdr_idx)
42197    ,p_event_date               => l_array_event_date(hdr_idx)
42198    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
42199    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
42200    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
42201    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
42202    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
42203    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
42204    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
42205    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
42206    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
42207    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
42208    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
42209    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
42210    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
42211    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
42212    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
42213 
42214 --
42215 -- set the status of entry to C_VALID (0)
42216 --
42217 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
42218 
42219 --
42220 -- initialize a row for ae header
42221 --
42222 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
42223 
42224 l_event_id := l_array_event_id(hdr_idx);
42225 
42226 --
42227 -- storing the hdr_idx for event. May be used by line cursor.
42228 --
42229 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
42230 
42234 --
42231 --
42232 -- store sources from header extract. This can be improved to
42233 -- store only those sources from header extract that may be used in lines
42235 
42236 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
42237 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
42238 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
42239 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
42240 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
42241 g_array_event(l_event_id).array_value_date('source_36') := l_array_source_36(hdr_idx);
42242 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
42243 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
42244 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
42245 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
42246 g_array_event(l_event_id).array_value_char('source_45') := l_array_source_45(hdr_idx);
42247 g_array_event(l_event_id).array_value_char('source_60') := l_array_source_60(hdr_idx);
42248 g_array_event(l_event_id).array_value_char('source_60_meaning') := l_array_source_60_meaning(hdr_idx);
42249 g_array_event(l_event_id).array_value_char('source_71') := l_array_source_71(hdr_idx);
42250 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
42251 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
42252 
42253 --
42254 -- initilaize the status of ae headers for diffrent balance types
42255 -- the status is initialised to C_NOT_CREATED (2)
42256 --
42257 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
42258 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
42259 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
42260 
42261 --
42262 -- call api to validate and store accounting attributes for header
42263 --
42264 
42265 ------------------------------------------------------------
42266 -- Accrual Reversal : to get date for Standard Source (NONE)
42267 ------------------------------------------------------------
42268 l_acc_rev_gl_date_source := NULL;
42269 
42270      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
42271       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_71');
42272      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
42273       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_72');
42274      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
42275       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_73');
42276      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
42277       l_rec_acct_attrs.array_date_value(4) := 
42278 xla_ae_sources_pkg.GetSystemSourceDate(
42279    p_source_code           => 'XLA_EVENT_DATE'
42280  , p_source_type_code      => 'Y'
42281  , p_source_application_id =>  602
42282 );
42283 
42284 
42285 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
42286 
42287 XLA_AE_HEADER_PKG.SetJeCategoryName;
42288 
42289 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
42290 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
42291 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
42292 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
42293 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
42294 
42295 
42296 --
42297 xla_ae_header_pkg.SetHdrDescription(
42298    p_description => Description_1 (
42299    p_application_id => p_application_id 
42300    )
42301 );
42302 --
42303 
42304 -- No header level analytical criteria
42305 
42306 --
42307 --accounting attribute enhancement, bug 3612931
42308 --
42309 l_trx_reversal_source := SUBSTR(NULL, 1,30);
42310 
42311 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
42312    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
42313 
42314    xla_accounting_err_pkg.build_message
42315       (p_appli_s_name            => 'XLA'
42316       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
42317       ,p_token_1                 => 'ACCT_ATTR_NAME'
42318       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
42319       ,p_token_2                 => 'PRODUCT_NAME'
42320       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
42321       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
42322       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
42323       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
42324 
42325 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
42326    --
42327    -- following sets the accounting attributes needed to reverse
42328    -- accounting for a distributeion
42329    --
42330    xla_ae_lines_pkg.SetTrxReversalAttrs
42331       (p_event_id              => l_event_id
42332       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
42333       ,p_trx_reversal_source   => l_trx_reversal_source);
42334 
42335 END IF;
42336 
42337 
42338 ----------------------------------------------------------------
42339 -- 4262811 -  update the header statuses to invalid in need be
42340 ----------------------------------------------------------------
42341 --
42342 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
42343 
42347   -----------------------------------------------
42344 
42345   -----------------------------------------------
42346   -- No accrual reversal for the event class/type
42348 ----------------------------------------------------------------
42349 
42350 --
42351 -- this ends the header loop iteration for one bulk fetch
42352 --
42353 END LOOP;
42354 
42355 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
42356 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
42357 
42358 --
42359 -- insert dummy rows into lines gt table that were created due to
42360 -- transaction reversals
42361 --
42362 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
42363    l_result := XLA_AE_LINES_PKG.InsertLines;
42364 END IF;
42365 
42366 --
42367 -- reset the temp_line_num for each set of events fetched from header
42368 -- cursor rather than doing it for each new event in line cursor
42369 -- Bug 3939231
42370 --
42371 xla_ae_lines_pkg.g_temp_line_num := 0;
42372 
42373 
42374 
42375 --
42376 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
42377 --
42378 --
42379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
42380 
42381       trace
42382          (p_msg      => 'SQL - FETCH line_cur'
42383          ,p_level    => C_LEVEL_STATEMENT
42384          ,p_module   => l_log_module);
42385 
42386 END IF;
42387 --
42388 --
42389 LOOP
42390   --
42391   FETCH line_cur BULK COLLECT INTO
42392         l_array_entity_id
42393       , l_array_legal_entity_id
42394       , l_array_entity_code
42395       , l_array_transaction_num
42396       , l_array_event_id
42397       , l_array_class_code
42398       , l_array_event_type
42399       , l_array_event_number
42400       , l_array_event_date
42401       , l_array_transaction_date
42402       , l_array_reference_num_1
42403       , l_array_reference_num_2
42404       , l_array_reference_num_3
42405       , l_array_reference_num_4
42406       , l_array_reference_char_1
42407       , l_array_reference_char_2
42408       , l_array_reference_char_3
42409       , l_array_reference_char_4
42410       , l_array_reference_date_1
42411       , l_array_reference_date_2
42412       , l_array_reference_date_3
42413       , l_array_reference_date_4
42414       , l_array_event_created_by
42415       , l_array_budgetary_control_flag
42416       , l_array_extract_line_num 
42417       , l_array_source_1
42418       , l_array_source_2
42419       , l_array_source_3
42420       , l_array_source_4
42421       , l_array_source_5
42422       , l_array_source_6
42423       , l_array_source_8
42424       , l_array_source_8_meaning
42425       , l_array_source_9
42426       , l_array_source_10
42427       , l_array_source_11
42428       , l_array_source_11_meaning
42429       , l_array_source_12
42430       , l_array_source_14
42431       , l_array_source_15
42432       , l_array_source_17
42433       , l_array_source_19
42434       , l_array_source_21
42435       , l_array_source_22
42436       , l_array_source_23
42437       , l_array_source_24
42438       , l_array_source_25
42439       , l_array_source_26
42440       , l_array_source_27
42441       , l_array_source_28
42442       , l_array_source_30
42443       , l_array_source_31
42444       , l_array_source_32
42445       , l_array_source_33
42446       , l_array_source_34
42447       , l_array_source_35
42448       , l_array_source_39
42449       , l_array_source_40
42450       , l_array_source_41
42451       , l_array_source_42
42452       , l_array_source_42_meaning
42453       , l_array_source_46
42454       , l_array_source_47
42455       , l_array_source_48
42456       , l_array_source_49
42457       , l_array_source_50
42458       , l_array_source_51
42459       , l_array_source_52
42460       , l_array_source_53
42461       , l_array_source_54
42462       , l_array_source_55
42463       , l_array_source_56
42464       , l_array_source_58
42465       , l_array_source_59
42466       , l_array_source_61
42467       , l_array_source_62
42468       , l_array_source_63
42469       , l_array_source_64
42470       , l_array_source_65
42471       , l_array_source_66
42472       , l_array_source_67
42473       , l_array_source_68
42474       , l_array_source_69
42475       LIMIT l_rows;
42476 
42477   --
42478   IF (C_LEVEL_EVENT >= g_log_level) THEN
42479             trace
42480                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
42481                ,p_level    => C_LEVEL_EVENT
42482                ,p_module   => l_log_module);
42483   END IF;
42484   --
42485   EXIT WHEN l_array_entity_id.count = 0;
42486 
42487   XLA_AE_LINES_PKG.g_rec_lines := null;
42488 
42489 --
42490 -- Bug 4458708
42491 --
42492 XLA_AE_LINES_PKG.g_LineNumber := 0;
42493 --
42494 --
42495 
42496 FOR Idx IN 1..l_array_event_id.count LOOP
42497    --
42498    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
42499    --
42500    l_event_id := l_array_event_id(idx);  -- 5648433
42501 
42502    --
42503    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
42504    --
42505 
42506    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
42507              (g_array_event(l_event_id).array_value_num('header_index'))
42508          ,'N'
42509          ) <> 'Y'
42510    THEN
42511       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
42512          trace
42513             (p_msg      => 'Trancaction revesal option is not Y '
42517 
42514             ,p_level    => C_LEVEL_STATEMENT
42515             ,p_module   => l_log_module);
42516       END IF;
42518 --
42519 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
42520 --
42521 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
42522 --
42523 -- set event info as cache for other routines to refer event attributes
42524 --
42525 
42526 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
42527    l_previous_event_id := l_event_id;
42528 
42529    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
42530       (p_application_id           => p_application_id
42531       ,p_primary_ledger_id        => p_primary_ledger_id
42532       ,p_base_ledger_id           => p_base_ledger_id
42533       ,p_target_ledger_id         => p_target_ledger_id
42534       ,p_entity_id                => l_array_entity_id(Idx)
42535       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
42536       ,p_entity_code              => l_array_entity_code(Idx)
42537       ,p_transaction_num          => l_array_transaction_num(Idx)
42538       ,p_event_id                 => l_array_event_id(Idx)
42539       ,p_event_class_code         => l_array_class_code(Idx)
42540       ,p_event_type_code          => l_array_event_type(Idx)
42541       ,p_event_number             => l_array_event_number(Idx)
42542       ,p_event_date               => l_array_event_date(Idx)
42543       ,p_transaction_date         => l_array_transaction_date(Idx)
42544       ,p_reference_num_1          => l_array_reference_num_1(Idx)
42545       ,p_reference_num_2          => l_array_reference_num_2(Idx)
42546       ,p_reference_num_3          => l_array_reference_num_3(Idx)
42547       ,p_reference_num_4          => l_array_reference_num_4(Idx)
42548       ,p_reference_char_1         => l_array_reference_char_1(Idx)
42549       ,p_reference_char_2         => l_array_reference_char_2(Idx)
42550       ,p_reference_char_3         => l_array_reference_char_3(Idx)
42551       ,p_reference_char_4         => l_array_reference_char_4(Idx)
42552       ,p_reference_date_1         => l_array_reference_date_1(Idx)
42553       ,p_reference_date_2         => l_array_reference_date_2(Idx)
42554       ,p_reference_date_3         => l_array_reference_date_3(Idx)
42555       ,p_reference_date_4         => l_array_reference_date_4(Idx)
42556       ,p_event_created_by         => l_array_event_created_by(Idx)
42557       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
42558        --
42559 END IF;
42560 
42561 
42562 
42563 --
42564 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
42565 
42566 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
42567 
42568 IF l_continue_with_lines THEN
42569    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
42570       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
42571 
42572       xla_accounting_err_pkg.build_message
42573          (p_appli_s_name            => 'XLA'
42574          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
42575          ,p_token_1                 => 'LINE_NUMBER'
42576          ,p_value_1                 => l_array_extract_line_num(Idx)
42577          ,p_token_2                 => 'PRODUCT_NAME'
42578          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
42579          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
42580          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
42581          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
42582 
42583    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
42584       --
42585       -- following sets the accounting attributes needed to reverse
42586       -- accounting for a distributeion
42587       --
42588 
42589       --
42590       -- 5217187
42591       --
42592       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
42593       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
42594                                        g_array_event(l_event_id).array_value_num('header_index'));
42595       --
42596       --
42597 
42598       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
42599       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
42600       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
42601       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_26(Idx);
42602       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
42603       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
42604       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
42605       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_27(Idx);
42606       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
42607       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_28(Idx);
42608       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
42609       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_29');
42610       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
42611       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_30(Idx);
42612       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
42613       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_31(Idx);
42614       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
42615       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_32(Idx);
42616       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
42617       l_rec_rev_acct_attrs.array_char_value(11)  := g_array_event(l_event_id).array_value_char('source_29');
42618       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
42619       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_33(Idx);
42623       l_rec_rev_acct_attrs.array_char_value(14)  := g_array_event(l_event_id).array_value_char('source_45');
42620       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
42621       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_34(Idx);
42622       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'PARTY_TYPE';
42624       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
42625       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_46(Idx);
42626       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
42627       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_17(Idx);
42628       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'TAX_LINE_REF_ID';
42629       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_48(Idx);
42630       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'TAX_REC_NREC_DIST_REF_ID';
42631       l_rec_rev_acct_attrs.array_num_value(18)  := l_array_source_49(Idx);
42632       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'TAX_SUMMARY_LINE_REF_ID';
42633       l_rec_rev_acct_attrs.array_num_value(19)  := l_array_source_50(Idx);
42634       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
42635       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_51(Idx);
42636       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
42637       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_52(Idx);
42638 
42639 
42640       xla_ae_lines_pkg.SetAcctReversalAttrs
42641          (p_event_id             => l_event_id
42642          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
42643          ,p_calculate_acctd_flag => l_calculate_acctd_flag
42644          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
42645    END IF;
42646 
42647    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
42648        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
42649 
42650 --
42651 AcctLineType_30 (
42652  p_application_id  => p_application_id
42653  ,p_event_id     => l_event_id
42654  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42655  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42656  ,p_actual_flag => l_actual_flag
42657  ,p_balance_type_code => l_balance_type_code
42658  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
42659  
42660  , p_source_1 => l_array_source_1(Idx)
42661  , p_source_2 => l_array_source_2(Idx)
42662  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
42663  , p_source_8 => l_array_source_8(Idx)
42664  , p_source_8_meaning => l_array_source_8_meaning(Idx)
42665  , p_source_9 => l_array_source_9(Idx)
42666  , p_source_10 => l_array_source_10(Idx)
42667  , p_source_11 => l_array_source_11(Idx)
42668  , p_source_11_meaning => l_array_source_11_meaning(Idx)
42669  , p_source_12 => l_array_source_12(Idx)
42670  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
42671  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
42672  , p_source_15 => l_array_source_15(Idx)
42673  , p_source_17 => l_array_source_17(Idx)
42674  , p_source_19 => l_array_source_19(Idx)
42675  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
42676  , p_source_21 => l_array_source_21(Idx)
42677  , p_source_22 => l_array_source_22(Idx)
42678  , p_source_23 => l_array_source_23(Idx)
42679  , p_source_24 => l_array_source_24(Idx)
42680  , p_source_25 => l_array_source_25(Idx)
42681  , p_source_26 => l_array_source_26(Idx)
42682  , p_source_27 => l_array_source_27(Idx)
42683  , p_source_28 => l_array_source_28(Idx)
42684  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
42685  , p_source_30 => l_array_source_30(Idx)
42686  , p_source_31 => l_array_source_31(Idx)
42687  , p_source_32 => l_array_source_32(Idx)
42688  , p_source_33 => l_array_source_33(Idx)
42689  , p_source_34 => l_array_source_34(Idx)
42690  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
42691  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
42692  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
42693  , p_source_39 => l_array_source_39(Idx)
42694  , p_source_40 => l_array_source_40(Idx)
42695  , p_source_41 => l_array_source_41(Idx)
42696  , p_source_42 => l_array_source_42(Idx)
42697  , p_source_42_meaning => l_array_source_42_meaning(Idx)
42698  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
42699  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
42700  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
42701  , p_source_46 => l_array_source_46(Idx)
42702  , p_source_47 => l_array_source_47(Idx)
42703  , p_source_48 => l_array_source_48(Idx)
42704  , p_source_49 => l_array_source_49(Idx)
42705  , p_source_50 => l_array_source_50(Idx)
42706  , p_source_51 => l_array_source_51(Idx)
42707  , p_source_52 => l_array_source_52(Idx)
42708  , p_source_53 => l_array_source_53(Idx)
42709  , p_source_55 => l_array_source_55(Idx)
42710  );
42711 If(l_balance_type_code = 'A') THEN
42712   l_actual_gain_loss_ref := l_gain_or_loss_ref;
42713 END IF;
42714 
42715 --
42716 
42717 
42718 --
42719 AcctLineType_31 (
42720  p_application_id  => p_application_id
42721  ,p_event_id     => l_event_id
42722  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42723  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42724  ,p_actual_flag => l_actual_flag
42725  ,p_balance_type_code => l_balance_type_code
42726  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
42727  
42728  , p_source_1 => l_array_source_1(Idx)
42729  , p_source_2 => l_array_source_2(Idx)
42730  , p_source_4 => l_array_source_4(Idx)
42731  , p_source_5 => l_array_source_5(Idx)
42732  , p_source_6 => l_array_source_6(Idx)
42733  , p_source_8 => l_array_source_8(Idx)
42734  , p_source_8_meaning => l_array_source_8_meaning(Idx)
42735  , p_source_9 => l_array_source_9(Idx)
42736  , p_source_10 => l_array_source_10(Idx)
42740  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
42737  , p_source_11 => l_array_source_11(Idx)
42738  , p_source_11_meaning => l_array_source_11_meaning(Idx)
42739  , p_source_12 => l_array_source_12(Idx)
42741  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
42742  , p_source_15 => l_array_source_15(Idx)
42743  , p_source_17 => l_array_source_17(Idx)
42744  , p_source_19 => l_array_source_19(Idx)
42745  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
42746  , p_source_21 => l_array_source_21(Idx)
42747  , p_source_22 => l_array_source_22(Idx)
42748  , p_source_23 => l_array_source_23(Idx)
42749  , p_source_24 => l_array_source_24(Idx)
42750  , p_source_25 => l_array_source_25(Idx)
42751  , p_source_26 => l_array_source_26(Idx)
42752  , p_source_27 => l_array_source_27(Idx)
42753  , p_source_28 => l_array_source_28(Idx)
42754  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
42755  , p_source_30 => l_array_source_30(Idx)
42756  , p_source_31 => l_array_source_31(Idx)
42757  , p_source_32 => l_array_source_32(Idx)
42758  , p_source_33 => l_array_source_33(Idx)
42759  , p_source_34 => l_array_source_34(Idx)
42760  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
42761  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
42762  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
42763  , p_source_39 => l_array_source_39(Idx)
42764  , p_source_40 => l_array_source_40(Idx)
42765  , p_source_41 => l_array_source_41(Idx)
42766  , p_source_42 => l_array_source_42(Idx)
42767  , p_source_42_meaning => l_array_source_42_meaning(Idx)
42768  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
42769  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
42770  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
42771  , p_source_46 => l_array_source_46(Idx)
42772  , p_source_47 => l_array_source_47(Idx)
42773  , p_source_48 => l_array_source_48(Idx)
42774  , p_source_49 => l_array_source_49(Idx)
42775  , p_source_50 => l_array_source_50(Idx)
42776  , p_source_51 => l_array_source_51(Idx)
42777  , p_source_52 => l_array_source_52(Idx)
42778  , p_source_53 => l_array_source_53(Idx)
42779  , p_source_55 => l_array_source_55(Idx)
42780  );
42781 If(l_balance_type_code = 'A') THEN
42782   l_actual_gain_loss_ref := l_gain_or_loss_ref;
42783 END IF;
42784 
42785 --
42786 
42787 
42788 --
42789 AcctLineType_41 (
42790  p_application_id  => p_application_id
42791  ,p_event_id     => l_event_id
42792  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42793  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42794  ,p_actual_flag => l_actual_flag
42795  ,p_balance_type_code => l_balance_type_code
42796  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
42797  
42798  , p_source_1 => l_array_source_1(Idx)
42799  , p_source_2 => l_array_source_2(Idx)
42800  , p_source_3 => l_array_source_3(Idx)
42801  , p_source_8 => l_array_source_8(Idx)
42802  , p_source_8_meaning => l_array_source_8_meaning(Idx)
42803  , p_source_9 => l_array_source_9(Idx)
42804  , p_source_11 => l_array_source_11(Idx)
42805  , p_source_11_meaning => l_array_source_11_meaning(Idx)
42806  , p_source_12 => l_array_source_12(Idx)
42807  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
42808  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
42809  , p_source_14 => l_array_source_14(Idx)
42810  , p_source_15 => l_array_source_15(Idx)
42811  , p_source_17 => l_array_source_17(Idx)
42812  , p_source_19 => l_array_source_19(Idx)
42813  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
42814  , p_source_21 => l_array_source_21(Idx)
42815  , p_source_22 => l_array_source_22(Idx)
42816  , p_source_23 => l_array_source_23(Idx)
42817  , p_source_24 => l_array_source_24(Idx)
42818  , p_source_25 => l_array_source_25(Idx)
42819  , p_source_26 => l_array_source_26(Idx)
42820  , p_source_27 => l_array_source_27(Idx)
42821  , p_source_28 => l_array_source_28(Idx)
42822  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
42823  , p_source_30 => l_array_source_30(Idx)
42824  , p_source_31 => l_array_source_31(Idx)
42825  , p_source_32 => l_array_source_32(Idx)
42826  , p_source_33 => l_array_source_33(Idx)
42827  , p_source_34 => l_array_source_34(Idx)
42828  , p_source_35 => l_array_source_35(Idx)
42829  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
42830  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
42831  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
42832  , p_source_39 => l_array_source_39(Idx)
42833  , p_source_40 => l_array_source_40(Idx)
42834  , p_source_41 => l_array_source_41(Idx)
42835  , p_source_42 => l_array_source_42(Idx)
42836  , p_source_42_meaning => l_array_source_42_meaning(Idx)
42837  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
42838  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
42839  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
42840  , p_source_46 => l_array_source_46(Idx)
42841  , p_source_47 => l_array_source_47(Idx)
42842  , p_source_48 => l_array_source_48(Idx)
42843  , p_source_49 => l_array_source_49(Idx)
42844  , p_source_50 => l_array_source_50(Idx)
42845  , p_source_51 => l_array_source_51(Idx)
42846  , p_source_52 => l_array_source_52(Idx)
42847  , p_source_55 => l_array_source_55(Idx)
42848  );
42849 If(l_balance_type_code = 'A') THEN
42850   l_actual_gain_loss_ref := l_gain_or_loss_ref;
42851 END IF;
42852 
42853 --
42854 
42855 
42856 --
42857 AcctLineType_42 (
42858  p_application_id  => p_application_id
42859  ,p_event_id     => l_event_id
42860  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42861  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42865  
42862  ,p_actual_flag => l_actual_flag
42863  ,p_balance_type_code => l_balance_type_code
42864  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
42866  , p_source_1 => l_array_source_1(Idx)
42867  , p_source_2 => l_array_source_2(Idx)
42868  , p_source_8 => l_array_source_8(Idx)
42869  , p_source_8_meaning => l_array_source_8_meaning(Idx)
42870  , p_source_9 => l_array_source_9(Idx)
42871  , p_source_11 => l_array_source_11(Idx)
42872  , p_source_11_meaning => l_array_source_11_meaning(Idx)
42873  , p_source_12 => l_array_source_12(Idx)
42874  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
42875  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
42876  , p_source_14 => l_array_source_14(Idx)
42877  , p_source_15 => l_array_source_15(Idx)
42878  , p_source_17 => l_array_source_17(Idx)
42879  , p_source_19 => l_array_source_19(Idx)
42880  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
42881  , p_source_21 => l_array_source_21(Idx)
42882  , p_source_22 => l_array_source_22(Idx)
42883  , p_source_23 => l_array_source_23(Idx)
42884  , p_source_24 => l_array_source_24(Idx)
42885  , p_source_25 => l_array_source_25(Idx)
42886  , p_source_26 => l_array_source_26(Idx)
42887  , p_source_27 => l_array_source_27(Idx)
42888  , p_source_28 => l_array_source_28(Idx)
42889  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
42890  , p_source_30 => l_array_source_30(Idx)
42891  , p_source_31 => l_array_source_31(Idx)
42892  , p_source_32 => l_array_source_32(Idx)
42893  , p_source_33 => l_array_source_33(Idx)
42894  , p_source_34 => l_array_source_34(Idx)
42895  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
42896  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
42897  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
42898  , p_source_39 => l_array_source_39(Idx)
42899  , p_source_40 => l_array_source_40(Idx)
42900  , p_source_41 => l_array_source_41(Idx)
42901  , p_source_42 => l_array_source_42(Idx)
42902  , p_source_42_meaning => l_array_source_42_meaning(Idx)
42903  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
42904  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
42905  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
42906  , p_source_46 => l_array_source_46(Idx)
42907  , p_source_47 => l_array_source_47(Idx)
42908  , p_source_48 => l_array_source_48(Idx)
42909  , p_source_49 => l_array_source_49(Idx)
42910  , p_source_50 => l_array_source_50(Idx)
42911  , p_source_51 => l_array_source_51(Idx)
42912  , p_source_52 => l_array_source_52(Idx)
42913  , p_source_55 => l_array_source_55(Idx)
42914  , p_source_56 => l_array_source_56(Idx)
42915  );
42916 If(l_balance_type_code = 'A') THEN
42917   l_actual_gain_loss_ref := l_gain_or_loss_ref;
42918 END IF;
42919 
42920 --
42921 
42922 
42923 --
42924 AcctLineType_43 (
42925  p_application_id  => p_application_id
42926  ,p_event_id     => l_event_id
42927  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42928  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42929  ,p_actual_flag => l_actual_flag
42930  ,p_balance_type_code => l_balance_type_code
42931  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
42932  
42933  , p_source_1 => l_array_source_1(Idx)
42934  , p_source_2 => l_array_source_2(Idx)
42935  , p_source_3 => l_array_source_3(Idx)
42936  , p_source_8 => l_array_source_8(Idx)
42937  , p_source_8_meaning => l_array_source_8_meaning(Idx)
42938  , p_source_9 => l_array_source_9(Idx)
42939  , p_source_11 => l_array_source_11(Idx)
42940  , p_source_11_meaning => l_array_source_11_meaning(Idx)
42941  , p_source_12 => l_array_source_12(Idx)
42942  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
42943  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
42944  , p_source_14 => l_array_source_14(Idx)
42945  , p_source_15 => l_array_source_15(Idx)
42946  , p_source_17 => l_array_source_17(Idx)
42947  , p_source_19 => l_array_source_19(Idx)
42948  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
42949  , p_source_21 => l_array_source_21(Idx)
42950  , p_source_22 => l_array_source_22(Idx)
42951  , p_source_23 => l_array_source_23(Idx)
42952  , p_source_24 => l_array_source_24(Idx)
42953  , p_source_25 => l_array_source_25(Idx)
42954  , p_source_26 => l_array_source_26(Idx)
42955  , p_source_27 => l_array_source_27(Idx)
42956  , p_source_28 => l_array_source_28(Idx)
42957  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
42958  , p_source_30 => l_array_source_30(Idx)
42959  , p_source_31 => l_array_source_31(Idx)
42960  , p_source_32 => l_array_source_32(Idx)
42961  , p_source_33 => l_array_source_33(Idx)
42962  , p_source_34 => l_array_source_34(Idx)
42963  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
42964  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
42965  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
42966  , p_source_39 => l_array_source_39(Idx)
42967  , p_source_40 => l_array_source_40(Idx)
42968  , p_source_41 => l_array_source_41(Idx)
42969  , p_source_42 => l_array_source_42(Idx)
42970  , p_source_42_meaning => l_array_source_42_meaning(Idx)
42971  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
42972  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
42973  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
42974  , p_source_46 => l_array_source_46(Idx)
42975  , p_source_47 => l_array_source_47(Idx)
42976  , p_source_48 => l_array_source_48(Idx)
42977  , p_source_49 => l_array_source_49(Idx)
42978  , p_source_50 => l_array_source_50(Idx)
42979  , p_source_51 => l_array_source_51(Idx)
42980  , p_source_52 => l_array_source_52(Idx)
42981  , p_source_54 => l_array_source_54(Idx)
42982  , p_source_55 => l_array_source_55(Idx)
42986 END IF;
42983  );
42984 If(l_balance_type_code = 'A') THEN
42985   l_actual_gain_loss_ref := l_gain_or_loss_ref;
42987 
42988 --
42989 
42990 
42991 --
42992 AcctLineType_44 (
42993  p_application_id  => p_application_id
42994  ,p_event_id     => l_event_id
42995  ,p_calculate_acctd_flag => l_calculate_acctd_flag
42996  ,p_calculate_g_l_flag => l_calculate_g_l_flag
42997  ,p_actual_flag => l_actual_flag
42998  ,p_balance_type_code => l_balance_type_code
42999  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43000  
43001  , p_source_1 => l_array_source_1(Idx)
43002  , p_source_2 => l_array_source_2(Idx)
43003  , p_source_8 => l_array_source_8(Idx)
43004  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43005  , p_source_9 => l_array_source_9(Idx)
43006  , p_source_11 => l_array_source_11(Idx)
43007  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43008  , p_source_12 => l_array_source_12(Idx)
43009  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
43010  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
43011  , p_source_14 => l_array_source_14(Idx)
43012  , p_source_15 => l_array_source_15(Idx)
43013  , p_source_17 => l_array_source_17(Idx)
43014  , p_source_19 => l_array_source_19(Idx)
43015  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43016  , p_source_21 => l_array_source_21(Idx)
43017  , p_source_22 => l_array_source_22(Idx)
43018  , p_source_23 => l_array_source_23(Idx)
43019  , p_source_24 => l_array_source_24(Idx)
43020  , p_source_25 => l_array_source_25(Idx)
43021  , p_source_26 => l_array_source_26(Idx)
43022  , p_source_27 => l_array_source_27(Idx)
43023  , p_source_28 => l_array_source_28(Idx)
43024  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43025  , p_source_30 => l_array_source_30(Idx)
43026  , p_source_31 => l_array_source_31(Idx)
43027  , p_source_32 => l_array_source_32(Idx)
43028  , p_source_33 => l_array_source_33(Idx)
43029  , p_source_34 => l_array_source_34(Idx)
43030  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43031  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43032  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43033  , p_source_39 => l_array_source_39(Idx)
43034  , p_source_40 => l_array_source_40(Idx)
43035  , p_source_41 => l_array_source_41(Idx)
43036  , p_source_42 => l_array_source_42(Idx)
43037  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43038  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43039  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43040  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43041  , p_source_46 => l_array_source_46(Idx)
43042  , p_source_47 => l_array_source_47(Idx)
43043  , p_source_48 => l_array_source_48(Idx)
43044  , p_source_49 => l_array_source_49(Idx)
43045  , p_source_50 => l_array_source_50(Idx)
43046  , p_source_51 => l_array_source_51(Idx)
43047  , p_source_52 => l_array_source_52(Idx)
43048  , p_source_55 => l_array_source_55(Idx)
43049  , p_source_56 => l_array_source_56(Idx)
43050  );
43051 If(l_balance_type_code = 'A') THEN
43052   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43053 END IF;
43054 
43055 --
43056 
43057 
43058 --
43059 AcctLineType_45 (
43060  p_application_id  => p_application_id
43061  ,p_event_id     => l_event_id
43062  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43063  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43064  ,p_actual_flag => l_actual_flag
43065  ,p_balance_type_code => l_balance_type_code
43066  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43067  
43068  , p_source_1 => l_array_source_1(Idx)
43069  , p_source_2 => l_array_source_2(Idx)
43070  , p_source_4 => l_array_source_4(Idx)
43071  , p_source_5 => l_array_source_5(Idx)
43072  , p_source_6 => l_array_source_6(Idx)
43073  , p_source_8 => l_array_source_8(Idx)
43074  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43075  , p_source_9 => l_array_source_9(Idx)
43076  , p_source_12 => l_array_source_12(Idx)
43077  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
43078  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
43079  , p_source_14 => l_array_source_14(Idx)
43080  , p_source_15 => l_array_source_15(Idx)
43081  , p_source_17 => l_array_source_17(Idx)
43082  , p_source_19 => l_array_source_19(Idx)
43083  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43084  , p_source_21 => l_array_source_21(Idx)
43085  , p_source_22 => l_array_source_22(Idx)
43086  , p_source_23 => l_array_source_23(Idx)
43087  , p_source_24 => l_array_source_24(Idx)
43088  , p_source_25 => l_array_source_25(Idx)
43089  , p_source_26 => l_array_source_26(Idx)
43090  , p_source_27 => l_array_source_27(Idx)
43091  , p_source_28 => l_array_source_28(Idx)
43092  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43093  , p_source_30 => l_array_source_30(Idx)
43094  , p_source_31 => l_array_source_31(Idx)
43095  , p_source_32 => l_array_source_32(Idx)
43096  , p_source_33 => l_array_source_33(Idx)
43097  , p_source_34 => l_array_source_34(Idx)
43098  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43099  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43100  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43101  , p_source_39 => l_array_source_39(Idx)
43102  , p_source_40 => l_array_source_40(Idx)
43103  , p_source_41 => l_array_source_41(Idx)
43104  , p_source_42 => l_array_source_42(Idx)
43105  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43106  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43107  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43108  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43112  , p_source_49 => l_array_source_49(Idx)
43109  , p_source_46 => l_array_source_46(Idx)
43110  , p_source_47 => l_array_source_47(Idx)
43111  , p_source_48 => l_array_source_48(Idx)
43113  , p_source_50 => l_array_source_50(Idx)
43114  , p_source_51 => l_array_source_51(Idx)
43115  , p_source_52 => l_array_source_52(Idx)
43116  , p_source_55 => l_array_source_55(Idx)
43117  , p_source_56 => l_array_source_56(Idx)
43118  );
43119 If(l_balance_type_code = 'A') THEN
43120   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43121 END IF;
43122 
43123 --
43124 
43125 
43126 --
43127 AcctLineType_46 (
43128  p_application_id  => p_application_id
43129  ,p_event_id     => l_event_id
43130  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43131  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43132  ,p_actual_flag => l_actual_flag
43133  ,p_balance_type_code => l_balance_type_code
43134  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43135  
43136  , p_source_1 => l_array_source_1(Idx)
43137  , p_source_2 => l_array_source_2(Idx)
43138  , p_source_4 => l_array_source_4(Idx)
43139  , p_source_5 => l_array_source_5(Idx)
43140  , p_source_6 => l_array_source_6(Idx)
43141  , p_source_8 => l_array_source_8(Idx)
43142  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43143  , p_source_15 => l_array_source_15(Idx)
43144  , p_source_17 => l_array_source_17(Idx)
43145  , p_source_19 => l_array_source_19(Idx)
43146  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43147  , p_source_21 => l_array_source_21(Idx)
43148  , p_source_22 => l_array_source_22(Idx)
43149  , p_source_23 => l_array_source_23(Idx)
43150  , p_source_24 => l_array_source_24(Idx)
43151  , p_source_25 => l_array_source_25(Idx)
43152  , p_source_26 => l_array_source_26(Idx)
43153  , p_source_27 => l_array_source_27(Idx)
43154  , p_source_28 => l_array_source_28(Idx)
43155  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43156  , p_source_30 => l_array_source_30(Idx)
43157  , p_source_31 => l_array_source_31(Idx)
43158  , p_source_32 => l_array_source_32(Idx)
43159  , p_source_33 => l_array_source_33(Idx)
43160  , p_source_34 => l_array_source_34(Idx)
43161  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43162  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43163  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43164  , p_source_39 => l_array_source_39(Idx)
43165  , p_source_40 => l_array_source_40(Idx)
43166  , p_source_41 => l_array_source_41(Idx)
43167  , p_source_42 => l_array_source_42(Idx)
43168  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43169  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43170  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43171  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43172  , p_source_46 => l_array_source_46(Idx)
43173  , p_source_47 => l_array_source_47(Idx)
43174  , p_source_48 => l_array_source_48(Idx)
43175  , p_source_49 => l_array_source_49(Idx)
43176  , p_source_50 => l_array_source_50(Idx)
43177  , p_source_51 => l_array_source_51(Idx)
43178  , p_source_52 => l_array_source_52(Idx)
43179  , p_source_55 => l_array_source_55(Idx)
43180  , p_source_59 => l_array_source_59(Idx)
43181  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43182  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43183  , p_source_61 => l_array_source_61(Idx)
43184  );
43185 If(l_balance_type_code = 'A') THEN
43186   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43187 END IF;
43188 
43189 --
43190 
43191 
43192 --
43193 AcctLineType_47 (
43194  p_application_id  => p_application_id
43195  ,p_event_id     => l_event_id
43196  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43197  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43198  ,p_actual_flag => l_actual_flag
43199  ,p_balance_type_code => l_balance_type_code
43200  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43201  
43202  , p_source_1 => l_array_source_1(Idx)
43203  , p_source_2 => l_array_source_2(Idx)
43204  , p_source_8 => l_array_source_8(Idx)
43205  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43206  , p_source_15 => l_array_source_15(Idx)
43207  , p_source_17 => l_array_source_17(Idx)
43208  , p_source_19 => l_array_source_19(Idx)
43209  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43210  , p_source_21 => l_array_source_21(Idx)
43211  , p_source_22 => l_array_source_22(Idx)
43212  , p_source_23 => l_array_source_23(Idx)
43213  , p_source_24 => l_array_source_24(Idx)
43214  , p_source_25 => l_array_source_25(Idx)
43215  , p_source_26 => l_array_source_26(Idx)
43216  , p_source_27 => l_array_source_27(Idx)
43217  , p_source_28 => l_array_source_28(Idx)
43218  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43219  , p_source_30 => l_array_source_30(Idx)
43220  , p_source_31 => l_array_source_31(Idx)
43221  , p_source_32 => l_array_source_32(Idx)
43222  , p_source_33 => l_array_source_33(Idx)
43223  , p_source_34 => l_array_source_34(Idx)
43224  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43225  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43226  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43227  , p_source_39 => l_array_source_39(Idx)
43228  , p_source_40 => l_array_source_40(Idx)
43229  , p_source_41 => l_array_source_41(Idx)
43230  , p_source_42 => l_array_source_42(Idx)
43231  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43232  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43233  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43234  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43235  , p_source_46 => l_array_source_46(Idx)
43236  , p_source_47 => l_array_source_47(Idx)
43240  , p_source_51 => l_array_source_51(Idx)
43237  , p_source_48 => l_array_source_48(Idx)
43238  , p_source_49 => l_array_source_49(Idx)
43239  , p_source_50 => l_array_source_50(Idx)
43241  , p_source_52 => l_array_source_52(Idx)
43242  , p_source_55 => l_array_source_55(Idx)
43243  , p_source_59 => l_array_source_59(Idx)
43244  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43245  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43246  , p_source_61 => l_array_source_61(Idx)
43247  );
43248 If(l_balance_type_code = 'A') THEN
43249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43250 END IF;
43251 
43252 --
43253 
43254 
43255 --
43256 AcctLineType_48 (
43257  p_application_id  => p_application_id
43258  ,p_event_id     => l_event_id
43259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43261  ,p_actual_flag => l_actual_flag
43262  ,p_balance_type_code => l_balance_type_code
43263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43264  
43265  , p_source_1 => l_array_source_1(Idx)
43266  , p_source_2 => l_array_source_2(Idx)
43267  , p_source_6 => l_array_source_6(Idx)
43268  , p_source_15 => l_array_source_15(Idx)
43269  , p_source_17 => l_array_source_17(Idx)
43270  , p_source_19 => l_array_source_19(Idx)
43271  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43272  , p_source_21 => l_array_source_21(Idx)
43273  , p_source_22 => l_array_source_22(Idx)
43274  , p_source_23 => l_array_source_23(Idx)
43275  , p_source_24 => l_array_source_24(Idx)
43276  , p_source_25 => l_array_source_25(Idx)
43277  , p_source_26 => l_array_source_26(Idx)
43278  , p_source_27 => l_array_source_27(Idx)
43279  , p_source_28 => l_array_source_28(Idx)
43280  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43281  , p_source_30 => l_array_source_30(Idx)
43282  , p_source_31 => l_array_source_31(Idx)
43283  , p_source_32 => l_array_source_32(Idx)
43284  , p_source_33 => l_array_source_33(Idx)
43285  , p_source_34 => l_array_source_34(Idx)
43286  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43287  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43288  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43289  , p_source_39 => l_array_source_39(Idx)
43290  , p_source_40 => l_array_source_40(Idx)
43291  , p_source_41 => l_array_source_41(Idx)
43292  , p_source_42 => l_array_source_42(Idx)
43293  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43294  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43295  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43296  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43297  , p_source_46 => l_array_source_46(Idx)
43298  , p_source_47 => l_array_source_47(Idx)
43299  , p_source_48 => l_array_source_48(Idx)
43300  , p_source_49 => l_array_source_49(Idx)
43301  , p_source_50 => l_array_source_50(Idx)
43302  , p_source_51 => l_array_source_51(Idx)
43303  , p_source_52 => l_array_source_52(Idx)
43304  , p_source_55 => l_array_source_55(Idx)
43305  , p_source_58 => l_array_source_58(Idx)
43306  );
43307 If(l_balance_type_code = 'A') THEN
43308   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43309 END IF;
43310 
43311 --
43312 
43313 
43314 --
43315 AcctLineType_49 (
43316  p_application_id  => p_application_id
43317  ,p_event_id     => l_event_id
43318  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43319  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43320  ,p_actual_flag => l_actual_flag
43321  ,p_balance_type_code => l_balance_type_code
43322  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43323  
43324  , p_source_1 => l_array_source_1(Idx)
43325  , p_source_2 => l_array_source_2(Idx)
43326  , p_source_6 => l_array_source_6(Idx)
43327  , p_source_15 => l_array_source_15(Idx)
43328  , p_source_17 => l_array_source_17(Idx)
43329  , p_source_19 => l_array_source_19(Idx)
43330  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43331  , p_source_21 => l_array_source_21(Idx)
43332  , p_source_22 => l_array_source_22(Idx)
43333  , p_source_23 => l_array_source_23(Idx)
43334  , p_source_24 => l_array_source_24(Idx)
43335  , p_source_25 => l_array_source_25(Idx)
43336  , p_source_26 => l_array_source_26(Idx)
43337  , p_source_27 => l_array_source_27(Idx)
43338  , p_source_28 => l_array_source_28(Idx)
43339  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43340  , p_source_30 => l_array_source_30(Idx)
43341  , p_source_31 => l_array_source_31(Idx)
43342  , p_source_32 => l_array_source_32(Idx)
43343  , p_source_33 => l_array_source_33(Idx)
43344  , p_source_34 => l_array_source_34(Idx)
43345  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43346  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43347  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43348  , p_source_39 => l_array_source_39(Idx)
43349  , p_source_40 => l_array_source_40(Idx)
43350  , p_source_41 => l_array_source_41(Idx)
43351  , p_source_42 => l_array_source_42(Idx)
43352  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43353  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43354  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43355  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43356  , p_source_46 => l_array_source_46(Idx)
43357  , p_source_47 => l_array_source_47(Idx)
43358  , p_source_48 => l_array_source_48(Idx)
43359  , p_source_49 => l_array_source_49(Idx)
43360  , p_source_50 => l_array_source_50(Idx)
43361  , p_source_51 => l_array_source_51(Idx)
43362  , p_source_52 => l_array_source_52(Idx)
43363  , p_source_55 => l_array_source_55(Idx)
43364  , p_source_58 => l_array_source_58(Idx)
43365  );
43369 
43366 If(l_balance_type_code = 'A') THEN
43367   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43368 END IF;
43370 --
43371 
43372 
43373 --
43374 AcctLineType_50 (
43375  p_application_id  => p_application_id
43376  ,p_event_id     => l_event_id
43377  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43378  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43379  ,p_actual_flag => l_actual_flag
43380  ,p_balance_type_code => l_balance_type_code
43381  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43382  
43383  , p_source_1 => l_array_source_1(Idx)
43384  , p_source_2 => l_array_source_2(Idx)
43385  , p_source_4 => l_array_source_4(Idx)
43386  , p_source_5 => l_array_source_5(Idx)
43387  , p_source_6 => l_array_source_6(Idx)
43388  , p_source_8 => l_array_source_8(Idx)
43389  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43390  , p_source_9 => l_array_source_9(Idx)
43391  , p_source_10 => l_array_source_10(Idx)
43392  , p_source_15 => l_array_source_15(Idx)
43393  , p_source_17 => l_array_source_17(Idx)
43394  , p_source_19 => l_array_source_19(Idx)
43395  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43396  , p_source_21 => l_array_source_21(Idx)
43397  , p_source_22 => l_array_source_22(Idx)
43398  , p_source_23 => l_array_source_23(Idx)
43399  , p_source_24 => l_array_source_24(Idx)
43400  , p_source_25 => l_array_source_25(Idx)
43401  , p_source_26 => l_array_source_26(Idx)
43402  , p_source_27 => l_array_source_27(Idx)
43403  , p_source_28 => l_array_source_28(Idx)
43404  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43405  , p_source_30 => l_array_source_30(Idx)
43406  , p_source_31 => l_array_source_31(Idx)
43407  , p_source_32 => l_array_source_32(Idx)
43408  , p_source_33 => l_array_source_33(Idx)
43409  , p_source_34 => l_array_source_34(Idx)
43410  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43411  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43412  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43413  , p_source_39 => l_array_source_39(Idx)
43414  , p_source_40 => l_array_source_40(Idx)
43415  , p_source_41 => l_array_source_41(Idx)
43416  , p_source_42 => l_array_source_42(Idx)
43417  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43418  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43419  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43420  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43421  , p_source_46 => l_array_source_46(Idx)
43422  , p_source_47 => l_array_source_47(Idx)
43423  , p_source_48 => l_array_source_48(Idx)
43424  , p_source_49 => l_array_source_49(Idx)
43425  , p_source_50 => l_array_source_50(Idx)
43426  , p_source_51 => l_array_source_51(Idx)
43427  , p_source_52 => l_array_source_52(Idx)
43428  , p_source_53 => l_array_source_53(Idx)
43429  , p_source_55 => l_array_source_55(Idx)
43430  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43431  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43432  );
43433 If(l_balance_type_code = 'A') THEN
43434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43435 END IF;
43436 
43437 --
43438 
43439 
43440 --
43441 AcctLineType_51 (
43442  p_application_id  => p_application_id
43443  ,p_event_id     => l_event_id
43444  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43445  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43446  ,p_actual_flag => l_actual_flag
43447  ,p_balance_type_code => l_balance_type_code
43448  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43449  
43450  , p_source_1 => l_array_source_1(Idx)
43451  , p_source_2 => l_array_source_2(Idx)
43452  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
43453  , p_source_8 => l_array_source_8(Idx)
43454  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43455  , p_source_9 => l_array_source_9(Idx)
43456  , p_source_10 => l_array_source_10(Idx)
43457  , p_source_11 => l_array_source_11(Idx)
43458  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43459  , p_source_15 => l_array_source_15(Idx)
43460  , p_source_17 => l_array_source_17(Idx)
43461  , p_source_19 => l_array_source_19(Idx)
43462  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43463  , p_source_21 => l_array_source_21(Idx)
43464  , p_source_22 => l_array_source_22(Idx)
43465  , p_source_23 => l_array_source_23(Idx)
43466  , p_source_24 => l_array_source_24(Idx)
43467  , p_source_25 => l_array_source_25(Idx)
43468  , p_source_26 => l_array_source_26(Idx)
43469  , p_source_27 => l_array_source_27(Idx)
43470  , p_source_28 => l_array_source_28(Idx)
43471  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43472  , p_source_30 => l_array_source_30(Idx)
43473  , p_source_31 => l_array_source_31(Idx)
43474  , p_source_32 => l_array_source_32(Idx)
43475  , p_source_33 => l_array_source_33(Idx)
43476  , p_source_34 => l_array_source_34(Idx)
43477  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43478  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43479  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43480  , p_source_39 => l_array_source_39(Idx)
43481  , p_source_40 => l_array_source_40(Idx)
43482  , p_source_41 => l_array_source_41(Idx)
43483  , p_source_42 => l_array_source_42(Idx)
43484  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43485  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43486  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43487  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43488  , p_source_46 => l_array_source_46(Idx)
43489  , p_source_47 => l_array_source_47(Idx)
43490  , p_source_48 => l_array_source_48(Idx)
43491  , p_source_49 => l_array_source_49(Idx)
43495  , p_source_53 => l_array_source_53(Idx)
43492  , p_source_50 => l_array_source_50(Idx)
43493  , p_source_51 => l_array_source_51(Idx)
43494  , p_source_52 => l_array_source_52(Idx)
43496  , p_source_55 => l_array_source_55(Idx)
43497  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43498  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43499  );
43500 If(l_balance_type_code = 'A') THEN
43501   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43502 END IF;
43503 
43504 --
43505 
43506 
43507 --
43508 AcctLineType_52 (
43509  p_application_id  => p_application_id
43510  ,p_event_id     => l_event_id
43511  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43512  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43513  ,p_actual_flag => l_actual_flag
43514  ,p_balance_type_code => l_balance_type_code
43515  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43516  
43517  , p_source_1 => l_array_source_1(Idx)
43518  , p_source_2 => l_array_source_2(Idx)
43519  , p_source_8 => l_array_source_8(Idx)
43520  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43521  , p_source_9 => l_array_source_9(Idx)
43522  , p_source_11 => l_array_source_11(Idx)
43523  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43524  , p_source_12 => l_array_source_12(Idx)
43525  , p_source_15 => l_array_source_15(Idx)
43526  , p_source_17 => l_array_source_17(Idx)
43527  , p_source_19 => l_array_source_19(Idx)
43528  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43529  , p_source_21 => l_array_source_21(Idx)
43530  , p_source_22 => l_array_source_22(Idx)
43531  , p_source_23 => l_array_source_23(Idx)
43532  , p_source_24 => l_array_source_24(Idx)
43533  , p_source_25 => l_array_source_25(Idx)
43534  , p_source_26 => l_array_source_26(Idx)
43535  , p_source_27 => l_array_source_27(Idx)
43536  , p_source_28 => l_array_source_28(Idx)
43537  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43538  , p_source_30 => l_array_source_30(Idx)
43539  , p_source_31 => l_array_source_31(Idx)
43540  , p_source_32 => l_array_source_32(Idx)
43541  , p_source_33 => l_array_source_33(Idx)
43542  , p_source_34 => l_array_source_34(Idx)
43543  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43544  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43545  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43546  , p_source_39 => l_array_source_39(Idx)
43547  , p_source_40 => l_array_source_40(Idx)
43548  , p_source_41 => l_array_source_41(Idx)
43549  , p_source_42 => l_array_source_42(Idx)
43550  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43551  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43552  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43553  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43554  , p_source_46 => l_array_source_46(Idx)
43555  , p_source_47 => l_array_source_47(Idx)
43556  , p_source_48 => l_array_source_48(Idx)
43557  , p_source_49 => l_array_source_49(Idx)
43558  , p_source_50 => l_array_source_50(Idx)
43559  , p_source_51 => l_array_source_51(Idx)
43560  , p_source_52 => l_array_source_52(Idx)
43561  , p_source_55 => l_array_source_55(Idx)
43562  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43563  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43564  , p_source_62 => l_array_source_62(Idx)
43565  , p_source_63 => l_array_source_63(Idx)
43566  );
43567 If(l_balance_type_code = 'A') THEN
43568   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43569 END IF;
43570 
43571 --
43572 
43573 
43574 --
43575 AcctLineType_53 (
43576  p_application_id  => p_application_id
43577  ,p_event_id     => l_event_id
43578  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43579  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43580  ,p_actual_flag => l_actual_flag
43581  ,p_balance_type_code => l_balance_type_code
43582  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43583  
43584  , p_source_1 => l_array_source_1(Idx)
43585  , p_source_2 => l_array_source_2(Idx)
43586  , p_source_4 => l_array_source_4(Idx)
43587  , p_source_5 => l_array_source_5(Idx)
43588  , p_source_6 => l_array_source_6(Idx)
43589  , p_source_8 => l_array_source_8(Idx)
43590  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43591  , p_source_15 => l_array_source_15(Idx)
43592  , p_source_17 => l_array_source_17(Idx)
43593  , p_source_19 => l_array_source_19(Idx)
43594  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43595  , p_source_21 => l_array_source_21(Idx)
43596  , p_source_22 => l_array_source_22(Idx)
43597  , p_source_23 => l_array_source_23(Idx)
43598  , p_source_24 => l_array_source_24(Idx)
43599  , p_source_25 => l_array_source_25(Idx)
43600  , p_source_26 => l_array_source_26(Idx)
43601  , p_source_27 => l_array_source_27(Idx)
43602  , p_source_28 => l_array_source_28(Idx)
43603  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43604  , p_source_30 => l_array_source_30(Idx)
43605  , p_source_31 => l_array_source_31(Idx)
43606  , p_source_32 => l_array_source_32(Idx)
43607  , p_source_33 => l_array_source_33(Idx)
43608  , p_source_34 => l_array_source_34(Idx)
43609  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43610  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43611  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43612  , p_source_39 => l_array_source_39(Idx)
43613  , p_source_40 => l_array_source_40(Idx)
43614  , p_source_41 => l_array_source_41(Idx)
43615  , p_source_42 => l_array_source_42(Idx)
43616  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43617  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43618  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43622  , p_source_48 => l_array_source_48(Idx)
43619  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43620  , p_source_46 => l_array_source_46(Idx)
43621  , p_source_47 => l_array_source_47(Idx)
43623  , p_source_49 => l_array_source_49(Idx)
43624  , p_source_50 => l_array_source_50(Idx)
43625  , p_source_51 => l_array_source_51(Idx)
43626  , p_source_52 => l_array_source_52(Idx)
43627  , p_source_55 => l_array_source_55(Idx)
43628  , p_source_60 => g_array_event(l_event_id).array_value_char('source_60')
43629  , p_source_60_meaning => g_array_event(l_event_id).array_value_char('source_60_meaning')
43630  , p_source_62 => l_array_source_62(Idx)
43631  , p_source_63 => l_array_source_63(Idx)
43632  );
43633 If(l_balance_type_code = 'A') THEN
43634   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43635 END IF;
43636 
43637 --
43638 
43639 
43640 --
43641 AcctLineType_54 (
43642  p_application_id  => p_application_id
43643  ,p_event_id     => l_event_id
43644  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43645  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43646  ,p_actual_flag => l_actual_flag
43647  ,p_balance_type_code => l_balance_type_code
43648  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43649  
43650  , p_source_1 => l_array_source_1(Idx)
43651  , p_source_2 => l_array_source_2(Idx)
43652  , p_source_5 => l_array_source_5(Idx)
43653  , p_source_8 => l_array_source_8(Idx)
43654  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43655  , p_source_10 => l_array_source_10(Idx)
43656  , p_source_11 => l_array_source_11(Idx)
43657  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43658  , p_source_12 => l_array_source_12(Idx)
43659  , p_source_15 => l_array_source_15(Idx)
43660  , p_source_17 => l_array_source_17(Idx)
43661  , p_source_19 => l_array_source_19(Idx)
43662  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43663  , p_source_26 => l_array_source_26(Idx)
43664  , p_source_27 => l_array_source_27(Idx)
43665  , p_source_28 => l_array_source_28(Idx)
43666  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43667  , p_source_30 => l_array_source_30(Idx)
43668  , p_source_31 => l_array_source_31(Idx)
43669  , p_source_32 => l_array_source_32(Idx)
43670  , p_source_33 => l_array_source_33(Idx)
43671  , p_source_34 => l_array_source_34(Idx)
43672  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43673  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43674  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43675  , p_source_39 => l_array_source_39(Idx)
43676  , p_source_40 => l_array_source_40(Idx)
43677  , p_source_41 => l_array_source_41(Idx)
43678  , p_source_42 => l_array_source_42(Idx)
43679  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43680  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43681  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43682  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43683  , p_source_46 => l_array_source_46(Idx)
43684  , p_source_47 => l_array_source_47(Idx)
43685  , p_source_48 => l_array_source_48(Idx)
43686  , p_source_49 => l_array_source_49(Idx)
43687  , p_source_50 => l_array_source_50(Idx)
43688  , p_source_51 => l_array_source_51(Idx)
43689  , p_source_52 => l_array_source_52(Idx)
43690  , p_source_55 => l_array_source_55(Idx)
43691  , p_source_64 => l_array_source_64(Idx)
43692  , p_source_65 => l_array_source_65(Idx)
43693  , p_source_66 => l_array_source_66(Idx)
43694  , p_source_67 => l_array_source_67(Idx)
43695  , p_source_68 => l_array_source_68(Idx)
43696  , p_source_69 => l_array_source_69(Idx)
43697  );
43698 If(l_balance_type_code = 'A') THEN
43699   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43700 END IF;
43701 
43702 --
43703 
43704 
43705 --
43706 AcctLineType_55 (
43707  p_application_id  => p_application_id
43708  ,p_event_id     => l_event_id
43709  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43710  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43711  ,p_actual_flag => l_actual_flag
43712  ,p_balance_type_code => l_balance_type_code
43713  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43714  
43715  , p_source_5 => l_array_source_5(Idx)
43716  , p_source_8 => l_array_source_8(Idx)
43717  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43718  , p_source_9 => l_array_source_9(Idx)
43719  , p_source_10 => l_array_source_10(Idx)
43720  , p_source_11 => l_array_source_11(Idx)
43721  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43722  , p_source_12 => l_array_source_12(Idx)
43723  , p_source_15 => l_array_source_15(Idx)
43724  , p_source_17 => l_array_source_17(Idx)
43725  , p_source_19 => l_array_source_19(Idx)
43726  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43727  , p_source_26 => l_array_source_26(Idx)
43728  , p_source_27 => l_array_source_27(Idx)
43729  , p_source_28 => l_array_source_28(Idx)
43730  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43731  , p_source_30 => l_array_source_30(Idx)
43732  , p_source_31 => l_array_source_31(Idx)
43733  , p_source_32 => l_array_source_32(Idx)
43734  , p_source_33 => l_array_source_33(Idx)
43735  , p_source_34 => l_array_source_34(Idx)
43736  , p_source_39 => l_array_source_39(Idx)
43737  , p_source_40 => l_array_source_40(Idx)
43738  , p_source_41 => l_array_source_41(Idx)
43739  , p_source_42 => l_array_source_42(Idx)
43740  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43741  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43742  , p_source_46 => l_array_source_46(Idx)
43743  , p_source_47 => l_array_source_47(Idx)
43744  , p_source_48 => l_array_source_48(Idx)
43745  , p_source_49 => l_array_source_49(Idx)
43746  , p_source_50 => l_array_source_50(Idx)
43747  , p_source_51 => l_array_source_51(Idx)
43751  , p_source_65 => l_array_source_65(Idx)
43748  , p_source_52 => l_array_source_52(Idx)
43749  , p_source_55 => l_array_source_55(Idx)
43750  , p_source_64 => l_array_source_64(Idx)
43752  , p_source_66 => l_array_source_66(Idx)
43753  , p_source_67 => l_array_source_67(Idx)
43754  , p_source_68 => l_array_source_68(Idx)
43755  , p_source_69 => l_array_source_69(Idx)
43756  );
43757 If(l_balance_type_code = 'A') THEN
43758   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43759 END IF;
43760 
43761 --
43762 
43763 
43764 --
43765 AcctLineType_56 (
43766  p_application_id  => p_application_id
43767  ,p_event_id     => l_event_id
43768  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43769  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43770  ,p_actual_flag => l_actual_flag
43771  ,p_balance_type_code => l_balance_type_code
43772  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43773  
43774  , p_source_2 => l_array_source_2(Idx)
43775  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
43776  , p_source_8 => l_array_source_8(Idx)
43777  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43778  , p_source_9 => l_array_source_9(Idx)
43779  , p_source_10 => l_array_source_10(Idx)
43780  , p_source_11 => l_array_source_11(Idx)
43781  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43782  , p_source_12 => l_array_source_12(Idx)
43783  , p_source_15 => l_array_source_15(Idx)
43784  , p_source_17 => l_array_source_17(Idx)
43785  , p_source_19 => l_array_source_19(Idx)
43786  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43787  , p_source_26 => l_array_source_26(Idx)
43788  , p_source_27 => l_array_source_27(Idx)
43789  , p_source_28 => l_array_source_28(Idx)
43790  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43791  , p_source_30 => l_array_source_30(Idx)
43792  , p_source_31 => l_array_source_31(Idx)
43793  , p_source_32 => l_array_source_32(Idx)
43794  , p_source_33 => l_array_source_33(Idx)
43795  , p_source_34 => l_array_source_34(Idx)
43796  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43797  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43798  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43799  , p_source_39 => l_array_source_39(Idx)
43800  , p_source_40 => l_array_source_40(Idx)
43801  , p_source_41 => l_array_source_41(Idx)
43802  , p_source_42 => l_array_source_42(Idx)
43803  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43804  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43805  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43806  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43807  , p_source_46 => l_array_source_46(Idx)
43808  , p_source_47 => l_array_source_47(Idx)
43809  , p_source_48 => l_array_source_48(Idx)
43810  , p_source_49 => l_array_source_49(Idx)
43811  , p_source_50 => l_array_source_50(Idx)
43812  , p_source_51 => l_array_source_51(Idx)
43813  , p_source_52 => l_array_source_52(Idx)
43814  , p_source_55 => l_array_source_55(Idx)
43815  , p_source_64 => l_array_source_64(Idx)
43816  , p_source_65 => l_array_source_65(Idx)
43817  , p_source_66 => l_array_source_66(Idx)
43818  , p_source_67 => l_array_source_67(Idx)
43819  , p_source_68 => l_array_source_68(Idx)
43820  , p_source_69 => l_array_source_69(Idx)
43821  );
43822 If(l_balance_type_code = 'A') THEN
43823   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43824 END IF;
43825 
43826 --
43827 
43828 
43829 --
43830 AcctLineType_57 (
43831  p_application_id  => p_application_id
43832  ,p_event_id     => l_event_id
43833  ,p_calculate_acctd_flag => l_calculate_acctd_flag
43834  ,p_calculate_g_l_flag => l_calculate_g_l_flag
43835  ,p_actual_flag => l_actual_flag
43836  ,p_balance_type_code => l_balance_type_code
43837  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
43838  
43839  , p_source_1 => l_array_source_1(Idx)
43840  , p_source_2 => l_array_source_2(Idx)
43841  , p_source_5 => l_array_source_5(Idx)
43842  , p_source_8 => l_array_source_8(Idx)
43843  , p_source_8_meaning => l_array_source_8_meaning(Idx)
43844  , p_source_9 => l_array_source_9(Idx)
43845  , p_source_10 => l_array_source_10(Idx)
43846  , p_source_11 => l_array_source_11(Idx)
43847  , p_source_11_meaning => l_array_source_11_meaning(Idx)
43848  , p_source_12 => l_array_source_12(Idx)
43849  , p_source_15 => l_array_source_15(Idx)
43850  , p_source_17 => l_array_source_17(Idx)
43851  , p_source_19 => l_array_source_19(Idx)
43852  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
43853  , p_source_26 => l_array_source_26(Idx)
43854  , p_source_27 => l_array_source_27(Idx)
43855  , p_source_28 => l_array_source_28(Idx)
43856  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
43857  , p_source_30 => l_array_source_30(Idx)
43858  , p_source_31 => l_array_source_31(Idx)
43859  , p_source_32 => l_array_source_32(Idx)
43860  , p_source_33 => l_array_source_33(Idx)
43861  , p_source_34 => l_array_source_34(Idx)
43862  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
43863  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
43864  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
43865  , p_source_39 => l_array_source_39(Idx)
43866  , p_source_40 => l_array_source_40(Idx)
43867  , p_source_41 => l_array_source_41(Idx)
43868  , p_source_42 => l_array_source_42(Idx)
43869  , p_source_42_meaning => l_array_source_42_meaning(Idx)
43870  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
43871  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
43872  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
43873  , p_source_46 => l_array_source_46(Idx)
43874  , p_source_47 => l_array_source_47(Idx)
43875  , p_source_48 => l_array_source_48(Idx)
43879  , p_source_52 => l_array_source_52(Idx)
43876  , p_source_49 => l_array_source_49(Idx)
43877  , p_source_50 => l_array_source_50(Idx)
43878  , p_source_51 => l_array_source_51(Idx)
43880  , p_source_55 => l_array_source_55(Idx)
43881  , p_source_64 => l_array_source_64(Idx)
43882  , p_source_65 => l_array_source_65(Idx)
43883  , p_source_66 => l_array_source_66(Idx)
43884  , p_source_67 => l_array_source_67(Idx)
43885  , p_source_68 => l_array_source_68(Idx)
43886  , p_source_69 => l_array_source_69(Idx)
43887  );
43888 If(l_balance_type_code = 'A') THEN
43889   l_actual_gain_loss_ref := l_gain_or_loss_ref;
43890 END IF;
43891 
43892 --
43893 
43894       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
43895       -- or secondary ledger that has different currency with primary
43896       -- or alc that is calculated by sla
43897       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
43898             (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'))
43899 
43900 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
43901 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
43902           AND (l_actual_flag = 'A')) THEN
43903         XLA_AE_LINES_PKG.CreateGainOrLossLines(
43904           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
43905          ,p_application_id   => p_application_id
43906          ,p_amb_context_code => 'DEFAULT'
43907          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
43908          ,p_event_class_code => C_EVENT_CLASS_CODE
43909          ,p_event_type_code  => C_EVENT_TYPE_CODE
43910          
43911          ,p_gain_ccid        => -1
43912          ,p_loss_ccid        => -1
43913 
43914          ,p_actual_flag      => l_actual_flag
43915          ,p_enc_flag         => null
43916          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
43917          ,p_enc_g_l_ref      => null
43918          );
43919       END IF;
43920    END IF;
43921 END IF;
43922 
43923    ELSE
43924       --
43925       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
43926       --
43927       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
43928          trace
43929             (p_msg      => 'Trancaction revesal option is Y'
43930             ,p_level    => C_LEVEL_STATEMENT
43931             ,p_module   => l_log_module);
43932       END IF;
43933    END IF;
43934 
43935 END LOOP;
43936 l_result := XLA_AE_LINES_PKG.InsertLines ;
43937 end loop;
43938 close line_cur;
43939 
43940 
43941 --
43942 -- insert headers into xla_ae_headers_gt table
43943 --
43944 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
43945 
43946 -- insert into errors table here.
43947 
43948 END LOOP;
43949 
43950 --
43951 -- 4865292
43952 --
43953 -- Compare g_hdr_extract_count with event count in
43954 -- CreateHeadersAndLines.
43955 --
43956 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
43957 
43958 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
43959    trace (p_msg     => '# rows extracted from header extract objects '
43960                     || ' (running total): '
43961                     || g_hdr_extract_count
43962          ,p_level   => C_LEVEL_STATEMENT
43963          ,p_module  => l_log_module);
43964 END IF;
43965 
43966 CLOSE header_cur;
43967 --
43968 
43969 --
43970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43971    trace
43972       (p_msg      => 'END of EventClass_62'
43973       ,p_level    => C_LEVEL_PROCEDURE
43974       ,p_module   => l_log_module);
43975 END IF;
43976 --
43977 RETURN l_result;
43978 EXCEPTION
43979 WHEN xla_exceptions_pkg.application_exception THEN
43980    
43981 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
43982 
43983    
43984 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
43985 
43986    RAISE;
43987 
43988 WHEN NO_DATA_FOUND THEN
43989 
43990 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
43991 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
43992 
43993 FOR header_record IN header_cur
43994 LOOP
43995     l_array_header_events(header_record.event_id) := header_record.event_id;
43996 END LOOP;
43997 
43998 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
43999 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
44000 
44001 fnd_file.put_line(fnd_file.LOG, '                    ');
44002 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
44003 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
44004 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
44005 
44006 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
44007 LOOP
44008 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
44009 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
44010         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
44011 	END IF;
44012 END LOOP;
44013 
44014 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
44015 fnd_file.put_line(fnd_file.LOG, '                    ');
44016 
44017 
44018 xla_exceptions_pkg.raise_message
44019       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_62');
44020 
44021 
44022 WHEN OTHERS THEN
44023    xla_exceptions_pkg.raise_message
44027 
44024       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_62');
44025 END EventClass_62;
44026 --
44028 ---------------------------------------
44029 --
44030 -- PRIVATE PROCEDURE
44031 --         insert_sources_63
44032 --
44033 ----------------------------------------
44034 --
44035 PROCEDURE insert_sources_63(
44036                                 p_target_ledger_id       IN NUMBER
44037                               , p_language               IN VARCHAR2
44038                               , p_sla_ledger_id          IN NUMBER
44039                               , p_pad_start_date         IN DATE
44040                               , p_pad_end_date           IN DATE
44041                          )
44042 IS
44043 
44044 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PREPAYMENTS_ALL';
44045 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PREPAYMENTS';
44046 p_apps_owner                   VARCHAR2(30);
44047 l_log_module                   VARCHAR2(240);
44048 BEGIN
44049 IF g_log_enabled THEN
44050       l_log_module := C_DEFAULT_MODULE||'.insert_sources_63';
44051 END IF;
44052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44053 
44054       trace
44055          (p_msg      => 'BEGIN of insert_sources_63'
44056          ,p_level    => C_LEVEL_PROCEDURE
44057          ,p_module   => l_log_module);
44058 
44059 END IF;
44060 
44061 -- select APPS owner
44062 SELECT oracle_username
44063   INTO p_apps_owner
44064   FROM fnd_oracle_userid
44065  WHERE read_only_flag = 'U'
44066 ;
44067 
44068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
44069       trace
44070          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
44071                         ' - p_language = '||p_language||
44072                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
44073                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
44074                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
44075                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
44076          ,p_level    => C_LEVEL_STATEMENT
44077          ,p_module   => l_log_module);
44078 END IF;
44079 
44080 
44081 --
44082 INSERT INTO xla_diag_sources --hdr2
44083 (
44084         event_id
44085       , ledger_id
44086       , sla_ledger_id
44087       , description_language
44088       , object_name
44089       , object_type_code
44090       , line_number
44091       , source_application_id
44092       , source_type_code
44093       , source_code
44094       , source_value
44095       , source_meaning
44096       , created_by
44097       , creation_date
44098       , last_update_date
44099       , last_updated_by
44100       , last_update_login
44101       , program_update_date
44102       , program_application_id
44103       , program_id
44104       , request_id
44105 )
44106 SELECT
44107         event_id
44108       , p_target_ledger_id
44109       , p_sla_ledger_id
44110       , p_language
44111       , object_name
44112       , object_type_code
44113       , line_number
44114       , source_application_id
44115       , source_type_code
44116       , source_code
44117       , SUBSTR(source_value ,1,1996)
44118       , SUBSTR(source_meaning ,1,200)
44119       , xla_environment_pkg.g_Usr_Id
44120       , TRUNC(SYSDATE)
44121       , TRUNC(SYSDATE)
44122       , xla_environment_pkg.g_Usr_Id
44123       , xla_environment_pkg.g_Login_Id
44124       , TRUNC(SYSDATE)
44125       , xla_environment_pkg.g_Prog_Appl_Id
44126       , xla_environment_pkg.g_Prog_Id
44127       , xla_environment_pkg.g_Req_Id
44128   FROM (
44129        SELECT xet.event_id                  event_id
44130             , 0                          line_number
44131             , CASE r
44132                WHEN 1 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44133                 WHEN 2 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44134                 WHEN 3 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44135                 WHEN 4 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44136                 WHEN 5 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44137                 WHEN 6 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44138                 WHEN 7 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44139                 WHEN 8 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44140                 WHEN 9 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44141                 WHEN 10 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44142                 WHEN 11 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44143                 WHEN 12 THEN 'AP_INVOICE_EXTRACT_HEADER_V' 
44144                 
44145                ELSE null
44146               END                           object_name
44147             , CASE r
44148                 WHEN 1 THEN 'HEADER' 
44149                 WHEN 2 THEN 'HEADER' 
44150                 WHEN 3 THEN 'HEADER' 
44151                 WHEN 4 THEN 'HEADER' 
44152                 WHEN 5 THEN 'HEADER' 
44153                 WHEN 6 THEN 'HEADER' 
44154                 WHEN 7 THEN 'HEADER' 
44155                 WHEN 8 THEN 'HEADER' 
44156                 WHEN 9 THEN 'HEADER' 
44157                 WHEN 10 THEN 'HEADER' 
44158                 WHEN 11 THEN 'HEADER' 
44159                 WHEN 12 THEN 'HEADER' 
44160                 
44161                 ELSE null
44162               END                           object_type_code
44163             , CASE r
44164                 WHEN 1 THEN '200' 
44165                 WHEN 2 THEN '200' 
44166                 WHEN 3 THEN '200' 
44167                 WHEN 4 THEN '200' 
44168                 WHEN 5 THEN '200' 
44169                 WHEN 6 THEN '200' 
44170                 WHEN 7 THEN '200' 
44171                 WHEN 8 THEN '200' 
44172                 WHEN 9 THEN '200' 
44173                 WHEN 10 THEN '200' 
44177                 ELSE null
44174                 WHEN 11 THEN '200' 
44175                 WHEN 12 THEN '200' 
44176                 
44178               END                           source_application_id
44179             , 'S'             source_type_code
44180             , CASE r
44181                 WHEN 1 THEN 'AI_INVOICE_TYPE_LOOKUP_CODE' 
44182                 WHEN 2 THEN 'AI_INVOICE_ID' 
44183                 WHEN 3 THEN 'AI_INVOICE_CURRENCY_CODE' 
44184                 WHEN 4 THEN 'INV_EXCHANGE_DATE' 
44185                 WHEN 5 THEN 'INV_EXCHANGE_RATE' 
44186                 WHEN 6 THEN 'INV_EXCHANGE_RATE_TYPE' 
44187                 WHEN 7 THEN 'AI_VENDOR_ID' 
44188                 WHEN 8 THEN 'AI_VENDOR_SITE_ID' 
44189                 WHEN 9 THEN 'THIRD_PARTY_TYPE' 
44190                 WHEN 10 THEN 'INV_DOC_SEQUENCE_CATEGORY' 
44191                 WHEN 11 THEN 'INV_DOC_SEQUENCE_IDENTIFIER' 
44192                 WHEN 12 THEN 'INV_DOC_SEQUENCE_VALUE' 
44193                 
44194                 ELSE null
44195               END                           source_code
44196             , CASE r
44197                 WHEN 1 THEN TO_CHAR(h2.AI_INVOICE_TYPE_LOOKUP_CODE)
44198                 WHEN 2 THEN TO_CHAR(h2.AI_INVOICE_ID)
44199                 WHEN 3 THEN TO_CHAR(h2.AI_INVOICE_CURRENCY_CODE)
44200                 WHEN 4 THEN TO_CHAR(h2.INV_EXCHANGE_DATE)
44201                 WHEN 5 THEN TO_CHAR(h2.INV_EXCHANGE_RATE)
44202                 WHEN 6 THEN TO_CHAR(h2.INV_EXCHANGE_RATE_TYPE)
44203                 WHEN 7 THEN TO_CHAR(h2.AI_VENDOR_ID)
44204                 WHEN 8 THEN TO_CHAR(h2.AI_VENDOR_SITE_ID)
44205                 WHEN 9 THEN TO_CHAR(h2.THIRD_PARTY_TYPE)
44206                 WHEN 10 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_CATEGORY)
44207                 WHEN 11 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_IDENTIFIER)
44208                 WHEN 12 THEN TO_CHAR(h2.INV_DOC_SEQUENCE_VALUE)
44209                 
44210                 ELSE null
44211               END                           source_value
44212             , CASE r
44213                 WHEN 1 THEN fvl13.meaning
44214                 
44215                 ELSE null
44216               END               source_meaning
44217          FROM xla_events_gt     xet  
44218       , AP_INVOICE_EXTRACT_HEADER_V  h2
44219   , fnd_lookup_values    fvl13
44220              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
44221          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
44222            AND xet.event_class_code = C_EVENT_CLASS_CODE
44223               AND h2.event_id = xet.event_id
44224    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
44225   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
44226   AND fvl13.view_application_id(+) = 200
44227   AND fvl13.language(+)            = USERENV('LANG')
44228   
44229 )
44230 ;
44231 --
44232 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
44233 
44234       trace
44235          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
44236          ,p_level    => C_LEVEL_STATEMENT
44237          ,p_module   => l_log_module);
44238 
44239 END IF;
44240 --
44241 
44242 
44243 
44244 --
44245 INSERT INTO xla_diag_sources  --line2
44246 (
44247         event_id
44248       , ledger_id
44249       , sla_ledger_id
44250       , description_language
44251       , object_name
44252       , object_type_code
44253       , line_number
44254       , source_application_id
44255       , source_type_code
44256       , source_code
44257       , source_value
44258       , source_meaning
44259       , created_by
44260       , creation_date
44261       , last_update_date
44262       , last_updated_by
44263       , last_update_login
44264       , program_update_date
44265       , program_application_id
44266       , program_id
44267       , request_id
44268 )
44269 SELECT  event_id
44270       , p_target_ledger_id
44271       , p_sla_ledger_id
44272       , p_language
44273       , object_name
44274       , object_type_code
44275       , line_number
44276       , source_application_id
44277       , source_type_code
44278       , source_code
44279       , SUBSTR(source_value,1,1996)
44280       , SUBSTR(source_meaning ,1,200)
44281       , xla_environment_pkg.g_Usr_Id
44282       , TRUNC(SYSDATE)
44283       , TRUNC(SYSDATE)
44284       , xla_environment_pkg.g_Usr_Id
44285       , xla_environment_pkg.g_Login_Id
44286       , TRUNC(SYSDATE)
44287       , xla_environment_pkg.g_Prog_Appl_Id
44288       , xla_environment_pkg.g_Prog_Id
44289       , xla_environment_pkg.g_Req_Id
44290   FROM (
44291        SELECT xet.event_id                  event_id
44292             , l1.line_number                 line_number
44293             , CASE r
44294                WHEN 1 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44295                 WHEN 2 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44296                 WHEN 3 THEN 'FV_XLA_AP_REF_V' 
44297                 WHEN 4 THEN 'FV_XLA_AP_REF_V' 
44298                 WHEN 5 THEN 'FV_XLA_AP_REF_V' 
44299                 WHEN 6 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44300                 WHEN 7 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44301                 WHEN 8 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44302                 WHEN 9 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44303                 WHEN 10 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44304                 WHEN 11 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44305                 WHEN 12 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44306                 WHEN 13 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44307                 WHEN 14 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44308                 WHEN 15 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44309                 WHEN 16 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44310                 WHEN 17 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44314                 WHEN 21 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44311                 WHEN 18 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44312                 WHEN 19 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44313                 WHEN 20 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44315                 WHEN 22 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44316                 WHEN 23 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44317                 WHEN 24 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44318                 WHEN 25 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44319                 WHEN 26 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44320                 WHEN 27 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44321                 WHEN 28 THEN 'ZX_AP_DEF_TAX_EXTRACT_V' 
44322                 WHEN 29 THEN 'ZX_AP_TAX_JRNL_LINE_DESC_V' 
44323                 WHEN 30 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44324                 WHEN 31 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44325                 WHEN 32 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44326                 WHEN 33 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44327                 WHEN 34 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44328                 WHEN 35 THEN 'AP_EXTRACT_INVOICE_DTLS_BC_V' 
44329                 
44330                ELSE null
44331               END                           object_name
44332             , CASE r
44333                 WHEN 1 THEN 'LINE' 
44334                 WHEN 2 THEN 'LINE' 
44335                 WHEN 3 THEN 'LINE' 
44336                 WHEN 4 THEN 'LINE' 
44337                 WHEN 5 THEN 'LINE' 
44338                 WHEN 6 THEN 'LINE' 
44339                 WHEN 7 THEN 'LINE' 
44340                 WHEN 8 THEN 'LINE' 
44341                 WHEN 9 THEN 'LINE' 
44342                 WHEN 10 THEN 'LINE' 
44343                 WHEN 11 THEN 'LINE' 
44344                 WHEN 12 THEN 'LINE' 
44345                 WHEN 13 THEN 'LINE' 
44346                 WHEN 14 THEN 'LINE' 
44347                 WHEN 15 THEN 'LINE' 
44348                 WHEN 16 THEN 'LINE' 
44349                 WHEN 17 THEN 'LINE' 
44350                 WHEN 18 THEN 'LINE' 
44351                 WHEN 19 THEN 'LINE' 
44352                 WHEN 20 THEN 'LINE' 
44353                 WHEN 21 THEN 'LINE' 
44354                 WHEN 22 THEN 'LINE' 
44355                 WHEN 23 THEN 'LINE' 
44356                 WHEN 24 THEN 'LINE' 
44357                 WHEN 25 THEN 'LINE' 
44358                 WHEN 26 THEN 'LINE' 
44359                 WHEN 27 THEN 'LINE' 
44360                 WHEN 28 THEN 'LINE' 
44361                 WHEN 29 THEN 'LINE' 
44362                 WHEN 30 THEN 'LINE' 
44363                 WHEN 31 THEN 'LINE' 
44364                 WHEN 32 THEN 'LINE' 
44365                 WHEN 33 THEN 'LINE' 
44366                 WHEN 34 THEN 'LINE' 
44367                 WHEN 35 THEN 'LINE' 
44368                 
44369                 ELSE null
44370               END                           object_type_code
44371             , CASE r
44372                 WHEN 1 THEN '200' 
44373                 WHEN 2 THEN '200' 
44374                 WHEN 3 THEN '8901' 
44375                 WHEN 4 THEN '8901' 
44376                 WHEN 5 THEN '8901' 
44377                 WHEN 6 THEN '200' 
44378                 WHEN 7 THEN '200' 
44379                 WHEN 8 THEN '200' 
44380                 WHEN 9 THEN '200' 
44381                 WHEN 10 THEN '200' 
44382                 WHEN 11 THEN '200' 
44383                 WHEN 12 THEN '200' 
44384                 WHEN 13 THEN '200' 
44385                 WHEN 14 THEN '200' 
44386                 WHEN 15 THEN '200' 
44387                 WHEN 16 THEN '200' 
44388                 WHEN 17 THEN '200' 
44389                 WHEN 18 THEN '200' 
44390                 WHEN 19 THEN '200' 
44391                 WHEN 20 THEN '200' 
44392                 WHEN 21 THEN '200' 
44393                 WHEN 22 THEN '200' 
44394                 WHEN 23 THEN '200' 
44395                 WHEN 24 THEN '200' 
44396                 WHEN 25 THEN '200' 
44397                 WHEN 26 THEN '200' 
44398                 WHEN 27 THEN '200' 
44399                 WHEN 28 THEN '200' 
44400                 WHEN 29 THEN '200' 
44401                 WHEN 30 THEN '200' 
44402                 WHEN 31 THEN '200' 
44403                 WHEN 32 THEN '200' 
44404                 WHEN 33 THEN '200' 
44405                 WHEN 34 THEN '200' 
44406                 WHEN 35 THEN '200' 
44407                 
44408                 ELSE null
44409               END                           source_application_id
44410             , 'S'             source_type_code
44411             , CASE r
44412                 WHEN 1 THEN 'AID_DESCRIPTION' 
44413                 WHEN 2 THEN 'AID_DIST_CCID' 
44414                 WHEN 3 THEN 'FEDERAL_FUND_CATEGORY' 
44415                 WHEN 4 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
44416                 WHEN 5 THEN 'FEDERAL_FUND_CAT_DESC' 
44417                 WHEN 6 THEN 'DIST_ACCOUNT_REVERSAL_OPTION' 
44418                 WHEN 7 THEN 'DISTRIBUTION_LINK_TYPE' 
44419                 WHEN 8 THEN 'ALLOC_TO_MAIN_DIST_ID' 
44420                 WHEN 9 THEN 'BUS_FLOW_AP_APP_ID' 
44421                 WHEN 10 THEN 'BUS_FLOW_INV_DIST_TYPE' 
44422                 WHEN 11 THEN 'BUS_FLOW_INV_ENTITY_CODE' 
44423                 WHEN 12 THEN 'BUS_FLOW_INV_DIST_ID' 
44424                 WHEN 13 THEN 'BUS_FLOW_INV_ID' 
44425                 WHEN 14 THEN 'AID_INVOICE_DIST_ID' 
44426                 WHEN 15 THEN 'UPG_ENC_CR_CCID' 
44427                 WHEN 16 THEN 'UPG_ENC_CR_AMT' 
44428                 WHEN 17 THEN 'UPG_ENC_CR_BASE_AMT' 
44429                 WHEN 18 THEN 'UPG_ENC_DR_CCID' 
44430                 WHEN 19 THEN 'UPG_ENC_DR_AMT' 
44431                 WHEN 20 THEN 'UPG_ENC_DR_BASE_AMT' 
44432                 WHEN 21 THEN 'UPG_AP_ENCUM_OPTION' 
44433                 WHEN 22 THEN 'DEFERRED_END_DATE' 
44434                 WHEN 23 THEN 'DEFERRED_OPTION' 
44435                 WHEN 24 THEN 'DEFERRED_START_DATE' 
44439                 WHEN 28 THEN 'TAX_LINE_ID' 
44436                 WHEN 25 THEN 'OVERRIDE_ACCTD_AMT_FLAG' 
44437                 WHEN 26 THEN 'AID_PARENT_REVERSAL_ID' 
44438                 WHEN 27 THEN 'AID_STAT_AMOUNT' 
44440                 WHEN 29 THEN 'REC_NREC_TAX_DIST_ID' 
44441                 WHEN 30 THEN 'SUMMARY_TAX_LINE_ID' 
44442                 WHEN 31 THEN 'UPG_CR_ENC_TYPE_ID' 
44443                 WHEN 32 THEN 'UPG_DR_ENC_TYPE_ID' 
44444                 WHEN 33 THEN 'AID_AMOUNT' 
44445                 WHEN 34 THEN 'INV_DIST_BASE_AMOUNT' 
44446                 WHEN 35 THEN 'POD_PO_DISTRIBUTION_ID' 
44447                 
44448                 ELSE null
44449               END                           source_code
44450             , CASE r
44451                 WHEN 1 THEN TO_CHAR(l1.AID_DESCRIPTION)
44452                 WHEN 2 THEN TO_CHAR(l1.AID_DIST_CCID)
44453                 WHEN 3 THEN TO_CHAR(l3.FEDERAL_FUND_CATEGORY)
44454                 WHEN 4 THEN TO_CHAR(l3.FEDERAL_FUND_EXPIRED_STATUS)
44455                 WHEN 5 THEN TO_CHAR(l3.FEDERAL_FUND_CAT_DESC)
44456                 WHEN 6 THEN TO_CHAR(l1.DIST_ACCOUNT_REVERSAL_OPTION)
44457                 WHEN 7 THEN TO_CHAR(l1.DISTRIBUTION_LINK_TYPE)
44458                 WHEN 8 THEN TO_CHAR(l1.ALLOC_TO_MAIN_DIST_ID)
44459                 WHEN 9 THEN TO_CHAR(l1.BUS_FLOW_AP_APP_ID)
44460                 WHEN 10 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_TYPE)
44461                 WHEN 11 THEN TO_CHAR(l1.BUS_FLOW_INV_ENTITY_CODE)
44462                 WHEN 12 THEN TO_CHAR(l1.BUS_FLOW_INV_DIST_ID)
44463                 WHEN 13 THEN TO_CHAR(l1.BUS_FLOW_INV_ID)
44464                 WHEN 14 THEN TO_CHAR(l1.AID_INVOICE_DIST_ID)
44465                 WHEN 15 THEN TO_CHAR(l1.UPG_ENC_CR_CCID)
44466                 WHEN 16 THEN TO_CHAR(l1.UPG_ENC_CR_AMT)
44467                 WHEN 17 THEN TO_CHAR(l1.UPG_ENC_CR_BASE_AMT)
44468                 WHEN 18 THEN TO_CHAR(l1.UPG_ENC_DR_CCID)
44469                 WHEN 19 THEN TO_CHAR(l1.UPG_ENC_DR_AMT)
44470                 WHEN 20 THEN TO_CHAR(l1.UPG_ENC_DR_BASE_AMT)
44471                 WHEN 21 THEN TO_CHAR(l1.UPG_AP_ENCUM_OPTION)
44472                 WHEN 22 THEN TO_CHAR(l1.DEFERRED_END_DATE)
44473                 WHEN 23 THEN TO_CHAR(l1.DEFERRED_OPTION)
44474                 WHEN 24 THEN TO_CHAR(l1.DEFERRED_START_DATE)
44475                 WHEN 25 THEN TO_CHAR(l1.OVERRIDE_ACCTD_AMT_FLAG)
44476                 WHEN 26 THEN TO_CHAR(l1.AID_PARENT_REVERSAL_ID)
44477                 WHEN 27 THEN TO_CHAR(l1.AID_STAT_AMOUNT)
44478                 WHEN 28 THEN TO_CHAR(l4.TAX_LINE_ID)
44479                 WHEN 29 THEN TO_CHAR(l5.REC_NREC_TAX_DIST_ID)
44480                 WHEN 30 THEN TO_CHAR(l1.SUMMARY_TAX_LINE_ID)
44481                 WHEN 31 THEN TO_CHAR(l1.UPG_CR_ENC_TYPE_ID)
44482                 WHEN 32 THEN TO_CHAR(l1.UPG_DR_ENC_TYPE_ID)
44483                 WHEN 33 THEN TO_CHAR(l1.AID_AMOUNT)
44484                 WHEN 34 THEN TO_CHAR(l1.INV_DIST_BASE_AMOUNT)
44485                 WHEN 35 THEN TO_CHAR(l1.POD_PO_DISTRIBUTION_ID)
44486                 
44487                 ELSE null
44488               END                           source_value
44489             , CASE r
44490                 WHEN 25 THEN fvl42.meaning
44491                 
44492                 ELSE null
44493               END               source_meaning
44494          FROM  xla_events_gt     xet  
44495         , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
44496         , FV_XLA_AP_REF_V  l3
44497         , ZX_AP_DEF_TAX_EXTRACT_V  l4
44498         , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
44499   , fnd_lookup_values    fvl42
44500             , (select rownum r from all_objects where rownum <= 35 and owner = p_apps_owner)
44501         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
44502           AND xet.event_class_code = C_EVENT_CLASS_CODE
44503             AND l1.event_id          = xet.event_id
44504  AND l3.federal_event_id  (+) = l1.event_id  and l3.federal_line_number  (+) = l1.line_number AND l1.zrnd_tax_dist_id = l4.rec_nrec_tax_dist_id (+)  AND l1.zrnd_tax_dist_id = l5.rec_nrec_tax_dist_id (+)    AND fvl42.lookup_type(+)         = 'YES_NO'
44505   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
44506   AND fvl42.view_application_id(+) = 0
44507   AND fvl42.language(+)            = USERENV('LANG')
44508   
44509 )
44510 ;
44511 --
44512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
44513 
44514       trace
44515          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
44516          ,p_level    => C_LEVEL_STATEMENT
44517          ,p_module   => l_log_module);
44518 
44519 END IF;
44520 
44521 
44522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44523       trace
44524          (p_msg      => 'END of insert_sources_63'
44525          ,p_level    => C_LEVEL_PROCEDURE
44526          ,p_module   => l_log_module);
44527 END IF;
44528 EXCEPTION
44529   WHEN xla_exceptions_pkg.application_exception THEN
44530       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
44531             trace
44532                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
44533                ,p_level    => C_LEVEL_EXCEPTION
44534                ,p_module   => l_log_module);
44535       END IF;
44536       RAISE;
44537   WHEN OTHERS THEN
44538       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
44539             trace
44540                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
44541                ,p_level    => C_LEVEL_EXCEPTION
44542                ,p_module   => l_log_module);
44543        END IF;
44544        xla_exceptions_pkg.raise_message
44545            (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.insert_sources_63');
44546 END insert_sources_63;
44547 --
44548 
44549 ---------------------------------------
44550 --
44551 -- PRIVATE FUNCTION
44552 --         EventClass_63
44553 --
44554 ----------------------------------------
44555 --
44556 FUNCTION EventClass_63
44557        (p_application_id         IN NUMBER
44561        ,p_currency_code          IN VARCHAR2
44558        ,p_base_ledger_id         IN NUMBER
44559        ,p_target_ledger_id       IN NUMBER
44560        ,p_language               IN VARCHAR2
44562        ,p_sla_ledger_id          IN NUMBER
44563        ,p_pad_start_date         IN DATE
44564        ,p_pad_end_date           IN DATE
44565        ,p_primary_ledger_id      IN NUMBER)
44566 RETURN BOOLEAN IS
44567 --
44568 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PREPAYMENTS_ALL';
44569 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PREPAYMENTS';
44570 
44571 l_calculate_acctd_flag   VARCHAR2(1) :='N';
44572 l_calculate_g_l_flag     VARCHAR2(1) :='N';
44573 --
44574 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44575 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44576 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
44577 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
44578 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44579 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
44580 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
44581 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44582 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44583 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44584 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44585 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44586 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44587 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
44588 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
44589 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
44590 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
44591 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
44592 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44593 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44594 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44595 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
44596 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
44597 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
44598 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
44599 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
44600 
44601 l_event_id                             NUMBER;
44602 l_previous_event_id                    NUMBER;
44603 l_first_event_id                       NUMBER;
44604 l_last_event_id                        NUMBER;
44605 
44606 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
44607 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
44608 --
44609 --
44610 l_result                    BOOLEAN := TRUE;
44611 l_rows                      NUMBER  := 1000;
44612 l_event_type_name           VARCHAR2(80) := 'All';
44613 l_event_class_name          VARCHAR2(80) := 'Prepayments';
44614 l_description               VARCHAR2(4000);
44615 l_transaction_reversal      NUMBER;
44616 l_ae_header_id              NUMBER;
44617 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
44618 l_log_module                VARCHAR2(240);
44619 --
44620 l_acct_reversal_source      VARCHAR2(30);
44621 l_trx_reversal_source       VARCHAR2(30);
44622 
44623 l_continue_with_lines       BOOLEAN := TRUE;
44624 --
44625 l_acc_rev_gl_date_source    DATE;                      -- 4262811
44626 --
44627 type t_array_event_id is table of number index by binary_integer;
44628 
44629 l_rec_array_event                    t_rec_array_event;
44630 l_null_rec_array_event               t_rec_array_event;
44631 l_array_ae_header_id                 xla_number_array_type;
44632 l_actual_flag                        VARCHAR2(1) := NULL;
44633 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
44634 l_balance_type_code                  VARCHAR2(1) :=NULL;
44635 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
44636 
44637 --
44638 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
44639 --
44640 
44641 TYPE t_array_source_13 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
44642 TYPE t_array_source_20 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_ID%TYPE INDEX BY BINARY_INTEGER;
44643 TYPE t_array_source_29 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
44644 TYPE t_array_source_36 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
44645 TYPE t_array_source_37 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
44646 TYPE t_array_source_38 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
44647 TYPE t_array_source_43 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_ID%TYPE INDEX BY BINARY_INTEGER;
44648 TYPE t_array_source_44 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.AI_VENDOR_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
44649 TYPE t_array_source_45 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.THIRD_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
44650 TYPE t_array_source_71 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
44651 TYPE t_array_source_72 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
44652 TYPE t_array_source_73 IS TABLE OF AP_INVOICE_EXTRACT_HEADER_V.INV_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
44653 
44654 TYPE t_array_source_1 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
44658 TYPE t_array_source_6 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CAT_DESC%TYPE INDEX BY BINARY_INTEGER;
44655 TYPE t_array_source_2 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
44656 TYPE t_array_source_4 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
44657 TYPE t_array_source_5 IS TABLE OF FV_XLA_AP_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
44659 TYPE t_array_source_15 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DIST_ACCOUNT_REVERSAL_OPTION%TYPE INDEX BY BINARY_INTEGER;
44660 TYPE t_array_source_17 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
44661 TYPE t_array_source_19 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.ALLOC_TO_MAIN_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
44662 TYPE t_array_source_21 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_AP_APP_ID%TYPE INDEX BY BINARY_INTEGER;
44663 TYPE t_array_source_22 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
44664 TYPE t_array_source_23 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
44665 TYPE t_array_source_24 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
44666 TYPE t_array_source_25 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.BUS_FLOW_INV_ID%TYPE INDEX BY BINARY_INTEGER;
44667 TYPE t_array_source_26 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_INVOICE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
44668 TYPE t_array_source_27 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
44669 TYPE t_array_source_28 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_AMT%TYPE INDEX BY BINARY_INTEGER;
44670 TYPE t_array_source_30 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_CR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
44671 TYPE t_array_source_31 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
44672 TYPE t_array_source_32 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_AMT%TYPE INDEX BY BINARY_INTEGER;
44673 TYPE t_array_source_33 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_ENC_DR_BASE_AMT%TYPE INDEX BY BINARY_INTEGER;
44674 TYPE t_array_source_34 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_AP_ENCUM_OPTION%TYPE INDEX BY BINARY_INTEGER;
44675 TYPE t_array_source_39 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_END_DATE%TYPE INDEX BY BINARY_INTEGER;
44676 TYPE t_array_source_40 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_OPTION%TYPE INDEX BY BINARY_INTEGER;
44677 TYPE t_array_source_41 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.DEFERRED_START_DATE%TYPE INDEX BY BINARY_INTEGER;
44678 TYPE t_array_source_42 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.OVERRIDE_ACCTD_AMT_FLAG%TYPE INDEX BY BINARY_INTEGER;
44679 TYPE t_array_source_46 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_PARENT_REVERSAL_ID%TYPE INDEX BY BINARY_INTEGER;
44680 TYPE t_array_source_47 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_STAT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
44681 TYPE t_array_source_48 IS TABLE OF ZX_AP_DEF_TAX_EXTRACT_V.TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
44682 TYPE t_array_source_49 IS TABLE OF ZX_AP_TAX_JRNL_LINE_DESC_V.REC_NREC_TAX_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
44683 TYPE t_array_source_50 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.SUMMARY_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
44684 TYPE t_array_source_51 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
44685 TYPE t_array_source_52 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
44686 TYPE t_array_source_55 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.AID_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
44687 TYPE t_array_source_56 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.INV_DIST_BASE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
44688 TYPE t_array_source_70 IS TABLE OF AP_EXTRACT_INVOICE_DTLS_BC_V.POD_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
44689 
44690 l_array_source_13              t_array_source_13;
44691 l_array_source_13_meaning      t_array_lookup_meaning;
44692 l_array_source_20              t_array_source_20;
44693 l_array_source_29              t_array_source_29;
44694 l_array_source_36              t_array_source_36;
44695 l_array_source_37              t_array_source_37;
44696 l_array_source_38              t_array_source_38;
44697 l_array_source_43              t_array_source_43;
44698 l_array_source_44              t_array_source_44;
44699 l_array_source_45              t_array_source_45;
44700 l_array_source_71              t_array_source_71;
44701 l_array_source_72              t_array_source_72;
44702 l_array_source_73              t_array_source_73;
44703 
44704 l_array_source_1      t_array_source_1;
44705 l_array_source_2      t_array_source_2;
44706 l_array_source_4      t_array_source_4;
44707 l_array_source_5      t_array_source_5;
44708 l_array_source_6      t_array_source_6;
44709 l_array_source_15      t_array_source_15;
44710 l_array_source_17      t_array_source_17;
44711 l_array_source_19      t_array_source_19;
44712 l_array_source_21      t_array_source_21;
44713 l_array_source_22      t_array_source_22;
44714 l_array_source_23      t_array_source_23;
44715 l_array_source_24      t_array_source_24;
44716 l_array_source_25      t_array_source_25;
44717 l_array_source_26      t_array_source_26;
44718 l_array_source_27      t_array_source_27;
44719 l_array_source_28      t_array_source_28;
44720 l_array_source_30      t_array_source_30;
44721 l_array_source_31      t_array_source_31;
44722 l_array_source_32      t_array_source_32;
44723 l_array_source_33      t_array_source_33;
44724 l_array_source_34      t_array_source_34;
44725 l_array_source_39      t_array_source_39;
44726 l_array_source_40      t_array_source_40;
44727 l_array_source_41      t_array_source_41;
44728 l_array_source_42      t_array_source_42;
44729 l_array_source_42_meaning      t_array_lookup_meaning;
44730 l_array_source_46      t_array_source_46;
44731 l_array_source_47      t_array_source_47;
44732 l_array_source_48      t_array_source_48;
44733 l_array_source_49      t_array_source_49;
44734 l_array_source_50      t_array_source_50;
44735 l_array_source_51      t_array_source_51;
44736 l_array_source_52      t_array_source_52;
44737 l_array_source_55      t_array_source_55;
44738 l_array_source_56      t_array_source_56;
44742 CURSOR header_cur
44739 l_array_source_70      t_array_source_70;
44740 
44741 --
44743 IS
44744 SELECT /*+ leading(xet) cardinality(xet,1) */
44745 -- Event Class Code: PREPAYMENTS
44746     xet.entity_id
44747    ,xet.legal_entity_id
44748    ,xet.entity_code
44749    ,xet.transaction_number
44750    ,xet.event_id
44751    ,xet.event_class_code
44752    ,xet.event_type_code
44753    ,xet.event_number
44754    ,xet.event_date
44755    ,xet.transaction_date
44756    ,xet.reference_num_1
44757    ,xet.reference_num_2
44758    ,xet.reference_num_3
44759    ,xet.reference_num_4
44760    ,xet.reference_char_1
44761    ,xet.reference_char_2
44762    ,xet.reference_char_3
44763    ,xet.reference_char_4
44764    ,xet.reference_date_1
44765    ,xet.reference_date_2
44766    ,xet.reference_date_3
44767    ,xet.reference_date_4
44768    ,xet.event_created_by
44769    ,xet.budgetary_control_flag 
44770   , h2.AI_INVOICE_TYPE_LOOKUP_CODE    source_13
44771   , fvl13.meaning   source_13_meaning
44772   , h2.AI_INVOICE_ID    source_20
44773   , h2.AI_INVOICE_CURRENCY_CODE    source_29
44774   , h2.INV_EXCHANGE_DATE    source_36
44775   , h2.INV_EXCHANGE_RATE    source_37
44776   , h2.INV_EXCHANGE_RATE_TYPE    source_38
44777   , h2.AI_VENDOR_ID    source_43
44778   , h2.AI_VENDOR_SITE_ID    source_44
44779   , h2.THIRD_PARTY_TYPE    source_45
44780   , h2.INV_DOC_SEQUENCE_CATEGORY    source_71
44781   , h2.INV_DOC_SEQUENCE_IDENTIFIER    source_72
44782   , h2.INV_DOC_SEQUENCE_VALUE    source_73
44783   FROM xla_events_gt     xet 
44784   , AP_INVOICE_EXTRACT_HEADER_V  h2
44785   , fnd_lookup_values    fvl13
44786  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
44787    and xet.event_class_code = C_EVENT_CLASS_CODE
44788    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
44789    AND fvl13.lookup_type(+)         = 'INVOICE TYPE'
44790   AND fvl13.lookup_code(+)         = h2.AI_INVOICE_TYPE_LOOKUP_CODE
44791   AND fvl13.view_application_id(+) = 200
44792   AND fvl13.language(+)            = USERENV('LANG')
44793   
44794  ORDER BY event_id
44795 ;
44796 
44797 
44798 --
44799 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
44800 IS
44801 SELECT  /*+ leading(xet) cardinality(xet,1) */
44802 -- Event Class Code: PREPAYMENTS
44803     xet.entity_id
44804    ,xet.legal_entity_id
44805    ,xet.entity_code
44806    ,xet.transaction_number
44807    ,xet.event_id
44808    ,xet.event_class_code
44809    ,xet.event_type_code
44810    ,xet.event_number
44811    ,xet.event_date
44812    ,xet.transaction_date
44813    ,xet.reference_num_1
44814    ,xet.reference_num_2
44815    ,xet.reference_num_3
44816    ,xet.reference_num_4
44817    ,xet.reference_char_1
44818    ,xet.reference_char_2
44819    ,xet.reference_char_3
44820    ,xet.reference_char_4
44821    ,xet.reference_date_1
44822    ,xet.reference_date_2
44823    ,xet.reference_date_3
44824    ,xet.reference_date_4
44825    ,xet.event_created_by
44826    ,xet.budgetary_control_flag
44827  , l1.LINE_NUMBER  
44828   , l1.AID_DESCRIPTION    source_1
44829   , l1.AID_DIST_CCID    source_2
44830   , l3.FEDERAL_FUND_CATEGORY    source_4
44831   , l3.FEDERAL_FUND_EXPIRED_STATUS    source_5
44832   , l3.FEDERAL_FUND_CAT_DESC    source_6
44833   , l1.DIST_ACCOUNT_REVERSAL_OPTION    source_15
44834   , l1.DISTRIBUTION_LINK_TYPE    source_17
44835   , l1.ALLOC_TO_MAIN_DIST_ID    source_19
44836   , l1.BUS_FLOW_AP_APP_ID    source_21
44837   , l1.BUS_FLOW_INV_DIST_TYPE    source_22
44838   , l1.BUS_FLOW_INV_ENTITY_CODE    source_23
44839   , l1.BUS_FLOW_INV_DIST_ID    source_24
44840   , l1.BUS_FLOW_INV_ID    source_25
44841   , l1.AID_INVOICE_DIST_ID    source_26
44842   , l1.UPG_ENC_CR_CCID    source_27
44843   , l1.UPG_ENC_CR_AMT    source_28
44844   , l1.UPG_ENC_CR_BASE_AMT    source_30
44845   , l1.UPG_ENC_DR_CCID    source_31
44846   , l1.UPG_ENC_DR_AMT    source_32
44847   , l1.UPG_ENC_DR_BASE_AMT    source_33
44848   , l1.UPG_AP_ENCUM_OPTION    source_34
44849   , l1.DEFERRED_END_DATE    source_39
44850   , l1.DEFERRED_OPTION    source_40
44851   , l1.DEFERRED_START_DATE    source_41
44852   , l1.OVERRIDE_ACCTD_AMT_FLAG    source_42
44853   , fvl42.meaning   source_42_meaning
44854   , l1.AID_PARENT_REVERSAL_ID    source_46
44855   , l1.AID_STAT_AMOUNT    source_47
44856   , l4.TAX_LINE_ID    source_48
44857   , l5.REC_NREC_TAX_DIST_ID    source_49
44858   , l1.SUMMARY_TAX_LINE_ID    source_50
44859   , l1.UPG_CR_ENC_TYPE_ID    source_51
44860   , l1.UPG_DR_ENC_TYPE_ID    source_52
44861   , l1.AID_AMOUNT    source_55
44862   , l1.INV_DIST_BASE_AMOUNT    source_56
44863   , l1.POD_PO_DISTRIBUTION_ID    source_70
44864   FROM xla_events_gt     xet 
44865   , AP_EXTRACT_INVOICE_DTLS_BC_V  l1
44866   , FV_XLA_AP_REF_V  l3
44867   , ZX_AP_DEF_TAX_EXTRACT_V  l4
44868   , ZX_AP_TAX_JRNL_LINE_DESC_V  l5
44869   , fnd_lookup_values    fvl42
44870  WHERE xet.event_id between x_first_event_id and x_last_event_id
44871    and xet.event_date between p_pad_start_date and p_pad_end_date
44872    and xet.event_class_code = C_EVENT_CLASS_CODE
44873    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
44874  AND l3.federal_event_id  (+) = l1.event_id  AND l3.federal_line_number  (+) = l1.line_number AND l1.ZRND_tax_dist_id = l4.REC_NREC_TAX_DIST_ID (+)  AND l1.ZRND_tax_dist_id = l5.REC_NREC_TAX_DIST_ID (+)    AND fvl42.lookup_type(+)         = 'YES_NO'
44875   AND fvl42.lookup_code(+)         = l1.OVERRIDE_ACCTD_AMT_FLAG
44876   AND fvl42.view_application_id(+) = 0
44877   AND fvl42.language(+)            = USERENV('LANG')
44878   ;
44879 
44880 --
44881 BEGIN
44882 IF g_log_enabled THEN
44883    l_log_module := C_DEFAULT_MODULE||'.EventClass_63';
44884 END IF;
44885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44889       ,p_module   => l_log_module);
44886    trace
44887       (p_msg      => 'BEGIN of EventClass_63'
44888       ,p_level    => C_LEVEL_PROCEDURE
44890 END IF;
44891 
44892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
44893    trace
44894       (p_msg      => 'p_application_id = '||p_application_id||
44895                      ' - p_base_ledger_id = '||p_base_ledger_id||
44896                      ' - p_target_ledger_id  = '||p_target_ledger_id||
44897                      ' - p_language = '||p_language||
44898                      ' - p_currency_code = '||p_currency_code||
44899                      ' - p_sla_ledger_id = '||p_sla_ledger_id
44900       ,p_level    => C_LEVEL_STATEMENT
44901       ,p_module   => l_log_module);
44902 END IF;
44903 --
44904 -- initialze arrays
44905 --
44906 g_array_event.DELETE;
44907 l_rec_array_event := l_null_rec_array_event;
44908 --
44909 --------------------------------------
44910 -- 4262811 Initialze MPA Line Number
44911 --------------------------------------
44912 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
44913 
44914 --
44915 
44916 --
44917 OPEN header_cur;
44918 --
44919 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
44920    trace
44921    (p_msg      => 'SQL - FETCH header_cur'
44922    ,p_level    => C_LEVEL_STATEMENT
44923    ,p_module   => l_log_module);
44924 END IF;
44925 --
44926 LOOP
44927 FETCH header_cur BULK COLLECT INTO
44928         l_array_entity_id
44929       , l_array_legal_entity_id
44930       , l_array_entity_code
44931       , l_array_transaction_num
44932       , l_array_event_id
44933       , l_array_class_code
44934       , l_array_event_type
44935       , l_array_event_number
44936       , l_array_event_date
44937       , l_array_transaction_date
44938       , l_array_reference_num_1
44939       , l_array_reference_num_2
44940       , l_array_reference_num_3
44941       , l_array_reference_num_4
44942       , l_array_reference_char_1
44943       , l_array_reference_char_2
44944       , l_array_reference_char_3
44945       , l_array_reference_char_4
44946       , l_array_reference_date_1
44947       , l_array_reference_date_2
44948       , l_array_reference_date_3
44949       , l_array_reference_date_4
44950       , l_array_event_created_by
44951       , l_array_budgetary_control_flag 
44952       , l_array_source_13
44953       , l_array_source_13_meaning
44954       , l_array_source_20
44955       , l_array_source_29
44956       , l_array_source_36
44957       , l_array_source_37
44958       , l_array_source_38
44959       , l_array_source_43
44960       , l_array_source_44
44961       , l_array_source_45
44962       , l_array_source_71
44963       , l_array_source_72
44964       , l_array_source_73
44965       LIMIT l_rows;
44966 --
44967 IF (C_LEVEL_EVENT >= g_log_level) THEN
44968    trace
44969    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
44970    ,p_level    => C_LEVEL_EVENT
44971    ,p_module   => l_log_module);
44972 END IF;
44973 --
44974 EXIT WHEN l_array_entity_id.COUNT = 0;
44975 
44976 -- initialize arrays
44977 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
44978 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
44979 
44980 --
44981 -- Bug 4458708
44982 --
44983 XLA_AE_LINES_PKG.g_LineNumber := 0;
44984 
44985 
44986 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
44987 g_last_hdr_idx := l_array_event_id.LAST;
44988 --
44989 -- loop for the headers. Each iteration is for each header extract row
44990 -- fetched in header cursor
44991 --
44992 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
44993 
44994 --
44995 -- set event info as cache for other routines to refer event attributes
44996 --
44997 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
44998    (p_application_id           => p_application_id
44999    ,p_primary_ledger_id        => p_primary_ledger_id
45000    ,p_base_ledger_id           => p_base_ledger_id
45001    ,p_target_ledger_id         => p_target_ledger_id
45002    ,p_entity_id                => l_array_entity_id(hdr_idx)
45003    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
45004    ,p_entity_code              => l_array_entity_code(hdr_idx)
45005    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
45006    ,p_event_id                 => l_array_event_id(hdr_idx)
45007    ,p_event_class_code         => l_array_class_code(hdr_idx)
45008    ,p_event_type_code          => l_array_event_type(hdr_idx)
45009    ,p_event_number             => l_array_event_number(hdr_idx)
45010    ,p_event_date               => l_array_event_date(hdr_idx)
45011    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
45012    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
45013    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
45014    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
45015    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
45016    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
45017    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
45018    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
45019    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
45020    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
45021    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
45022    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
45023    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
45024    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
45025    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
45026 
45027 --
45028 -- set the status of entry to C_VALID (0)
45032 --
45029 --
45030 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
45031 
45033 -- initialize a row for ae header
45034 --
45035 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
45036 
45037 l_event_id := l_array_event_id(hdr_idx);
45038 
45039 --
45040 -- storing the hdr_idx for event. May be used by line cursor.
45041 --
45042 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
45043 
45044 --
45045 -- store sources from header extract. This can be improved to
45046 -- store only those sources from header extract that may be used in lines
45047 --
45048 
45049 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
45050 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
45051 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
45052 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
45053 g_array_event(l_event_id).array_value_date('source_36') := l_array_source_36(hdr_idx);
45054 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
45055 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
45056 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
45057 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
45058 g_array_event(l_event_id).array_value_char('source_45') := l_array_source_45(hdr_idx);
45059 g_array_event(l_event_id).array_value_char('source_71') := l_array_source_71(hdr_idx);
45060 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
45061 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
45062 
45063 --
45064 -- initilaize the status of ae headers for diffrent balance types
45065 -- the status is initialised to C_NOT_CREATED (2)
45066 --
45067 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
45068 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
45069 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
45070 
45071 --
45072 -- call api to validate and store accounting attributes for header
45073 --
45074 
45075 ------------------------------------------------------------
45076 -- Accrual Reversal : to get date for Standard Source (NONE)
45077 ------------------------------------------------------------
45078 l_acc_rev_gl_date_source := NULL;
45079 
45080      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
45081       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_71');
45082      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
45083       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_72');
45084      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
45085       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_73');
45086      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
45087       l_rec_acct_attrs.array_date_value(4) := 
45088 xla_ae_sources_pkg.GetSystemSourceDate(
45089    p_source_code           => 'XLA_EVENT_DATE'
45090  , p_source_type_code      => 'Y'
45091  , p_source_application_id =>  602
45092 );
45093 
45094 
45095 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
45096 
45097 XLA_AE_HEADER_PKG.SetJeCategoryName;
45098 
45099 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
45100 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
45101 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
45102 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
45103 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
45104 
45105 
45106 -- No header level analytical criteria
45107 
45108 --
45109 --accounting attribute enhancement, bug 3612931
45110 --
45111 l_trx_reversal_source := SUBSTR(NULL, 1,30);
45112 
45113 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
45114    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
45115 
45116    xla_accounting_err_pkg.build_message
45117       (p_appli_s_name            => 'XLA'
45118       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
45119       ,p_token_1                 => 'ACCT_ATTR_NAME'
45120       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
45121       ,p_token_2                 => 'PRODUCT_NAME'
45122       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
45123       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
45124       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
45125       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
45126 
45127 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
45128    --
45129    -- following sets the accounting attributes needed to reverse
45130    -- accounting for a distributeion
45131    --
45132    xla_ae_lines_pkg.SetTrxReversalAttrs
45133       (p_event_id              => l_event_id
45134       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
45135       ,p_trx_reversal_source   => l_trx_reversal_source);
45136 
45137 END IF;
45138 
45139 
45140 ----------------------------------------------------------------
45141 -- 4262811 -  update the header statuses to invalid in need be
45142 ----------------------------------------------------------------
45143 --
45144 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
45145 
45149   -----------------------------------------------
45146 
45147   -----------------------------------------------
45148   -- No accrual reversal for the event class/type
45150 ----------------------------------------------------------------
45151 
45152 --
45153 -- this ends the header loop iteration for one bulk fetch
45154 --
45155 END LOOP;
45156 
45157 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
45158 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
45159 
45160 --
45161 -- insert dummy rows into lines gt table that were created due to
45162 -- transaction reversals
45163 --
45164 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
45165    l_result := XLA_AE_LINES_PKG.InsertLines;
45166 END IF;
45167 
45168 --
45169 -- reset the temp_line_num for each set of events fetched from header
45170 -- cursor rather than doing it for each new event in line cursor
45171 -- Bug 3939231
45172 --
45173 xla_ae_lines_pkg.g_temp_line_num := 0;
45174 
45175 
45176 
45177 --
45178 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
45179 --
45180 --
45181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45182 
45183       trace
45184          (p_msg      => 'SQL - FETCH line_cur'
45185          ,p_level    => C_LEVEL_STATEMENT
45186          ,p_module   => l_log_module);
45187 
45188 END IF;
45189 --
45190 --
45191 LOOP
45192   --
45193   FETCH line_cur BULK COLLECT INTO
45194         l_array_entity_id
45195       , l_array_legal_entity_id
45196       , l_array_entity_code
45197       , l_array_transaction_num
45198       , l_array_event_id
45199       , l_array_class_code
45200       , l_array_event_type
45201       , l_array_event_number
45202       , l_array_event_date
45203       , l_array_transaction_date
45204       , l_array_reference_num_1
45205       , l_array_reference_num_2
45206       , l_array_reference_num_3
45207       , l_array_reference_num_4
45208       , l_array_reference_char_1
45209       , l_array_reference_char_2
45210       , l_array_reference_char_3
45211       , l_array_reference_char_4
45212       , l_array_reference_date_1
45213       , l_array_reference_date_2
45214       , l_array_reference_date_3
45215       , l_array_reference_date_4
45216       , l_array_event_created_by
45217       , l_array_budgetary_control_flag
45218       , l_array_extract_line_num 
45219       , l_array_source_1
45220       , l_array_source_2
45221       , l_array_source_4
45222       , l_array_source_5
45223       , l_array_source_6
45224       , l_array_source_15
45225       , l_array_source_17
45226       , l_array_source_19
45227       , l_array_source_21
45228       , l_array_source_22
45229       , l_array_source_23
45230       , l_array_source_24
45231       , l_array_source_25
45232       , l_array_source_26
45233       , l_array_source_27
45234       , l_array_source_28
45235       , l_array_source_30
45236       , l_array_source_31
45237       , l_array_source_32
45238       , l_array_source_33
45239       , l_array_source_34
45240       , l_array_source_39
45241       , l_array_source_40
45242       , l_array_source_41
45243       , l_array_source_42
45244       , l_array_source_42_meaning
45245       , l_array_source_46
45246       , l_array_source_47
45247       , l_array_source_48
45248       , l_array_source_49
45249       , l_array_source_50
45250       , l_array_source_51
45251       , l_array_source_52
45252       , l_array_source_55
45253       , l_array_source_56
45254       , l_array_source_70
45255       LIMIT l_rows;
45256 
45257   --
45258   IF (C_LEVEL_EVENT >= g_log_level) THEN
45259             trace
45260                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
45261                ,p_level    => C_LEVEL_EVENT
45262                ,p_module   => l_log_module);
45263   END IF;
45264   --
45265   EXIT WHEN l_array_entity_id.count = 0;
45266 
45267   XLA_AE_LINES_PKG.g_rec_lines := null;
45268 
45269 --
45270 -- Bug 4458708
45271 --
45272 XLA_AE_LINES_PKG.g_LineNumber := 0;
45273 --
45274 --
45275 
45276 FOR Idx IN 1..l_array_event_id.count LOOP
45277    --
45278    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
45279    --
45280    l_event_id := l_array_event_id(idx);  -- 5648433
45281 
45282    --
45283    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
45284    --
45285 
45286    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
45287              (g_array_event(l_event_id).array_value_num('header_index'))
45288          ,'N'
45289          ) <> 'Y'
45290    THEN
45291       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45292          trace
45293             (p_msg      => 'Trancaction revesal option is not Y '
45294             ,p_level    => C_LEVEL_STATEMENT
45295             ,p_module   => l_log_module);
45296       END IF;
45297 
45298 --
45299 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
45300 --
45301 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
45302 --
45303 -- set event info as cache for other routines to refer event attributes
45304 --
45305 
45306 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
45307    l_previous_event_id := l_event_id;
45308 
45309    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
45310       (p_application_id           => p_application_id
45311       ,p_primary_ledger_id        => p_primary_ledger_id
45312       ,p_base_ledger_id           => p_base_ledger_id
45316       ,p_entity_code              => l_array_entity_code(Idx)
45313       ,p_target_ledger_id         => p_target_ledger_id
45314       ,p_entity_id                => l_array_entity_id(Idx)
45315       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
45317       ,p_transaction_num          => l_array_transaction_num(Idx)
45318       ,p_event_id                 => l_array_event_id(Idx)
45319       ,p_event_class_code         => l_array_class_code(Idx)
45320       ,p_event_type_code          => l_array_event_type(Idx)
45321       ,p_event_number             => l_array_event_number(Idx)
45322       ,p_event_date               => l_array_event_date(Idx)
45323       ,p_transaction_date         => l_array_transaction_date(Idx)
45324       ,p_reference_num_1          => l_array_reference_num_1(Idx)
45325       ,p_reference_num_2          => l_array_reference_num_2(Idx)
45326       ,p_reference_num_3          => l_array_reference_num_3(Idx)
45327       ,p_reference_num_4          => l_array_reference_num_4(Idx)
45328       ,p_reference_char_1         => l_array_reference_char_1(Idx)
45329       ,p_reference_char_2         => l_array_reference_char_2(Idx)
45330       ,p_reference_char_3         => l_array_reference_char_3(Idx)
45331       ,p_reference_char_4         => l_array_reference_char_4(Idx)
45332       ,p_reference_date_1         => l_array_reference_date_1(Idx)
45333       ,p_reference_date_2         => l_array_reference_date_2(Idx)
45334       ,p_reference_date_3         => l_array_reference_date_3(Idx)
45335       ,p_reference_date_4         => l_array_reference_date_4(Idx)
45336       ,p_event_created_by         => l_array_event_created_by(Idx)
45337       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
45338        --
45339 END IF;
45340 
45341 
45342 
45343 --
45344 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
45345 
45346 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
45347 
45348 IF l_continue_with_lines THEN
45349    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
45350       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
45351 
45352       xla_accounting_err_pkg.build_message
45353          (p_appli_s_name            => 'XLA'
45354          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
45355          ,p_token_1                 => 'LINE_NUMBER'
45356          ,p_value_1                 => l_array_extract_line_num(Idx)
45357          ,p_token_2                 => 'PRODUCT_NAME'
45358          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
45359          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
45360          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
45361          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
45362 
45363    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
45364       --
45365       -- following sets the accounting attributes needed to reverse
45366       -- accounting for a distributeion
45367       --
45368 
45369       --
45370       -- 5217187
45371       --
45372       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
45373       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
45374                                        g_array_event(l_event_id).array_value_num('header_index'));
45375       --
45376       --
45377 
45378       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
45379       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
45380       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
45381       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_26(Idx);
45382       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
45383       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
45384       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
45385       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_27(Idx);
45386       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
45387       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_28(Idx);
45388       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
45389       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_29');
45390       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
45391       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_30(Idx);
45392       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
45393       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_31(Idx);
45394       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
45395       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_32(Idx);
45396       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
45397       l_rec_rev_acct_attrs.array_char_value(11)  := g_array_event(l_event_id).array_value_char('source_29');
45398       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
45399       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_33(Idx);
45400       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
45401       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_34(Idx);
45402       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'PARTY_TYPE';
45403       l_rec_rev_acct_attrs.array_char_value(14)  := g_array_event(l_event_id).array_value_char('source_45');
45404       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
45405       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_46(Idx);
45406       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
45407       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_17(Idx);
45408       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'TAX_LINE_REF_ID';
45412       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'TAX_SUMMARY_LINE_REF_ID';
45409       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_48(Idx);
45410       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'TAX_REC_NREC_DIST_REF_ID';
45411       l_rec_rev_acct_attrs.array_num_value(18)  := l_array_source_49(Idx);
45413       l_rec_rev_acct_attrs.array_num_value(19)  := l_array_source_50(Idx);
45414       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
45415       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_51(Idx);
45416       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
45417       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_52(Idx);
45418 
45419 
45420       xla_ae_lines_pkg.SetAcctReversalAttrs
45421          (p_event_id             => l_event_id
45422          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
45423          ,p_calculate_acctd_flag => l_calculate_acctd_flag
45424          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
45425    END IF;
45426 
45427    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
45428        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
45429 
45430 --
45431 AcctLineType_58 (
45432  p_application_id  => p_application_id
45433  ,p_event_id     => l_event_id
45434  ,p_calculate_acctd_flag => l_calculate_acctd_flag
45435  ,p_calculate_g_l_flag => l_calculate_g_l_flag
45436  ,p_actual_flag => l_actual_flag
45437  ,p_balance_type_code => l_balance_type_code
45438  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
45439  
45440  , p_source_1 => l_array_source_1(Idx)
45441  , p_source_2 => l_array_source_2(Idx)
45442  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
45443  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
45444  , p_source_15 => l_array_source_15(Idx)
45445  , p_source_17 => l_array_source_17(Idx)
45446  , p_source_19 => l_array_source_19(Idx)
45447  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
45448  , p_source_21 => l_array_source_21(Idx)
45449  , p_source_22 => l_array_source_22(Idx)
45450  , p_source_23 => l_array_source_23(Idx)
45451  , p_source_24 => l_array_source_24(Idx)
45452  , p_source_25 => l_array_source_25(Idx)
45453  , p_source_26 => l_array_source_26(Idx)
45454  , p_source_27 => l_array_source_27(Idx)
45455  , p_source_28 => l_array_source_28(Idx)
45456  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
45457  , p_source_30 => l_array_source_30(Idx)
45458  , p_source_31 => l_array_source_31(Idx)
45459  , p_source_32 => l_array_source_32(Idx)
45460  , p_source_33 => l_array_source_33(Idx)
45461  , p_source_34 => l_array_source_34(Idx)
45462  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
45463  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
45464  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
45465  , p_source_39 => l_array_source_39(Idx)
45466  , p_source_40 => l_array_source_40(Idx)
45467  , p_source_41 => l_array_source_41(Idx)
45468  , p_source_42 => l_array_source_42(Idx)
45469  , p_source_42_meaning => l_array_source_42_meaning(Idx)
45470  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
45471  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
45472  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
45473  , p_source_46 => l_array_source_46(Idx)
45474  , p_source_47 => l_array_source_47(Idx)
45475  , p_source_48 => l_array_source_48(Idx)
45476  , p_source_49 => l_array_source_49(Idx)
45477  , p_source_50 => l_array_source_50(Idx)
45478  , p_source_51 => l_array_source_51(Idx)
45479  , p_source_52 => l_array_source_52(Idx)
45480  , p_source_55 => l_array_source_55(Idx)
45481  , p_source_56 => l_array_source_56(Idx)
45482  , p_source_70 => l_array_source_70(Idx)
45483  );
45484 If(l_balance_type_code = 'A') THEN
45485   l_actual_gain_loss_ref := l_gain_or_loss_ref;
45486 END IF;
45487 
45488 --
45489 
45490 
45491 --
45492 AcctLineType_59 (
45493  p_application_id  => p_application_id
45494  ,p_event_id     => l_event_id
45495  ,p_calculate_acctd_flag => l_calculate_acctd_flag
45496  ,p_calculate_g_l_flag => l_calculate_g_l_flag
45497  ,p_actual_flag => l_actual_flag
45498  ,p_balance_type_code => l_balance_type_code
45499  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
45500  
45501  , p_source_1 => l_array_source_1(Idx)
45502  , p_source_2 => l_array_source_2(Idx)
45503  , p_source_4 => l_array_source_4(Idx)
45504  , p_source_5 => l_array_source_5(Idx)
45505  , p_source_6 => l_array_source_6(Idx)
45506  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
45507  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
45508  , p_source_15 => l_array_source_15(Idx)
45509  , p_source_17 => l_array_source_17(Idx)
45510  , p_source_19 => l_array_source_19(Idx)
45511  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
45512  , p_source_21 => l_array_source_21(Idx)
45513  , p_source_22 => l_array_source_22(Idx)
45514  , p_source_23 => l_array_source_23(Idx)
45515  , p_source_24 => l_array_source_24(Idx)
45516  , p_source_25 => l_array_source_25(Idx)
45517  , p_source_26 => l_array_source_26(Idx)
45518  , p_source_27 => l_array_source_27(Idx)
45519  , p_source_28 => l_array_source_28(Idx)
45520  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
45521  , p_source_30 => l_array_source_30(Idx)
45522  , p_source_31 => l_array_source_31(Idx)
45523  , p_source_32 => l_array_source_32(Idx)
45524  , p_source_33 => l_array_source_33(Idx)
45525  , p_source_34 => l_array_source_34(Idx)
45526  , p_source_36 => g_array_event(l_event_id).array_value_date('source_36')
45527  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
45528  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
45532  , p_source_42 => l_array_source_42(Idx)
45529  , p_source_39 => l_array_source_39(Idx)
45530  , p_source_40 => l_array_source_40(Idx)
45531  , p_source_41 => l_array_source_41(Idx)
45533  , p_source_42_meaning => l_array_source_42_meaning(Idx)
45534  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
45535  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
45536  , p_source_45 => g_array_event(l_event_id).array_value_char('source_45')
45537  , p_source_46 => l_array_source_46(Idx)
45538  , p_source_47 => l_array_source_47(Idx)
45539  , p_source_48 => l_array_source_48(Idx)
45540  , p_source_49 => l_array_source_49(Idx)
45541  , p_source_50 => l_array_source_50(Idx)
45542  , p_source_51 => l_array_source_51(Idx)
45543  , p_source_52 => l_array_source_52(Idx)
45544  , p_source_55 => l_array_source_55(Idx)
45545  , p_source_56 => l_array_source_56(Idx)
45546  , p_source_70 => l_array_source_70(Idx)
45547  );
45548 If(l_balance_type_code = 'A') THEN
45549   l_actual_gain_loss_ref := l_gain_or_loss_ref;
45550 END IF;
45551 
45552 --
45553 
45554       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
45555       -- or secondary ledger that has different currency with primary
45556       -- or alc that is calculated by sla
45557       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
45558             (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'))
45559 
45560 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
45561 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
45562           AND (l_actual_flag = 'A')) THEN
45563         XLA_AE_LINES_PKG.CreateGainOrLossLines(
45564           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
45565          ,p_application_id   => p_application_id
45566          ,p_amb_context_code => 'DEFAULT'
45567          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
45568          ,p_event_class_code => C_EVENT_CLASS_CODE
45569          ,p_event_type_code  => C_EVENT_TYPE_CODE
45570          
45571          ,p_gain_ccid        => -1
45572          ,p_loss_ccid        => -1
45573 
45574          ,p_actual_flag      => l_actual_flag
45575          ,p_enc_flag         => null
45576          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
45577          ,p_enc_g_l_ref      => null
45578          );
45579       END IF;
45580    END IF;
45581 END IF;
45582 
45583    ELSE
45584       --
45585       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
45586       --
45587       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45588          trace
45589             (p_msg      => 'Trancaction revesal option is Y'
45590             ,p_level    => C_LEVEL_STATEMENT
45591             ,p_module   => l_log_module);
45592       END IF;
45593    END IF;
45594 
45595 END LOOP;
45596 l_result := XLA_AE_LINES_PKG.InsertLines ;
45597 end loop;
45598 close line_cur;
45599 
45600 
45601 --
45602 -- insert headers into xla_ae_headers_gt table
45603 --
45604 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
45605 
45606 -- insert into errors table here.
45607 
45608 END LOOP;
45609 
45610 --
45611 -- 4865292
45612 --
45613 -- Compare g_hdr_extract_count with event count in
45614 -- CreateHeadersAndLines.
45615 --
45616 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
45617 
45618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45619    trace (p_msg     => '# rows extracted from header extract objects '
45620                     || ' (running total): '
45621                     || g_hdr_extract_count
45622          ,p_level   => C_LEVEL_STATEMENT
45623          ,p_module  => l_log_module);
45624 END IF;
45625 
45626 CLOSE header_cur;
45627 --
45628 
45629 --
45630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45631    trace
45632       (p_msg      => 'END of EventClass_63'
45633       ,p_level    => C_LEVEL_PROCEDURE
45634       ,p_module   => l_log_module);
45635 END IF;
45636 --
45637 RETURN l_result;
45638 EXCEPTION
45639 WHEN xla_exceptions_pkg.application_exception THEN
45640    
45641 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
45642 
45643    
45644 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
45645 
45646    RAISE;
45647 
45648 WHEN NO_DATA_FOUND THEN
45649 
45650 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
45651 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
45652 
45653 FOR header_record IN header_cur
45654 LOOP
45655     l_array_header_events(header_record.event_id) := header_record.event_id;
45656 END LOOP;
45657 
45658 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
45659 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
45660 
45661 fnd_file.put_line(fnd_file.LOG, '                    ');
45662 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
45663 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
45664 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
45665 
45666 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
45667 LOOP
45668 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
45669 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
45670         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
45671 	END IF;
45672 END LOOP;
45673 
45677 
45674 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
45675 fnd_file.put_line(fnd_file.LOG, '                    ');
45676 
45678 xla_exceptions_pkg.raise_message
45679       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_63');
45680 
45681 
45682 WHEN OTHERS THEN
45683    xla_exceptions_pkg.raise_message
45684       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.EventClass_63');
45685 END EventClass_63;
45686 --
45687 
45688 --
45689 --+============================================+
45690 --|                                            |
45691 --|  PRIVATE FUNCTION                          |
45692 --|                                            |
45693 --+============================================+
45694 --
45695 FUNCTION CreateHeadersAndLines
45696        (p_application_id         IN NUMBER
45697        ,p_base_ledger_id         IN NUMBER
45698        ,p_target_ledger_id       IN NUMBER
45699        ,p_pad_start_date         IN DATE
45700        ,p_pad_end_date           IN DATE
45701        ,p_primary_ledger_id      IN NUMBER)
45702 RETURN BOOLEAN IS
45703 l_created                   BOOLEAN:=FALSE;
45704 l_event_id                  NUMBER;
45705 l_event_date                DATE;
45706 l_language                  VARCHAR2(30);
45707 l_currency_code             VARCHAR2(30);
45708 l_sla_ledger_id             NUMBER;
45709 l_log_module                VARCHAR2(240);
45710 
45711 BEGIN
45712 --
45713 IF g_log_enabled THEN
45714    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
45715 END IF;
45716 --
45717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45718    trace
45719       (p_msg      => 'BEGIN of CreateHeadersAndLines'
45720       ,p_level    => C_LEVEL_PROCEDURE
45721       ,p_module   => l_log_module);
45722 END IF;
45723 
45724 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
45725 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
45726 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
45727 
45728 --
45729 -- initialize array of lines with NULL
45730 --
45731 xla_ae_lines_pkg.SetNullLine;
45732 
45733 --
45734 -- initialize header extract count -- Bug 4865292
45735 --
45736 g_hdr_extract_count:= 0;
45737 
45738 
45739 l_created := EventClass_60(
45740    p_application_id         => p_application_id
45741  , p_base_ledger_id         => p_base_ledger_id
45742  , p_target_ledger_id       => p_target_ledger_id
45743  , p_language               => l_language
45744  , p_currency_code          => l_currency_code
45745  , p_sla_ledger_id          => l_sla_ledger_id
45746  , p_pad_start_date         => p_pad_start_date
45747  , p_pad_end_date           => p_pad_end_date
45748  , p_primary_ledger_id      => p_primary_ledger_id
45749 );
45750 
45751 
45752 
45753      IF ( g_diagnostics_mode ='Y' ) THEN
45754 
45755          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45756           trace
45757               (p_msg      => 'CALL Transaction Objects Diagnostics'
45758               ,p_level    => C_LEVEL_STATEMENT
45759               ,p_module   => l_log_module);
45760 
45761          END IF;
45762 
45763          insert_sources_60(
45764                           p_target_ledger_id => p_target_ledger_id
45765                         , p_language         => l_language
45766                         , p_sla_ledger_id    => l_sla_ledger_id
45767                         , p_pad_start_date   => p_pad_start_date
45768                         , p_pad_end_date     => p_pad_end_date
45769                           );
45770 
45771      END IF;
45772 
45773 l_created := EventClass_61(
45774    p_application_id         => p_application_id
45775  , p_base_ledger_id         => p_base_ledger_id
45776  , p_target_ledger_id       => p_target_ledger_id
45777  , p_language               => l_language
45778  , p_currency_code          => l_currency_code
45779  , p_sla_ledger_id          => l_sla_ledger_id
45780  , p_pad_start_date         => p_pad_start_date
45781  , p_pad_end_date           => p_pad_end_date
45782  , p_primary_ledger_id      => p_primary_ledger_id
45783 );
45784 
45785 
45786 
45787      IF ( g_diagnostics_mode ='Y' ) THEN
45788 
45789          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45790           trace
45791               (p_msg      => 'CALL Transaction Objects Diagnostics'
45792               ,p_level    => C_LEVEL_STATEMENT
45793               ,p_module   => l_log_module);
45794 
45795          END IF;
45796 
45797          insert_sources_61(
45798                           p_target_ledger_id => p_target_ledger_id
45799                         , p_language         => l_language
45800                         , p_sla_ledger_id    => l_sla_ledger_id
45801                         , p_pad_start_date   => p_pad_start_date
45802                         , p_pad_end_date     => p_pad_end_date
45803                           );
45804 
45805      END IF;
45806 
45807 l_created := EventClass_62(
45808    p_application_id         => p_application_id
45809  , p_base_ledger_id         => p_base_ledger_id
45810  , p_target_ledger_id       => p_target_ledger_id
45811  , p_language               => l_language
45812  , p_currency_code          => l_currency_code
45813  , p_sla_ledger_id          => l_sla_ledger_id
45814  , p_pad_start_date         => p_pad_start_date
45815  , p_pad_end_date           => p_pad_end_date
45816  , p_primary_ledger_id      => p_primary_ledger_id
45817 );
45818 
45819 
45820 
45821      IF ( g_diagnostics_mode ='Y' ) THEN
45822 
45823          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45824           trace
45828 
45825               (p_msg      => 'CALL Transaction Objects Diagnostics'
45826               ,p_level    => C_LEVEL_STATEMENT
45827               ,p_module   => l_log_module);
45829          END IF;
45830 
45831          insert_sources_62(
45832                           p_target_ledger_id => p_target_ledger_id
45833                         , p_language         => l_language
45834                         , p_sla_ledger_id    => l_sla_ledger_id
45835                         , p_pad_start_date   => p_pad_start_date
45836                         , p_pad_end_date     => p_pad_end_date
45837                           );
45838 
45839      END IF;
45840 
45841 l_created := EventClass_63(
45842    p_application_id         => p_application_id
45843  , p_base_ledger_id         => p_base_ledger_id
45844  , p_target_ledger_id       => p_target_ledger_id
45845  , p_language               => l_language
45846  , p_currency_code          => l_currency_code
45847  , p_sla_ledger_id          => l_sla_ledger_id
45848  , p_pad_start_date         => p_pad_start_date
45849  , p_pad_end_date           => p_pad_end_date
45850  , p_primary_ledger_id      => p_primary_ledger_id
45851 );
45852 
45853 
45854 
45855      IF ( g_diagnostics_mode ='Y' ) THEN
45856 
45857          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45858           trace
45859               (p_msg      => 'CALL Transaction Objects Diagnostics'
45860               ,p_level    => C_LEVEL_STATEMENT
45861               ,p_module   => l_log_module);
45862 
45863          END IF;
45864 
45865          insert_sources_63(
45866                           p_target_ledger_id => p_target_ledger_id
45867                         , p_language         => l_language
45868                         , p_sla_ledger_id    => l_sla_ledger_id
45869                         , p_pad_start_date   => p_pad_start_date
45870                         , p_pad_end_date     => p_pad_end_date
45871                           );
45872 
45873      END IF;
45874 
45875 
45876  --
45877  -- Bug 4865292
45878  -- When the number of events and that of header extract do not match,
45879  -- set the no header extract flag to indicate there are some issues
45880  -- in header extract.
45881  --
45882  -- Event count context is set in xla_accounting_pkg.unit_processor.
45883  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
45884  -- to report it as a general error.
45885  --
45886  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
45887  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
45888 
45889      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45890         trace
45891           (p_msg      => '# of extracted headers and events does not match'
45892           ,p_level    => C_LEVEL_STATEMENT
45893           ,p_module   => l_log_module);
45894 
45895         trace
45896           (p_msg      => '# of extracted headers: '
45897                          ||g_hdr_extract_count
45898           ,p_level    => C_LEVEL_STATEMENT
45899           ,p_module   => l_log_module);
45900 
45901         trace
45902           (p_msg      => '# of events in xla_events_gt: '
45903                          ||xla_context_pkg.get_event_count_context
45904           ,p_level    => C_LEVEL_STATEMENT
45905           ,p_module   => l_log_module);
45906 
45907         trace
45908           (p_msg      => 'Event No Header Extract Context: '
45909                          ||xla_context_pkg.get_event_nohdr_context
45910           ,p_level    => C_LEVEL_STATEMENT
45911           ,p_module   => l_log_module);
45912 
45913      END IF;
45914 
45915 
45916      xla_context_pkg.set_event_nohdr_context
45917        (p_nohdr_extract_flag => 'Y'
45918        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
45919 
45920      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45921         trace
45922           (p_msg      => 'No Header Extract Flag is set to Y'
45923           ,p_level    => C_LEVEL_STATEMENT
45924           ,p_module   => l_log_module);
45925      END IF;
45926 
45927  END IF;
45928 
45929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45930    trace
45931       (p_msg      => 'END of CreateHeadersAndLines'
45932       ,p_level    => C_LEVEL_PROCEDURE
45933       ,p_module   => l_log_module);
45934 END IF;
45935 
45936 RETURN l_created;
45937 EXCEPTION
45938 WHEN xla_exceptions_pkg.application_exception THEN
45939    RAISE;
45940 WHEN OTHERS THEN
45941    xla_exceptions_pkg.raise_message
45942       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.CreateHeadersAndLines');
45943 END CreateHeadersAndLines;
45944 --
45945 --
45946 
45947 --
45948 --+============================================+
45949 --|                                            |
45950 --|  PUBLIC FUNCTION                           |
45951 --|                                            |
45952 --+============================================+
45953 --
45954 FUNCTION CreateJournalEntries
45955        (p_application_id         IN NUMBER
45956        ,p_base_ledger_id         IN NUMBER
45957        ,p_pad_start_date         IN DATE
45958        ,p_pad_end_date           IN DATE
45959        ,p_primary_ledger_id      IN NUMBER)
45960 RETURN NUMBER IS
45961 l_log_module                   VARCHAR2(240);
45962 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
45963 l_temp_result                  BOOLEAN;
45964 l_result                       NUMBER;
45965 BEGIN
45966 --
45967 IF g_log_enabled THEN
45968    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
45969 END IF;
45970 --
45971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45972    trace
45973       (p_msg      => 'BEGIN of CreateJournalEntries'||
45977 
45974                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
45975       ,p_level    => C_LEVEL_PROCEDURE
45976       ,p_module   => l_log_module);
45978 END IF;
45979 
45980 --
45981 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
45982 
45983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
45984    trace
45985       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
45986       ,p_level    => C_LEVEL_STATEMENT
45987       ,p_module   => l_log_module);
45988 END IF;
45989 --
45990 xla_ae_journal_entry_pkg.SetProductAcctDefinition
45991    (p_product_rule_code      => 'FV_PAYABLES_AAD'
45992    ,p_product_rule_type_code => 'S'
45993    ,p_product_rule_version   => ''
45994    ,p_product_rule_name      => 'Federal Payables AAD'
45995    ,p_amb_context_code       => 'DEFAULT'
45996    );
45997 
45998 l_array_ledgers :=
45999    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
46000       (p_base_ledger_id  => p_base_ledger_id);
46001 
46002 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
46003    l_temp_result :=
46004       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
46005          (p_application_id           => p_application_id
46006          ,p_base_ledger_id           => p_base_ledger_id
46007          ,p_target_ledger_id         => l_array_ledgers(Idx)
46008          ,p_primary_ledger_id        => p_primary_ledger_id
46009          ,p_pad_start_date           => p_pad_start_date
46010          ,p_pad_end_date             => p_pad_end_date);
46011 
46012    l_temp_result :=
46013       l_temp_result AND
46014       CreateHeadersAndLines
46015          (p_application_id             => p_application_id
46016          ,p_base_ledger_id             => p_base_ledger_id
46017          ,p_target_ledger_id           => l_array_ledgers(Idx)
46018          ,p_pad_start_date             => p_pad_start_date
46019          ,p_pad_end_date               => p_pad_end_date
46020          ,p_primary_ledger_id          => p_primary_ledger_id
46021          );
46022 END LOOP;
46023 
46024 
46025 IF (g_diagnostics_mode = 'Y' AND
46026     C_LEVEL_UNEXPECTED >= g_log_level AND
46027     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
46028 
46029    xla_accounting_dump_pkg.acctg_event_extract_log(
46030     p_application_id  => p_application_id
46031     ,p_request_id     => xla_environment_pkg.g_Req_Id
46032    );
46033 
46034 END IF;
46035 
46036 CASE l_temp_result
46037   WHEN TRUE THEN l_result := 0;
46038   ELSE l_result := 2;
46039 END CASE;
46040 
46041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46042    trace
46043       (p_msg      => 'return value. = '||TO_CHAR(l_result)
46044       ,p_level    => C_LEVEL_PROCEDURE
46045       ,p_module   => l_log_module);
46046    trace
46047       (p_msg      => 'END of CreateJournalEntries '
46048       ,p_level    => C_LEVEL_PROCEDURE
46049       ,p_module   => l_log_module);
46050 END IF;
46051 
46052 RETURN l_result;
46053 EXCEPTION
46054 WHEN xla_exceptions_pkg.application_exception THEN
46055    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46056    trace
46057       (p_msg      => 'ERROR. = '||sqlerrm
46058       ,p_level    => C_LEVEL_PROCEDURE
46059       ,p_module   => l_log_module);
46060    END IF;
46061    RAISE;
46062 WHEN OTHERS THEN
46063    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46064    trace
46065       (p_msg      => 'ERROR. = '||sqlerrm
46066       ,p_level    => C_LEVEL_PROCEDURE
46067       ,p_module   => l_log_module);
46068    END IF;
46069    xla_exceptions_pkg.raise_message
46070       (p_location => 'XLA_00200_AAD_S_000012_BC_PKG.CreateJournalEntries');
46071 END CreateJournalEntries;
46072 --
46073 --=============================================================================
46074 --
46075 --
46076 --
46077 --
46078 --
46079 --
46080 --
46081 --
46082 --
46083 --
46084 --
46085 --
46086 --
46087 --
46088 --
46089 --
46090 --
46091 --
46092 --
46093 --
46094 --
46095 --
46096 --=============================================================================
46097 --=============================================================================
46098 --          *********** Initialization routine **********
46099 --=============================================================================
46100 
46101 BEGIN
46102    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
46103    g_log_enabled    := fnd_log.test
46104                           (log_level  => g_log_level
46105                           ,module     => C_DEFAULT_MODULE);
46106 
46107    IF NOT g_log_enabled  THEN
46108       g_log_level := C_LEVEL_LOG_DISABLED;
46109    END IF;
46110 --
46111 END XLA_00200_AAD_S_000012_BC_PKG;
46112 --