DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_08901_AAD_S_000002_PKG

Source


1 PACKAGE BODY XLA_08901_AAD_S_000002_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_08901_AAD_S_000002_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Federal Financials AAD                                 |
14 |      Code    : FV_STANDARD_AAD                                        |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 04-01-2007 at 02:01:47 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_08901_AAD_S_000002_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_08901_AAD_S_000002_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_08901_AAD_S_000002_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_08901_AAD_S_000002_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 --FV_CHECK_NUMBER
241  , p_source_1            IN NUMBER
242 --FV_CHECK_DATE
243  , p_source_2            IN DATE
244 --FV_TREASURY_PAY_NUMBER
245  , p_source_3            IN NUMBER
246 )
247 RETURN VARCHAR2
248 IS
249 l_component_type        VARCHAR2(80)   ;
250 l_component_code        VARCHAR2(30)   ;
251 l_component_type_code   VARCHAR2(1)    ;
252 l_component_appl_id     INTEGER        ;
253 l_amb_context_code      VARCHAR2(30)   ;
254 l_ledger_language       VARCHAR2(30)   ;
255 l_source                VARCHAR2(1996) ;
256 l_description           VARCHAR2(2000) ;
257 l_log_module            VARCHAR2(240)  ;
258 BEGIN
259 IF g_log_enabled THEN
260       l_log_module := C_DEFAULT_MODULE||'.Description_1';
261 END IF;
262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
263       trace
264          (p_msg      => 'BEGIN of Description_1'
265          ,p_level    => C_LEVEL_PROCEDURE
266          ,p_module   => l_log_module);
267 END IF;
268 
269 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
270 l_component_type        := 'AMB_DESCRIPTION';
271 l_component_code        := 'FV_TREASURY_DESC';
272 l_component_type_code   := 'S';
273 l_component_appl_id     :=  8901;
274 l_amb_context_code      := 'DEFAULT';
275 l_source                := NULL;
276 l_description           := NULL;
277 
278 
279  
280  IF 
281 l_ledger_language = 'US' THEN
282     l_description :=  SUBSTR(CONCAT(l_description,' Check Number:'),1,2000);
283     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
284  END IF;   
285   l_source := SUBSTR(TO_CHAR(p_source_1),1,1996);
286   IF l_source IS NOT NULL THEN
287     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
288     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
289   END IF;  
290  IF 
291 l_ledger_language = 'US' THEN
292     l_description :=  SUBSTR(CONCAT(l_description,'     Check Date:'),1,2000);
293     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
294  END IF;   
295   l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR(p_source_2,
296                      xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
297   IF l_source IS NOT NULL THEN
298     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
299     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
300   END IF;  
301  IF 
302 l_ledger_language = 'US' THEN
303     l_description :=  SUBSTR(CONCAT(l_description,'     Treasury Pay Number:'),1,2000);
304     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
305  END IF;   
306   l_source := SUBSTR(TO_CHAR(p_source_3),1,1996);
307   IF l_source IS NOT NULL THEN
308     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
309     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
310   END IF; 
311  l_description := SUBSTR(l_description,1,1996);
312   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313         trace
314            (p_msg      => 'END of Description_1'
315            ,p_level    => C_LEVEL_PROCEDURE
316            ,p_module   => l_log_module);
317 
318   END IF;
319   RETURN l_description;
320 
321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
322       trace
323          (p_msg      => 'END of Description_1'
324          ,p_level    => C_LEVEL_PROCEDURE
325          ,p_module   => l_log_module);
326 END IF;
327 RETURN NULL;
328 EXCEPTION
329   WHEN VALUE_ERROR THEN
330      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
331             trace
332                (p_msg      => 'ERROR: '||sqlerrm
333                ,p_level    => C_LEVEL_EXCEPTION
334                ,p_module   => l_log_module);
335      END IF;
336      RAISE;
337  WHEN xla_exceptions_pkg.application_exception THEN
338       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
339       trace
340          (p_msg      => 'ERROR: '||sqlerrm
341          ,p_level    => C_LEVEL_EXCEPTION
342          ,p_module   => l_log_module);
343       END IF;
344       RAISE;
345  WHEN OTHERS THEN
346        xla_exceptions_pkg.raise_message
347            (p_location => 'XLA_08901_AAD_S_000002_PKG.Description_1');
348 END Description_1;
349 
350 ---------------------------------------
351 --
352 -- PRIVATE FUNCTION
353 --         AcctDerRule_2
354 --
355 ---------------------------------------
356 FUNCTION AcctDerRule_2 (
357   p_application_id             IN NUMBER
361 --FV_AP_CASH_ACCOUNT
358 , p_ae_header_id               IN NUMBER
359 , p_side                       IN VARCHAR2
360 , p_override_seg_flag          IN VARCHAR2 
362  , p_source_4            IN NUMBER
363 --When to Account for Payment Option
364  , p_source_5            IN VARCHAR2
365 --FV_AP_CASH_CLEARING_CCID
366  , p_source_6            IN NUMBER
367 , x_transaction_coa_id         OUT NOCOPY NUMBER
368 , x_accounting_coa_id          OUT NOCOPY NUMBER
369 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
370 , x_flex_value_set_id          OUT NOCOPY NUMBER
371 , x_value_type_code            OUT NOCOPY VARCHAR2
372 , x_value_combination_id       OUT NOCOPY NUMBER
373 , x_value_segment_code         OUT NOCOPY VARCHAR2
374 )
375 RETURN VARCHAR2
376 IS
377 l_component_type       VARCHAR2(80)  ;
378 l_component_code       VARCHAR2(30)  ;
379 l_component_type_code  VARCHAR2(1)   ;
380 l_component_appl_id    INTEGER       ;
381 l_amb_context_code     VARCHAR2(30)  ;
382 l_log_module           VARCHAR2(240) ;
383 l_output_value         VARCHAR2(30)  ;
384 BEGIN
385 IF g_log_enabled THEN
386       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
387 END IF;
388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
389 
390       trace
391          (p_msg      => 'BEGIN of AcctDerRule_2'
392          ,p_level    => C_LEVEL_PROCEDURE
393          ,p_module   => l_log_module);
394 
395 END IF;
396 
397 l_component_type         := 'AMB_ADR';
398 l_component_code         := 'FV_INV_PMT_ACCOUNT_SEG';
399 l_component_type_code    := 'S';
400 l_component_appl_id      :=  8901;
401 l_amb_context_code       := 'DEFAULT';
402 x_transaction_coa_id     :=  null;
403 x_accounting_coa_id      :=  null;
404 x_flexfield_segment_code := 'GL_ACCOUNT';
405 x_flex_value_set_id      :=  null ;
406 
407 
408  IF NVL(p_source_5,'
409 ')  =  'ISSUE_ISSUE'
410  THEN 
411 --
412   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
413 
414       trace
415          (p_msg      => 'END of AcctDerRule_2'
416          ,p_level    => C_LEVEL_PROCEDURE
417          ,p_module   => l_log_module);
418 
419   END IF;
420   x_value_combination_id  := TO_NUMBER(p_source_4) ;
421   x_value_segment_code    := 'GL_ACCOUNT' ;
422   x_value_type_code       := 'S';
423   l_output_value          :=  null;
424   RETURN l_output_value;
425 
426  ELSIF NVL(p_source_5,'
427 ')  <>  'ISSUE_ISSUE'
428  THEN 
429 --
430   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
431 
432       trace
433          (p_msg      => 'END of AcctDerRule_2'
434          ,p_level    => C_LEVEL_PROCEDURE
435          ,p_module   => l_log_module);
436 
437   END IF;
438   x_value_combination_id  := TO_NUMBER(p_source_6) ;
439   x_value_segment_code    := 'GL_ACCOUNT' ;
440   x_value_type_code       := 'S';
441   l_output_value          :=  null;
442   RETURN l_output_value;
443 
444  ELSE 
445     IF p_override_seg_flag = 'Y' THEN 
446        RETURN '#$NO_OVERRIDE#$';
447     END IF;
448  END IF;
449 
450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
451 
452       trace
453          (p_msg      => 'END of AcctDerRule_2(invalid)'
454          ,p_level    => C_LEVEL_PROCEDURE
455          ,p_module   => l_log_module);
456 
457 END IF;
458 
459 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
460 x_value_combination_id  := null;
461 x_value_segment_code    := null;
462 x_value_type_code       := null;
463 l_output_value          := null;
464 xla_accounting_err_pkg.build_message
465                  (p_appli_s_name            => 'XLA'
466                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
467                  ,p_token_1                 => 'COMPONENT_NAME'
468                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
469                                                             l_component_type
470                                                           , l_component_code
471                                                           , l_component_type_code
472                                                           , l_component_appl_id
473                                                           , l_amb_context_code
474                                                           )
475                  ,p_token_2                 => 'OWNER'
476                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
477                                                         'XLA_OWNER_TYPE'
478                                                         ,l_component_type_code
479                                                         )
480                  ,p_token_3                 => 'PAD_NAME'
481                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
482                  ,p_token_4                 => 'PAD_OWNER'
483                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
484                                                         'XLA_OWNER_TYPE'
485                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
486                                                         )
487                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
488                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
489                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
490                  ,p_ae_header_id            => NULL
491 );
492 RETURN l_output_value;
493 EXCEPTION
494   WHEN xla_exceptions_pkg.application_exception THEN
495       RAISE;
499 END AcctDerRule_2;
496   WHEN OTHERS THEN
497        xla_exceptions_pkg.raise_message
498            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_2');
500 --
501 
502 ---------------------------------------
503 --
504 -- PRIVATE FUNCTION
505 --         AcctDerRule_3
506 --
507 ---------------------------------------
508 FUNCTION AcctDerRule_3 (
509   p_application_id             IN NUMBER
510 , p_ae_header_id               IN NUMBER
511 , p_side                       IN VARCHAR2
512 , p_override_seg_flag          IN VARCHAR2 
513 --DIT_CONFIRM_CASH_ACCOUNT
514  , p_source_7            IN VARCHAR2
515 , x_transaction_coa_id         OUT NOCOPY NUMBER
516 , x_accounting_coa_id          OUT NOCOPY NUMBER
517 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
518 , x_flex_value_set_id          OUT NOCOPY NUMBER
519 , x_value_type_code            OUT NOCOPY VARCHAR2
520 , x_value_combination_id       OUT NOCOPY NUMBER
521 , x_value_segment_code         OUT NOCOPY VARCHAR2
522 )
523 RETURN VARCHAR2
524 IS
525 l_component_type       VARCHAR2(80)  ;
526 l_component_code       VARCHAR2(30)  ;
527 l_component_type_code  VARCHAR2(1)   ;
528 l_component_appl_id    INTEGER       ;
529 l_amb_context_code     VARCHAR2(30)  ;
530 l_log_module           VARCHAR2(240) ;
531 l_output_value         VARCHAR2(30)  ;
532 BEGIN
533 IF g_log_enabled THEN
534       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
535 END IF;
536 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
537 
538       trace
539          (p_msg      => 'BEGIN of AcctDerRule_3'
540          ,p_level    => C_LEVEL_PROCEDURE
541          ,p_module   => l_log_module);
542 
543 END IF;
544 
545 l_component_type         := 'AMB_ADR';
546 l_component_code         := 'FV_TREASURY_CONFIRM_CASH_ACCT';
547 l_component_type_code    := 'S';
548 l_component_appl_id      :=  8901;
549 l_amb_context_code       := 'DEFAULT';
550 x_transaction_coa_id     :=  null;
551 x_accounting_coa_id      :=  null;
552 x_flexfield_segment_code := 'GL_ACCOUNT';
553 x_flex_value_set_id      :=  null ;
554 
555 
556 --
557   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
558 
559       trace
560          (p_msg      => 'END of AcctDerRule_3'
561          ,p_level    => C_LEVEL_PROCEDURE
562          ,p_module   => l_log_module);
563 
564   END IF;
565   x_value_combination_id  :=  null ;
566   x_value_segment_code    :=  null ;
567   x_value_type_code       := 'S';
568   l_output_value          := TO_CHAR(p_source_7);
569   RETURN l_output_value;
570 
571 
572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
573 
574       trace
575          (p_msg      => 'END of AcctDerRule_3(invalid)'
576          ,p_level    => C_LEVEL_PROCEDURE
577          ,p_module   => l_log_module);
578 
579 END IF;
580 
581 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
582 x_value_combination_id  := null;
583 x_value_segment_code    := null;
584 x_value_type_code       := null;
585 l_output_value          := null;
586 xla_accounting_err_pkg.build_message
587                  (p_appli_s_name            => 'XLA'
588                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
589                  ,p_token_1                 => 'COMPONENT_NAME'
590                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
591                                                             l_component_type
592                                                           , l_component_code
593                                                           , l_component_type_code
594                                                           , l_component_appl_id
595                                                           , l_amb_context_code
596                                                           )
597                  ,p_token_2                 => 'OWNER'
598                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
599                                                         'XLA_OWNER_TYPE'
600                                                         ,l_component_type_code
601                                                         )
602                  ,p_token_3                 => 'PAD_NAME'
603                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
604                  ,p_token_4                 => 'PAD_OWNER'
605                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
606                                                         'XLA_OWNER_TYPE'
607                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
608                                                         )
609                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
610                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
611                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
612                  ,p_ae_header_id            => NULL
613 );
614 RETURN l_output_value;
615 EXCEPTION
616   WHEN xla_exceptions_pkg.application_exception THEN
617       RAISE;
618   WHEN OTHERS THEN
619        xla_exceptions_pkg.raise_message
620            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_3');
621 END AcctDerRule_3;
622 --
623 
624 ---------------------------------------
625 --
626 -- PRIVATE FUNCTION
627 --         AcctDerRule_4
628 --
629 ---------------------------------------
633 , p_side                       IN VARCHAR2
630 FUNCTION AcctDerRule_4 (
631   p_application_id             IN NUMBER
632 , p_ae_header_id               IN NUMBER
634 , p_override_seg_flag          IN VARCHAR2 
635 --FV_INV_DIST_CCID
636  , p_source_8            IN NUMBER
637 --Automatic Offsets Value
638  , p_source_9            IN VARCHAR2
639  , p_source_9_meaning    IN VARCHAR2
640 --FV_AP_LIABILITY_ACCOUNT
641  , p_source_10            IN NUMBER
642 , x_transaction_coa_id         OUT NOCOPY NUMBER
643 , x_accounting_coa_id          OUT NOCOPY NUMBER
644 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
645 , x_flex_value_set_id          OUT NOCOPY NUMBER
646 , x_value_type_code            OUT NOCOPY VARCHAR2
647 , x_value_combination_id       OUT NOCOPY NUMBER
648 , x_value_segment_code         OUT NOCOPY VARCHAR2
649 )
650 RETURN VARCHAR2
651 IS
652 l_component_type       VARCHAR2(80)  ;
653 l_component_code       VARCHAR2(30)  ;
654 l_component_type_code  VARCHAR2(1)   ;
655 l_component_appl_id    INTEGER       ;
656 l_amb_context_code     VARCHAR2(30)  ;
657 l_log_module           VARCHAR2(240) ;
658 l_output_value         VARCHAR2(30)  ;
659 BEGIN
660 IF g_log_enabled THEN
661       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
662 END IF;
663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
664 
665       trace
666          (p_msg      => 'BEGIN of AcctDerRule_4'
667          ,p_level    => C_LEVEL_PROCEDURE
668          ,p_module   => l_log_module);
669 
670 END IF;
671 
672 l_component_type         := 'AMB_ADR';
673 l_component_code         := 'FV_INV_PMT_BAL_SEG';
674 l_component_type_code    := 'S';
675 l_component_appl_id      :=  8901;
676 l_amb_context_code       := 'DEFAULT';
677 x_transaction_coa_id     :=  null;
678 x_accounting_coa_id      :=  null;
679 x_flexfield_segment_code := 'GL_BALANCING';
680 x_flex_value_set_id      :=  null ;
681 
682 
683  IF NVL(p_source_9,'
684 ')  =  'ACCOUNT_SEGMENT_VALUE' OR 
685 NVL(p_source_9,'
686 ')  =  'BALANCING_SEGMENT'
687  THEN 
688 --
689   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
690 
691       trace
692          (p_msg      => 'END of AcctDerRule_4'
693          ,p_level    => C_LEVEL_PROCEDURE
694          ,p_module   => l_log_module);
695 
696   END IF;
697   x_value_combination_id  := TO_NUMBER(p_source_8) ;
698   x_value_segment_code    := 'GL_BALANCING' ;
699   x_value_type_code       := 'S';
700   l_output_value          :=  null;
701   RETURN l_output_value;
702 
703  ELSIF NVL(p_source_9,'
704 ')  <>  'ACCOUNT_SEGMENT_VALUE' OR 
705 NVL(p_source_9,'
706 ')  <>  'BALANCING_SEGMENT'
707  THEN 
708 --
709   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
710 
711       trace
712          (p_msg      => 'END of AcctDerRule_4'
713          ,p_level    => C_LEVEL_PROCEDURE
714          ,p_module   => l_log_module);
715 
716   END IF;
717   x_value_combination_id  := TO_NUMBER(p_source_10) ;
718   x_value_segment_code    := 'GL_BALANCING' ;
719   x_value_type_code       := 'S';
720   l_output_value          :=  null;
721   RETURN l_output_value;
722 
723  ELSE 
724     IF p_override_seg_flag = 'Y' THEN 
725        RETURN '#$NO_OVERRIDE#$';
726     END IF;
727  END IF;
728 
729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
730 
731       trace
732          (p_msg      => 'END of AcctDerRule_4(invalid)'
733          ,p_level    => C_LEVEL_PROCEDURE
734          ,p_module   => l_log_module);
735 
736 END IF;
737 
738 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
739 x_value_combination_id  := null;
740 x_value_segment_code    := null;
741 x_value_type_code       := null;
742 l_output_value          := null;
743 xla_accounting_err_pkg.build_message
744                  (p_appli_s_name            => 'XLA'
745                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
746                  ,p_token_1                 => 'COMPONENT_NAME'
747                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
748                                                             l_component_type
749                                                           , l_component_code
750                                                           , l_component_type_code
751                                                           , l_component_appl_id
752                                                           , l_amb_context_code
753                                                           )
754                  ,p_token_2                 => 'OWNER'
755                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
756                                                         'XLA_OWNER_TYPE'
757                                                         ,l_component_type_code
758                                                         )
759                  ,p_token_3                 => 'PAD_NAME'
760                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
761                  ,p_token_4                 => 'PAD_OWNER'
762                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
763                                                         'XLA_OWNER_TYPE'
764                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
765                                                         )
769                  ,p_ae_header_id            => NULL
766                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
767                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
768                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
770 );
771 RETURN l_output_value;
772 EXCEPTION
773   WHEN xla_exceptions_pkg.application_exception THEN
774       RAISE;
775   WHEN OTHERS THEN
776        xla_exceptions_pkg.raise_message
777            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_4');
778 END AcctDerRule_4;
779 --
780 
781 ---------------------------------------
782 --
783 -- PRIVATE FUNCTION
784 --         AcctDerRule_5
785 --
786 ---------------------------------------
787 FUNCTION AcctDerRule_5 (
788   p_application_id             IN NUMBER
789 , p_ae_header_id               IN NUMBER
790 , p_side                       IN VARCHAR2
791 , p_override_seg_flag          IN VARCHAR2 
792 --FV_INV_TYPE_LOOKUP_CODE
793  , p_source_11            IN VARCHAR2
794 , x_transaction_coa_id         OUT NOCOPY NUMBER
795 , x_accounting_coa_id          OUT NOCOPY NUMBER
796 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
797 , x_flex_value_set_id          OUT NOCOPY NUMBER
798 , x_value_type_code            OUT NOCOPY VARCHAR2
799 , x_value_combination_id       OUT NOCOPY NUMBER
800 , x_value_segment_code         OUT NOCOPY VARCHAR2
801 )
802 RETURN VARCHAR2
803 IS
804 l_component_type       VARCHAR2(80)  ;
805 l_component_code       VARCHAR2(30)  ;
806 l_component_type_code  VARCHAR2(1)   ;
807 l_component_appl_id    INTEGER       ;
808 l_amb_context_code     VARCHAR2(30)  ;
809 l_log_module           VARCHAR2(240) ;
810 l_output_value         VARCHAR2(30)  ;
811 BEGIN
812 IF g_log_enabled THEN
813       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
814 END IF;
815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
816 
817       trace
818          (p_msg      => 'BEGIN of AcctDerRule_5'
819          ,p_level    => C_LEVEL_PROCEDURE
820          ,p_module   => l_log_module);
821 
822 END IF;
823 
824 l_component_type         := 'AMB_ADR';
825 l_component_code         := 'FV_4X0101_TREASURY_PAY_ACCT';
826 l_component_type_code    := 'S';
827 l_component_appl_id      :=  8901;
828 l_amb_context_code       := 'DEFAULT';
829 x_transaction_coa_id     :=  null;
830 x_accounting_coa_id      :=  null;
831 x_flexfield_segment_code :=  null;
832 x_flex_value_set_id      := 1009988 ;
833 
834 
835  IF NVL(p_source_11,'
836 ')  <>  'PREPAYMENT'
837  THEN 
838 --
839   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
840 
841       trace
842          (p_msg      => 'END of AcctDerRule_5'
843          ,p_level    => C_LEVEL_PROCEDURE
844          ,p_module   => l_log_module);
845 
846   END IF;
847   x_value_combination_id  :=  null ;
848   x_value_segment_code    :=  null ;
849   x_value_type_code       := 'C';
850   l_output_value          := '490101';
851   RETURN l_output_value;
852 
853  ELSIF NVL(p_source_11,'
854 ')  =  'PREPAYMENT'
855  THEN 
856 --
857   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
858 
859       trace
860          (p_msg      => 'END of AcctDerRule_5'
861          ,p_level    => C_LEVEL_PROCEDURE
862          ,p_module   => l_log_module);
863 
864   END IF;
865   x_value_combination_id  :=  null ;
866   x_value_segment_code    :=  null ;
867   x_value_type_code       := 'C';
868   l_output_value          := '480101';
869   RETURN l_output_value;
870 
871  ELSE 
872     IF p_override_seg_flag = 'Y' THEN 
873        RETURN '#$NO_OVERRIDE#$';
874     END IF;
875  END IF;
876 
877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
878 
879       trace
880          (p_msg      => 'END of AcctDerRule_5(invalid)'
881          ,p_level    => C_LEVEL_PROCEDURE
882          ,p_module   => l_log_module);
883 
884 END IF;
885 
886 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
887 x_value_combination_id  := null;
888 x_value_segment_code    := null;
889 x_value_type_code       := null;
890 l_output_value          := null;
891 xla_accounting_err_pkg.build_message
892                  (p_appli_s_name            => 'XLA'
893                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
894                  ,p_token_1                 => 'COMPONENT_NAME'
895                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
896                                                             l_component_type
897                                                           , l_component_code
898                                                           , l_component_type_code
899                                                           , l_component_appl_id
900                                                           , l_amb_context_code
901                                                           )
902                  ,p_token_2                 => 'OWNER'
903                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
904                                                         'XLA_OWNER_TYPE'
905                                                         ,l_component_type_code
906                                                         )
907                  ,p_token_3                 => 'PAD_NAME'
908                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
909                  ,p_token_4                 => 'PAD_OWNER'
910                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
914                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
911                                                         'XLA_OWNER_TYPE'
912                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
913                                                         )
915                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
916                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
917                  ,p_ae_header_id            => NULL
918 );
919 RETURN l_output_value;
920 EXCEPTION
921   WHEN xla_exceptions_pkg.application_exception THEN
922       RAISE;
923   WHEN OTHERS THEN
924        xla_exceptions_pkg.raise_message
925            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_5');
926 END AcctDerRule_5;
927 --
928 
929 ---------------------------------------
930 --
931 -- PRIVATE FUNCTION
932 --         AcctDerRule_6
933 --
934 ---------------------------------------
935 FUNCTION AcctDerRule_6 (
936   p_application_id             IN NUMBER
937 , p_ae_header_id               IN NUMBER
938 , p_side                       IN VARCHAR2
939 , p_override_seg_flag          IN VARCHAR2 
940 --FV_INV_TYPE_LOOKUP_CODE
941  , p_source_11            IN VARCHAR2
942 , x_transaction_coa_id         OUT NOCOPY NUMBER
943 , x_accounting_coa_id          OUT NOCOPY NUMBER
944 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
945 , x_flex_value_set_id          OUT NOCOPY NUMBER
946 , x_value_type_code            OUT NOCOPY VARCHAR2
947 , x_value_combination_id       OUT NOCOPY NUMBER
948 , x_value_segment_code         OUT NOCOPY VARCHAR2
949 )
950 RETURN VARCHAR2
951 IS
952 l_component_type       VARCHAR2(80)  ;
953 l_component_code       VARCHAR2(30)  ;
954 l_component_type_code  VARCHAR2(1)   ;
955 l_component_appl_id    INTEGER       ;
956 l_amb_context_code     VARCHAR2(30)  ;
957 l_log_module           VARCHAR2(240) ;
958 l_output_value         VARCHAR2(30)  ;
959 BEGIN
960 IF g_log_enabled THEN
961       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
962 END IF;
963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
964 
965       trace
966          (p_msg      => 'BEGIN of AcctDerRule_6'
967          ,p_level    => C_LEVEL_PROCEDURE
968          ,p_module   => l_log_module);
969 
970 END IF;
971 
972 l_component_type         := 'AMB_ADR';
973 l_component_code         := 'FV_4X0201_TREASURY_PAY_ACCT';
974 l_component_type_code    := 'S';
975 l_component_appl_id      :=  8901;
976 l_amb_context_code       := 'DEFAULT';
977 x_transaction_coa_id     :=  null;
978 x_accounting_coa_id      :=  null;
979 x_flexfield_segment_code :=  null;
980 x_flex_value_set_id      := 1009988 ;
981 
982 
983  IF NVL(p_source_11,'
984 ')  <>  'PREPAYMENT'
985  THEN 
986 --
987   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
988 
989       trace
990          (p_msg      => 'END of AcctDerRule_6'
991          ,p_level    => C_LEVEL_PROCEDURE
992          ,p_module   => l_log_module);
993 
994   END IF;
995   x_value_combination_id  :=  null ;
996   x_value_segment_code    :=  null ;
997   x_value_type_code       := 'C';
998   l_output_value          := '490201';
999   RETURN l_output_value;
1000 
1001  ELSIF NVL(p_source_11,'
1002 ')  =  'PREPAYMENT'
1003  THEN 
1004 --
1005   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1006 
1007       trace
1008          (p_msg      => 'END of AcctDerRule_6'
1009          ,p_level    => C_LEVEL_PROCEDURE
1010          ,p_module   => l_log_module);
1011 
1012   END IF;
1013   x_value_combination_id  :=  null ;
1014   x_value_segment_code    :=  null ;
1015   x_value_type_code       := 'C';
1016   l_output_value          := '480201';
1017   RETURN l_output_value;
1018 
1019  ELSE 
1020     IF p_override_seg_flag = 'Y' THEN 
1021        RETURN '#$NO_OVERRIDE#$';
1022     END IF;
1023  END IF;
1024 
1025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1026 
1027       trace
1028          (p_msg      => 'END of AcctDerRule_6(invalid)'
1029          ,p_level    => C_LEVEL_PROCEDURE
1030          ,p_module   => l_log_module);
1031 
1032 END IF;
1033 
1034 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1035 x_value_combination_id  := null;
1036 x_value_segment_code    := null;
1037 x_value_type_code       := null;
1038 l_output_value          := null;
1039 xla_accounting_err_pkg.build_message
1040                  (p_appli_s_name            => 'XLA'
1041                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1042                  ,p_token_1                 => 'COMPONENT_NAME'
1043                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1044                                                             l_component_type
1045                                                           , l_component_code
1046                                                           , l_component_type_code
1047                                                           , l_component_appl_id
1048                                                           , l_amb_context_code
1049                                                           )
1050                  ,p_token_2                 => 'OWNER'
1051                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1052                                                         'XLA_OWNER_TYPE'
1053                                                         ,l_component_type_code
1054                                                         )
1055                  ,p_token_3                 => 'PAD_NAME'
1059                                                         'XLA_OWNER_TYPE'
1056                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1057                  ,p_token_4                 => 'PAD_OWNER'
1058                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1060                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1061                                                         )
1062                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1063                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1064                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1065                  ,p_ae_header_id            => NULL
1066 );
1067 RETURN l_output_value;
1068 EXCEPTION
1069   WHEN xla_exceptions_pkg.application_exception THEN
1070       RAISE;
1071   WHEN OTHERS THEN
1072        xla_exceptions_pkg.raise_message
1073            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_6');
1074 END AcctDerRule_6;
1075 --
1076 
1077 ---------------------------------------
1078 --
1079 -- PRIVATE FUNCTION
1080 --         AcctDerRule_7
1081 --
1082 ---------------------------------------
1083 FUNCTION AcctDerRule_7 (
1084   p_application_id              IN NUMBER
1085 , p_ae_header_id                IN NUMBER
1086 , p_side                        IN VARCHAR2 
1087 --FV_INV_DIST_CCID
1088  , p_source_8            IN NUMBER
1089 , x_transaction_coa_id         OUT NOCOPY NUMBER
1090 , x_accounting_coa_id          OUT NOCOPY NUMBER
1091 , x_value_type_code            OUT NOCOPY VARCHAR2
1092 )
1093 RETURN NUMBER
1094 IS
1095 l_component_type       VARCHAR2(80)  ;
1096 l_component_code       VARCHAR2(30)  ;
1097 l_component_type_code  VARCHAR2(1)   ;
1098 l_component_appl_id    INTEGER       ;
1099 l_amb_context_code     VARCHAR2(30)  ;
1100 l_log_module           VARCHAR2(240) ;
1101 l_output_value         NUMBER        ;
1102 BEGIN
1103 IF g_log_enabled THEN
1104       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1105 END IF;
1106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1107       trace
1108          (p_msg      => 'BEGIN of AcctDerRule_7'
1109          ,p_level    => C_LEVEL_PROCEDURE
1110          ,p_module   => l_log_module);
1111 END IF;
1112 --
1113 l_component_type         := 'AMB_ADR';
1114 l_component_code         := 'FV_INV_DIST_ACCOUNT';
1115 l_component_type_code    := 'S';
1116 l_component_appl_id      :=  8901;
1117 l_amb_context_code       := 'DEFAULT';
1118 x_transaction_coa_id     :=  null;
1119 x_accounting_coa_id      :=  null;
1120 --
1121 
1122  --
1123   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1124       trace
1125          (p_msg      => 'END of AcctDerRule_7'
1126          ,p_level    => C_LEVEL_PROCEDURE
1127          ,p_module   => l_log_module);
1128   END IF;
1129   x_value_type_code := 'S';
1130   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
1131   RETURN l_output_value;
1132 
1133 --
1134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1135       trace
1136          (p_msg      => 'END of AcctDerRule_7(invalid)'
1137          ,p_level    => C_LEVEL_PROCEDURE
1138          ,p_module   => l_log_module);
1139 END IF;
1140 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1141 x_value_type_code := null;
1142 l_output_value    := null;
1143 xla_accounting_err_pkg.build_message
1144                  (p_appli_s_name            => 'XLA'
1145                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1146                  ,p_token_1                 => 'COMPONENT_NAME'
1147                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1148                                                             l_component_type
1149                                                           , l_component_code
1150                                                           , l_component_type_code
1151                                                           , l_component_appl_id
1152                                                           , l_amb_context_code
1153                                                           )
1154                  ,p_token_2                 => 'OWNER'
1155                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1156                                                         'XLA_OWNER_TYPE'
1157                                                         ,l_component_type_code
1158                                                         )
1159                  ,p_token_3                 => 'PAD_NAME'
1160                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1161                  ,p_token_4                 => 'PAD_OWNER'
1162                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1163                                                         'XLA_OWNER_TYPE'
1164                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1165                                                         )
1166                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1167                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1168                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1169                  ,p_ae_header_id            => NULL
1170 );
1171 RETURN l_output_value;
1172 EXCEPTION
1173   WHEN xla_exceptions_pkg.application_exception THEN
1174       RAISE;
1175   WHEN OTHERS THEN
1176        xla_exceptions_pkg.raise_message
1177            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_7');
1178 END AcctDerRule_7;
1179 --
1180 
1181 ---------------------------------------
1182 --
1186 ---------------------------------------
1183 -- PRIVATE FUNCTION
1184 --         AcctDerRule_8
1185 --
1187 FUNCTION AcctDerRule_8 (
1188   p_application_id              IN NUMBER
1189 , p_ae_header_id                IN NUMBER
1190 , p_side                        IN VARCHAR2 
1191 --FV_INV_DIST_CCID
1192  , p_source_8            IN NUMBER
1193 --Automatic Offsets Value
1194  , p_source_9            IN VARCHAR2
1195  , p_source_9_meaning    IN VARCHAR2
1196 --FV_AP_LIABILITY_ACCOUNT
1197  , p_source_10            IN NUMBER
1198 , x_transaction_coa_id         OUT NOCOPY NUMBER
1199 , x_accounting_coa_id          OUT NOCOPY NUMBER
1200 , x_value_type_code            OUT NOCOPY VARCHAR2
1201 )
1202 RETURN NUMBER
1203 IS
1204 l_component_type       VARCHAR2(80)  ;
1205 l_component_code       VARCHAR2(30)  ;
1206 l_component_type_code  VARCHAR2(1)   ;
1207 l_component_appl_id    INTEGER       ;
1208 l_amb_context_code     VARCHAR2(30)  ;
1209 l_log_module           VARCHAR2(240) ;
1210 l_output_value         NUMBER        ;
1211 BEGIN
1212 IF g_log_enabled THEN
1213       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1214 END IF;
1215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1216       trace
1217          (p_msg      => 'BEGIN of AcctDerRule_8'
1218          ,p_level    => C_LEVEL_PROCEDURE
1219          ,p_module   => l_log_module);
1220 END IF;
1221 --
1222 l_component_type         := 'AMB_ADR';
1223 l_component_code         := 'FV_INV_PMT_ACCOUNT';
1224 l_component_type_code    := 'S';
1225 l_component_appl_id      :=  8901;
1226 l_amb_context_code       := 'DEFAULT';
1227 x_transaction_coa_id     :=  null;
1228 x_accounting_coa_id      :=  null;
1229 --
1230 
1231  IF NVL(p_source_9,'
1232 ')  =  'ACCOUNT_SEGMENT_VALUE'
1233  THEN 
1234  --
1235   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1236       trace
1237          (p_msg      => 'END of AcctDerRule_8'
1238          ,p_level    => C_LEVEL_PROCEDURE
1239          ,p_module   => l_log_module);
1240   END IF;
1241   x_value_type_code := 'S';
1242   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
1243   RETURN l_output_value;
1244 
1245  ELSIF NVL(p_source_9,'
1246 ')  <>  'ACCOUNT_SEGMENT_VALUE'
1247  THEN 
1248  --
1249   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1250       trace
1251          (p_msg      => 'END of AcctDerRule_8'
1252          ,p_level    => C_LEVEL_PROCEDURE
1253          ,p_module   => l_log_module);
1254   END IF;
1255   x_value_type_code := 'S';
1256   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
1257   RETURN l_output_value;
1258 
1259  END IF;
1260 --
1261 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1262       trace
1263          (p_msg      => 'END of AcctDerRule_8(invalid)'
1264          ,p_level    => C_LEVEL_PROCEDURE
1265          ,p_module   => l_log_module);
1266 END IF;
1267 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1268 x_value_type_code := null;
1269 l_output_value    := null;
1270 xla_accounting_err_pkg.build_message
1271                  (p_appli_s_name            => 'XLA'
1272                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1273                  ,p_token_1                 => 'COMPONENT_NAME'
1274                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1275                                                             l_component_type
1276                                                           , l_component_code
1277                                                           , l_component_type_code
1278                                                           , l_component_appl_id
1279                                                           , l_amb_context_code
1280                                                           )
1281                  ,p_token_2                 => 'OWNER'
1282                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1283                                                         'XLA_OWNER_TYPE'
1284                                                         ,l_component_type_code
1285                                                         )
1286                  ,p_token_3                 => 'PAD_NAME'
1287                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1288                  ,p_token_4                 => 'PAD_OWNER'
1289                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1290                                                         'XLA_OWNER_TYPE'
1291                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1292                                                         )
1293                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1294                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1295                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1296                  ,p_ae_header_id            => NULL
1297 );
1298 RETURN l_output_value;
1299 EXCEPTION
1300   WHEN xla_exceptions_pkg.application_exception THEN
1301       RAISE;
1302   WHEN OTHERS THEN
1303        xla_exceptions_pkg.raise_message
1304            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctDerRule_8');
1305 END AcctDerRule_8;
1306 --
1307 
1308 ---------------------------------------
1309 --
1310 -- PRIVATE FUNCTION
1311 --         AcctLineType_9
1312 --
1313 ---------------------------------------
1314 PROCEDURE AcctLineType_9 (
1315   p_application_id        IN NUMBER
1316  ,p_event_id              IN NUMBER
1317  ,p_calculate_acctd_flag  IN VARCHAR2
1318  ,p_calculate_g_l_flag    IN VARCHAR2
1319  ,p_actual_flag           IN OUT VARCHAR2
1320  ,p_balance_type_code     OUT VARCHAR2
1324  , p_source_1            IN NUMBER
1321  ,p_gain_or_loss_ref      OUT VARCHAR2
1322  
1323 --FV_CHECK_NUMBER
1325 --FV_CHECK_DATE
1326  , p_source_2            IN DATE
1327 --FV_TREASURY_PAY_NUMBER
1328  , p_source_3            IN NUMBER
1329 --FV_AP_CASH_ACCOUNT
1330  , p_source_4            IN NUMBER
1331 --When to Account for Payment Option
1332  , p_source_5            IN VARCHAR2
1333 --FV_AP_CASH_CLEARING_CCID
1334  , p_source_6            IN NUMBER
1335 --FV_INV_DIST_CCID
1336  , p_source_8            IN NUMBER
1337 --Automatic Offsets Value
1338  , p_source_9            IN VARCHAR2
1339  , p_source_9_meaning    IN VARCHAR2
1340 --FV_AP_LIABILITY_ACCOUNT
1341  , p_source_10            IN NUMBER
1342 --TREASURY_CONFIRMATION_ID
1343  , p_source_13            IN NUMBER
1344 --FV_BUS_FLOW_FV_APP_ID
1345  , p_source_14            IN NUMBER
1346 --FV_BUS_FLOW_TREASURY_DIST_TYPE
1347  , p_source_15            IN VARCHAR2
1348 --FV_BUS_FLOW_TREAS_ENTITY_CODE
1349  , p_source_16            IN VARCHAR2
1350 --FV_PAY_HIST_DIST_ID
1351  , p_source_17            IN NUMBER
1352 --FV_TREASURY_CONFIRMATION_ID
1353  , p_source_18            IN NUMBER
1354 --FV_PAY_DIST_AMOUNT
1355  , p_source_19            IN NUMBER
1356 --FV_INV_CURRENCY_CODE
1357  , p_source_20            IN VARCHAR2
1358 --FV_INV_EXCHANGE_DATE
1359  , p_source_21            IN DATE
1360 --FV_INV_EXCHANGE_RATE
1361  , p_source_22            IN NUMBER
1362 --FV_INV_EXCHANGE_RATE_TYPE
1363  , p_source_23            IN VARCHAR2
1364 )
1365 IS
1366 
1367 l_component_type              VARCHAR2(80);
1368 l_component_code              VARCHAR2(30);
1369 l_component_type_code         VARCHAR2(1);
1370 l_component_appl_id           INTEGER;
1371 l_amb_context_code            VARCHAR2(30);
1372 l_entity_code                 VARCHAR2(30);
1373 l_event_class_code            VARCHAR2(30);
1374 l_ae_header_id                NUMBER;
1375 l_event_type_code             VARCHAR2(30);
1376 l_line_definition_code        VARCHAR2(30);
1377 l_line_definition_owner_code  VARCHAR2(1);
1378 --
1379 -- adr variables
1380 l_segment                     VARCHAR2(30);
1381 l_ccid                        NUMBER;
1382 l_adr_transaction_coa_id      NUMBER;
1383 l_adr_accounting_coa_id       NUMBER;
1384 l_adr_flexfield_segment_code  VARCHAR2(30);
1385 l_adr_flex_value_set_id       NUMBER;
1386 l_adr_value_type_code         VARCHAR2(30);
1387 l_adr_value_combination_id    NUMBER;
1388 l_adr_value_segment_code      VARCHAR2(30);
1389 
1390 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1391 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1392 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1393 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1394 
1395 -- 4262811 Variables ------------------------------------------------------------------------------------------
1396 l_entered_amt_idx             NUMBER;
1397 l_accted_amt_idx              NUMBER;
1398 l_acc_rev_flag                VARCHAR2(1);
1399 l_accrual_line_num            NUMBER;
1400 l_tmp_amt                     NUMBER;
1401 l_acc_rev_natural_side_code   VARCHAR2(1);
1402 
1403 l_num_entries                 NUMBER;
1404 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1405 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1406 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1407 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1408 l_recog_line_1                NUMBER;
1409 l_recog_line_2                NUMBER;
1410 
1411 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1412 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1413 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1414 
1415 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1416 
1417 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1418 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1419 
1420 ---------------------------------------------------------------------------------------------------------------
1421 
1422 
1423 --
1424 -- bulk performance
1425 --
1426 l_balance_type_code           VARCHAR2(1);
1427 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1428 l_log_module                  VARCHAR2(240);
1429 
1430 --
1431 -- Upgrade strategy
1432 --
1433 l_actual_upg_option           VARCHAR2(1);
1434 l_enc_upg_option           VARCHAR2(1);
1435 
1436 --
1437 BEGIN
1438 --
1439 IF g_log_enabled THEN
1440       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
1441 END IF;
1442 --
1443 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1444 
1445       trace
1446          (p_msg      => 'BEGIN of AcctLineType_9'
1447          ,p_level    => C_LEVEL_PROCEDURE
1448          ,p_module   => l_log_module);
1449 
1450 END IF;
1451 --
1452 l_component_type             := 'AMB_JLT';
1453 l_component_code             := 'FV_TC_CASH_ACCT_DR';
1454 l_component_type_code        := 'S';
1455 l_component_appl_id          :=  8901;
1456 l_amb_context_code           := 'DEFAULT';
1457 l_entity_code                := 'TREASURY_CONFIRMATION';
1458 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
1459 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
1460 l_line_definition_owner_code := 'S';
1461 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
1462 --
1463 l_balance_type_code          := 'A';
1464 l_segment                     := NULL;
1465 l_ccid                        := NULL;
1466 l_adr_transaction_coa_id      := NULL;
1470 l_adr_value_type_code         := NULL;
1467 l_adr_accounting_coa_id       := NULL;
1468 l_adr_flexfield_segment_code  := NULL;
1469 l_adr_flex_value_set_id       := NULL;
1471 l_adr_value_combination_id    := NULL;
1472 l_adr_value_segment_code      := NULL;
1473 
1474 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1475 l_bflow_class_code           := 'FV_TC_PAYMENT_DR';    -- 4219869 Business Flow
1476 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1477 l_budgetary_control_flag     := 'N';
1478 
1479 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1480 l_bflow_applied_to_amt       := NULL; -- 5132302
1481 l_entered_amt_idx            := NULL;          -- 4262811
1482 l_accted_amt_idx             := NULL;          -- 4262811
1483 l_acc_rev_flag               := NULL;          -- 4262811
1484 l_accrual_line_num           := NULL;          -- 4262811
1485 l_tmp_amt                    := NULL;          -- 4262811
1486 --
1487  
1488 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1489     l_balance_type_code <> 'B' THEN
1490 IF NVL(
1491 xla_ae_sources_pkg.GetSystemSourceChar(
1492    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1493  , p_source_type_code      => 'Y'
1494  , p_source_application_id =>  602
1495 ),'
1496 ')  =  'TREASURY_CONFIRM' AND 
1497 p_source_13  IS NOT NULL 
1498  THEN 
1499 
1500    --
1501    XLA_AE_LINES_PKG.SetNewLine;
1502 
1503    p_balance_type_code          := l_balance_type_code;
1504    -- set the flag so later we will know whether the gain loss line needs to be created
1505    
1506    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1507      p_actual_flag :='A';
1508    END IF;
1509 
1510    --
1511    -- bulk performance
1512    --
1513    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1514                                       p_header_num   => 0); -- 4262811
1515    --
1516    -- set accounting line options
1517    --
1518    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1519            p_natural_side_code          => 'D'
1520          , p_gain_or_loss_flag          => 'N'
1521          , p_gl_transfer_mode_code      => 'S'
1522          , p_acct_entry_type_code       => 'A'
1523          , p_switch_side_flag           => 'N'
1524          , p_merge_duplicate_code       => 'N'
1525          );
1526    --
1527    l_acc_rev_natural_side_code := 'C';  -- 4262811
1528    -- 
1529    --
1530    -- set accounting line type info
1531    --
1532    xla_ae_lines_pkg.SetAcctLineType
1533       (p_component_type             => l_component_type
1534       ,p_event_type_code            => l_event_type_code
1535       ,p_line_definition_owner_code => l_line_definition_owner_code
1536       ,p_line_definition_code       => l_line_definition_code
1537       ,p_accounting_line_code       => l_component_code
1538       ,p_accounting_line_type_code  => l_component_type_code
1539       ,p_accounting_line_appl_id    => l_component_appl_id
1540       ,p_amb_context_code           => l_amb_context_code
1541       ,p_entity_code                => l_entity_code
1542       ,p_event_class_code           => l_event_class_code);
1543    --
1544    -- set accounting class
1545    --
1546    xla_ae_lines_pkg.SetAcctClass(
1547            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
1548          , p_ae_header_id           => l_ae_header_id
1549          );
1550 
1551    --
1552    -- set rounding class
1553    --
1554    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1555                       'ACCOUNTSPAYABLE';
1556 
1557    --
1558    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1559    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1560    --
1561    -- bulk performance
1562    --
1563    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1564 
1565    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1566       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1567 
1568    -- 4955764
1569    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1571 
1572    -- 4458381 Public Sector Enh
1573    
1574    --
1575    -- set accounting attributes for the line type
1576    --
1577    l_entered_amt_idx := 8;
1578    l_accted_amt_idx  := 13;
1579    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1580    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
1581    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
1582    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
1583    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
1584    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
1585    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
1586    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
1587    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_17);
1588    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
1589    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
1590    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
1591    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
1592    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
1593    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
1594    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
1595    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
1596    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
1600    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
1597    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
1598    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
1599    l_rec_acct_attrs.array_date_value(10)  := p_source_21;
1601    l_rec_acct_attrs.array_num_value(11)  := p_source_22;
1602    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
1603    l_rec_acct_attrs.array_char_value(12)  := p_source_23;
1604    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
1605    l_rec_acct_attrs.array_num_value(13)  := p_source_19;
1606 
1607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1609 
1610    ---------------------------------------------------------------------------------------------------------------
1611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1612    ---------------------------------------------------------------------------------------------------------------
1613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1614 
1615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1617 
1618    IF xla_accounting_cache_pkg.GetValueChar
1619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1621    AND l_bflow_method_code = 'PRIOR_ENTRY'
1622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1625        )
1626    THEN
1627          xla_ae_lines_pkg.BflowUpgEntry
1628            (p_business_method_code    => l_bflow_method_code
1629            ,p_business_class_code     => l_bflow_class_code
1630            ,p_balance_type            => l_balance_type_code);
1631    ELSE
1632       NULL;
1633 -- No business flow processing for business flow method of NONE.
1634    END IF;
1635 
1636    --
1637    -- call description
1638    --
1639    
1640 xla_ae_lines_pkg.SetLineDescription(
1641    p_ae_header_id => l_ae_header_id
1642   ,p_description  => Description_1 (
1643      p_application_id         => p_application_id
1644    , p_ae_header_id           => l_ae_header_id 
1645 , p_source_1 => p_source_1
1646 , p_source_2 => p_source_2
1647 , p_source_3 => p_source_3
1648    )
1649 );
1650 
1651 
1652    --
1653    -- call ADRs
1654    -- Bug 4922099
1655    --
1656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1657         (NVL(l_actual_upg_option, 'N') = 'O') OR
1658         (NVL(l_enc_upg_option, 'N') = 'O')
1659       )
1660    THEN
1661    NULL;
1662    --
1663    --
1664    
1665   l_ccid := AcctDerRule_8(
1666            p_application_id           => p_application_id
1667          , p_ae_header_id             => l_ae_header_id 
1668 , p_source_8 => p_source_8
1669 , p_source_9 => p_source_9
1670 , p_source_9_meaning => p_source_9_meaning
1671 , p_source_10 => p_source_10
1672          , x_transaction_coa_id       => l_adr_transaction_coa_id
1673          , x_accounting_coa_id        => l_adr_accounting_coa_id
1674          , x_value_type_code          => l_adr_value_type_code
1675          , p_side                     => 'NA'
1676    );
1677 
1678    xla_ae_lines_pkg.set_ccid(
1679     p_code_combination_id          => l_ccid
1680   , p_value_type_code              => l_adr_value_type_code
1681   , p_transaction_coa_id           => l_adr_transaction_coa_id
1682   , p_accounting_coa_id            => l_adr_accounting_coa_id
1683   , p_adr_code                     => 'FV_INV_PMT_ACCOUNT'
1684   , p_adr_type_code                => 'S'
1685   , p_component_type               => l_component_type
1686   , p_component_code               => l_component_code
1687   , p_component_type_code          => l_component_type_code
1688   , p_component_appl_id            => l_component_appl_id
1689   , p_amb_context_code             => l_amb_context_code
1690   , p_side                         => 'NA'
1691   );
1692 
1693 
1694    l_segment := AcctDerRule_2(
1695            p_application_id           => p_application_id
1696          , p_ae_header_id             => l_ae_header_id 
1697 , p_source_4 => p_source_4
1698 , p_source_5 => p_source_5
1699 , p_source_6 => p_source_6
1700          , x_transaction_coa_id       => l_adr_transaction_coa_id
1701          , x_accounting_coa_id        => l_adr_accounting_coa_id
1702          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
1703          , x_flex_value_set_id        => l_adr_flex_value_set_id
1704          , x_value_type_code          => l_adr_value_type_code
1705          , x_value_combination_id     => l_adr_value_combination_id
1706          , x_value_segment_code       => l_adr_value_segment_code
1707          , p_side                     => 'NA'
1708          , p_override_seg_flag        => 'Y'
1709    );
1710 
1711    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
1712 
1713       xla_ae_lines_pkg.set_segment(
1714           p_to_segment_code         => 'GL_ACCOUNT'
1715         , p_segment_value           => l_segment
1716         , p_from_segment_code       => l_adr_value_segment_code
1717         , p_from_combination_id     => l_adr_value_combination_id
1718         , p_value_type_code         => l_adr_value_type_code
1719         , p_transaction_coa_id      => l_adr_transaction_coa_id
1720         , p_accounting_coa_id       => l_adr_accounting_coa_id
1721         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
1722         , p_flex_value_set_id       => l_adr_flex_value_set_id
1726         , p_component_code          => l_component_code
1723         , p_adr_code                => 'FV_INV_PMT_ACCOUNT_SEG'
1724         , p_adr_type_code           => 'S'
1725         , p_component_type          => l_component_type
1727         , p_component_type_code     => l_component_type_code
1728         , p_component_appl_id       => l_component_appl_id
1729         , p_amb_context_code        => l_amb_context_code
1730         , p_entity_code             => 'TREASURY_CONFIRMATION'
1731         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
1732         , p_side                    => 'NA'
1733         );
1734 
1735   END IF;
1736 
1737    l_segment := AcctDerRule_4(
1738            p_application_id           => p_application_id
1739          , p_ae_header_id             => l_ae_header_id 
1740 , p_source_8 => p_source_8
1741 , p_source_9 => p_source_9
1742 , p_source_9_meaning => p_source_9_meaning
1743 , p_source_10 => p_source_10
1744          , x_transaction_coa_id       => l_adr_transaction_coa_id
1745          , x_accounting_coa_id        => l_adr_accounting_coa_id
1746          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
1747          , x_flex_value_set_id        => l_adr_flex_value_set_id
1748          , x_value_type_code          => l_adr_value_type_code
1749          , x_value_combination_id     => l_adr_value_combination_id
1750          , x_value_segment_code       => l_adr_value_segment_code
1751          , p_side                     => 'NA'
1752          , p_override_seg_flag        => 'Y'
1753    );
1754 
1755    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
1756 
1757       xla_ae_lines_pkg.set_segment(
1758           p_to_segment_code         => 'GL_BALANCING'
1759         , p_segment_value           => l_segment
1760         , p_from_segment_code       => l_adr_value_segment_code
1761         , p_from_combination_id     => l_adr_value_combination_id
1762         , p_value_type_code         => l_adr_value_type_code
1763         , p_transaction_coa_id      => l_adr_transaction_coa_id
1764         , p_accounting_coa_id       => l_adr_accounting_coa_id
1765         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
1766         , p_flex_value_set_id       => l_adr_flex_value_set_id
1767         , p_adr_code                => 'FV_INV_PMT_BAL_SEG'
1768         , p_adr_type_code           => 'S'
1769         , p_component_type          => l_component_type
1770         , p_component_code          => l_component_code
1771         , p_component_type_code     => l_component_type_code
1772         , p_component_appl_id       => l_component_appl_id
1773         , p_amb_context_code        => l_amb_context_code
1774         , p_entity_code             => 'TREASURY_CONFIRMATION'
1775         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
1776         , p_side                    => 'NA'
1777         );
1778 
1779   END IF;
1780 
1781    --
1782    --
1783    END IF;
1784    --
1785    -- Bug 4922099
1786    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1787           (NVL(l_enc_upg_option, 'N') = 'O')
1788         ) AND
1789         (l_bflow_method_code = 'PRIOR_ENTRY')
1790       )
1791    THEN
1792       IF
1793       --
1794       1 = 2
1795       --
1796       THEN
1797       xla_accounting_err_pkg.build_message
1798                                     (p_appli_s_name            => 'XLA'
1799                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1800                                     ,p_token_1                 => 'LINE_NUMBER'
1801                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1802                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1803                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1804                                                                              l_component_type
1805                                                                             ,l_component_code
1806                                                                             ,l_component_type_code
1807                                                                             ,l_component_appl_id
1808                                                                             ,l_amb_context_code
1809                                                                             ,l_entity_code
1810                                                                             ,l_event_class_code
1811                                                                            )
1812                                     ,p_token_3                 => 'OWNER'
1813                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1814                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1815                                                                           ,p_lookup_code    => l_component_type_code
1816                                                                          )
1817                                     ,p_token_4                 => 'PRODUCT_NAME'
1818                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1819                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1820                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1821                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1822                                     ,p_ae_header_id            =>  NULL
1823                                        );
1824 
1825         IF (C_LEVEL_ERROR>= g_log_level) THEN
1826                  trace
1827                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1828                       ,p_level    => C_LEVEL_ERROR
1829                       ,p_module   => l_log_module);
1830         END IF;
1834    --
1831       END IF;
1832    END IF;
1833    --
1835    ------------------------------------------------------------------------------------------------
1836    -- 4219869 Business Flow
1837    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1838    -- Prior Entry.  Currently, the following code is always generated.
1839    ------------------------------------------------------------------------------------------------
1840    XLA_AE_LINES_PKG.ValidateCurrentLine;
1841 
1842    ------------------------------------------------------------------------------------
1843    -- 4219869 Business Flow
1844    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1845    ------------------------------------------------------------------------------------
1846    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1847 
1848    ----------------------------------------------------------------------------------
1849    -- 4219869 Business Flow
1850    -- Update journal entry status -- Need to generate this within IF <condition>
1851    ----------------------------------------------------------------------------------
1852    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1853          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1854          ,p_balance_type_code => l_balance_type_code
1855          );
1856 
1857    -------------------------------------------------------------------------------------------
1858    -- 4262811 - Generate the Accrual Reversal lines
1859    -------------------------------------------------------------------------------------------
1860    BEGIN
1861       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1862                               (g_array_event(p_event_id).array_value_num('header_index'));
1863       IF l_acc_rev_flag IS NULL THEN
1864          l_acc_rev_flag := 'N';
1865       END IF;
1866    EXCEPTION
1867       WHEN OTHERS THEN
1868          l_acc_rev_flag := 'N';
1869    END;
1870    --
1871    IF (l_acc_rev_flag = 'Y') THEN
1872 
1873        -- 4645092  ------------------------------------------------------------------------------
1874        -- To allow MPA report to determine if it should generate report process
1875        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1876        ------------------------------------------------------------------------------------------
1877 
1878        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1879        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1880 
1881        --
1882        -- Update the line information that should be overwritten
1883        --
1884        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1885                                          p_header_num   => 1);
1886        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1887 
1888        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1889 
1890        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1891           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1892        END IF;
1893 
1894       --
1895       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1896       --
1897       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1898           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1899       ELSE
1900           ---------------------------------------------------------------------------------------------------
1901           -- 4262811a Switch Sign
1902           ---------------------------------------------------------------------------------------------------
1903           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1904           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1905                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1906           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1907                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1908           -- 5132302
1909           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1910                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1911 
1912       END IF;
1913 
1914       -- 4955764
1915       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1917 
1918 
1919       XLA_AE_LINES_PKG.ValidateCurrentLine;
1920       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1921 
1922       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1923                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1924                ,p_balance_type_code => l_balance_type_code);
1925 
1926    END IF;
1927 
1928    -----------------------------------------------------------------------------------------
1929    -- 4262811 Multiperiod Accounting
1930    -----------------------------------------------------------------------------------------
1931      -- No MPA option is assigned.
1932 
1933 
1934 END IF;
1935 END IF;
1936 --
1937 
1938 --
1939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1940    trace
1941       (p_msg      => 'END of AcctLineType_9'
1942       ,p_level    => C_LEVEL_PROCEDURE
1943       ,p_module   => l_log_module);
1944 END IF;
1945 --
1946 EXCEPTION
1947   WHEN xla_exceptions_pkg.application_exception THEN
1948       RAISE;
1949   WHEN OTHERS THEN
1953 --
1950        xla_exceptions_pkg.raise_message
1951            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_9');
1952 END AcctLineType_9;
1954 
1955 ---------------------------------------
1956 --
1957 -- PRIVATE FUNCTION
1958 --         AcctLineType_10
1959 --
1960 ---------------------------------------
1961 PROCEDURE AcctLineType_10 (
1962   p_application_id        IN NUMBER
1963  ,p_event_id              IN NUMBER
1964  ,p_calculate_acctd_flag  IN VARCHAR2
1965  ,p_calculate_g_l_flag    IN VARCHAR2
1966  ,p_actual_flag           IN OUT VARCHAR2
1967  ,p_balance_type_code     OUT VARCHAR2
1968  ,p_gain_or_loss_ref      OUT VARCHAR2
1969  
1970 --FV_BUS_FLOW_FV_APP_ID
1971  , p_source_14            IN NUMBER
1972 --FV_BUS_FLOW_TREASURY_DIST_TYPE
1973  , p_source_15            IN VARCHAR2
1974 --FV_BUS_FLOW_TREAS_ENTITY_CODE
1975  , p_source_16            IN VARCHAR2
1976 --FV_PAY_HIST_DIST_ID
1977  , p_source_17            IN NUMBER
1978 --FV_TREASURY_CONFIRMATION_ID
1979  , p_source_18            IN NUMBER
1980 --FV_PAY_DIST_AMOUNT
1981  , p_source_19            IN NUMBER
1982 --FV_INV_CURRENCY_CODE
1983  , p_source_20            IN VARCHAR2
1984 --FV_REV_PAY_HIST_DIST_ID
1985  , p_source_24            IN NUMBER
1986 )
1987 IS
1988 
1989 l_component_type              VARCHAR2(80);
1990 l_component_code              VARCHAR2(30);
1991 l_component_type_code         VARCHAR2(1);
1992 l_component_appl_id           INTEGER;
1993 l_amb_context_code            VARCHAR2(30);
1994 l_entity_code                 VARCHAR2(30);
1995 l_event_class_code            VARCHAR2(30);
1996 l_ae_header_id                NUMBER;
1997 l_event_type_code             VARCHAR2(30);
1998 l_line_definition_code        VARCHAR2(30);
1999 l_line_definition_owner_code  VARCHAR2(1);
2000 --
2001 -- adr variables
2002 l_segment                     VARCHAR2(30);
2003 l_ccid                        NUMBER;
2004 l_adr_transaction_coa_id      NUMBER;
2005 l_adr_accounting_coa_id       NUMBER;
2006 l_adr_flexfield_segment_code  VARCHAR2(30);
2007 l_adr_flex_value_set_id       NUMBER;
2008 l_adr_value_type_code         VARCHAR2(30);
2009 l_adr_value_combination_id    NUMBER;
2010 l_adr_value_segment_code      VARCHAR2(30);
2011 
2012 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2013 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2014 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2015 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2016 
2017 -- 4262811 Variables ------------------------------------------------------------------------------------------
2018 l_entered_amt_idx             NUMBER;
2019 l_accted_amt_idx              NUMBER;
2020 l_acc_rev_flag                VARCHAR2(1);
2021 l_accrual_line_num            NUMBER;
2022 l_tmp_amt                     NUMBER;
2023 l_acc_rev_natural_side_code   VARCHAR2(1);
2024 
2025 l_num_entries                 NUMBER;
2026 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2027 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2028 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2029 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2030 l_recog_line_1                NUMBER;
2031 l_recog_line_2                NUMBER;
2032 
2033 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2034 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2035 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2036 
2037 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2038 
2039 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2040 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2041 
2042 ---------------------------------------------------------------------------------------------------------------
2043 
2044 
2045 --
2046 -- bulk performance
2047 --
2048 l_balance_type_code           VARCHAR2(1);
2049 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2050 l_log_module                  VARCHAR2(240);
2051 
2052 --
2053 -- Upgrade strategy
2054 --
2055 l_actual_upg_option           VARCHAR2(1);
2056 l_enc_upg_option           VARCHAR2(1);
2057 
2058 --
2059 BEGIN
2060 --
2061 IF g_log_enabled THEN
2062       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
2063 END IF;
2064 --
2065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2066 
2067       trace
2068          (p_msg      => 'BEGIN of AcctLineType_10'
2069          ,p_level    => C_LEVEL_PROCEDURE
2070          ,p_module   => l_log_module);
2071 
2072 END IF;
2073 --
2074 l_component_type             := 'AMB_JLT';
2075 l_component_code             := 'FV_TC_CASH_ACCT_REV_CR';
2076 l_component_type_code        := 'S';
2077 l_component_appl_id          :=  8901;
2078 l_amb_context_code           := 'DEFAULT';
2079 l_entity_code                := 'TREASURY_CONFIRMATION';
2080 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
2081 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
2082 l_line_definition_owner_code := 'S';
2083 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
2084 --
2085 l_balance_type_code          := 'A';
2086 l_segment                     := NULL;
2087 l_ccid                        := NULL;
2088 l_adr_transaction_coa_id      := NULL;
2089 l_adr_accounting_coa_id       := NULL;
2090 l_adr_flexfield_segment_code  := NULL;
2091 l_adr_flex_value_set_id       := NULL;
2092 l_adr_value_type_code         := NULL;
2093 l_adr_value_combination_id    := NULL;
2094 l_adr_value_segment_code      := NULL;
2095 
2099 l_budgetary_control_flag     := 'N';
2096 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2097 l_bflow_class_code           := 'FV_TC_PAYMENT_DR';    -- 4219869 Business Flow
2098 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2100 
2101 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2102 l_bflow_applied_to_amt       := NULL; -- 5132302
2103 l_entered_amt_idx            := NULL;          -- 4262811
2104 l_accted_amt_idx             := NULL;          -- 4262811
2105 l_acc_rev_flag               := NULL;          -- 4262811
2106 l_accrual_line_num           := NULL;          -- 4262811
2107 l_tmp_amt                    := NULL;          -- 4262811
2108 --
2109  
2110 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2111     l_balance_type_code <> 'B' THEN
2112 IF NVL(
2113 xla_ae_sources_pkg.GetSystemSourceChar(
2114    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2115  , p_source_type_code      => 'Y'
2116  , p_source_application_id =>  602
2117 ),'
2118 ')  =  'TREASURY_BACKOUT' OR 
2119 NVL(
2120 xla_ae_sources_pkg.GetSystemSourceChar(
2121    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2122  , p_source_type_code      => 'Y'
2123  , p_source_application_id =>  602
2124 ),'
2125 ')  =  'TREASURY_VOID'
2126  THEN 
2127 
2128    --
2129    XLA_AE_LINES_PKG.SetNewLine;
2130 
2131    p_balance_type_code          := l_balance_type_code;
2132    -- set the flag so later we will know whether the gain loss line needs to be created
2133    
2134    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2135      p_actual_flag :='A';
2136    END IF;
2137 
2138    --
2139    -- bulk performance
2140    --
2141    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2142                                       p_header_num   => 0); -- 4262811
2143    --
2144    -- set accounting line options
2145    --
2146    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2147            p_natural_side_code          => 'C'
2148          , p_gain_or_loss_flag          => 'N'
2149          , p_gl_transfer_mode_code      => 'S'
2150          , p_acct_entry_type_code       => 'A'
2151          , p_switch_side_flag           => 'N'
2152          , p_merge_duplicate_code       => 'N'
2153          );
2154    --
2155    l_acc_rev_natural_side_code := 'D';  -- 4262811
2156    -- 
2157    --
2158    -- set accounting line type info
2159    --
2160    xla_ae_lines_pkg.SetAcctLineType
2161       (p_component_type             => l_component_type
2162       ,p_event_type_code            => l_event_type_code
2163       ,p_line_definition_owner_code => l_line_definition_owner_code
2164       ,p_line_definition_code       => l_line_definition_code
2165       ,p_accounting_line_code       => l_component_code
2166       ,p_accounting_line_type_code  => l_component_type_code
2167       ,p_accounting_line_appl_id    => l_component_appl_id
2168       ,p_amb_context_code           => l_amb_context_code
2169       ,p_entity_code                => l_entity_code
2170       ,p_event_class_code           => l_event_class_code);
2171    --
2172    -- set accounting class
2173    --
2174    xla_ae_lines_pkg.SetAcctClass(
2175            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
2176          , p_ae_header_id           => l_ae_header_id
2177          );
2178 
2179    --
2180    -- set rounding class
2181    --
2182    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2183                       'ACCOUNTSPAYABLE';
2184 
2185    --
2186    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2187    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2188    --
2189    -- bulk performance
2190    --
2191    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2192 
2193    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2194       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2195 
2196    -- 4955764
2197    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2199 
2200    -- 4458381 Public Sector Enh
2201    
2202    --
2203    -- set accounting attributes for the line type
2204    --
2205    l_entered_amt_idx := 8;
2206    l_accted_amt_idx  := 10;
2207    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2208    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
2209    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
2210    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2211    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
2212    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
2213    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
2214    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
2215    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_24);
2216    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2217    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
2218    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
2219    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
2220    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
2221    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
2222    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
2223    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
2224    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
2225    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
2229    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2226    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
2227    l_rec_acct_attrs.array_num_value(10)  := p_source_19;
2228 
2230    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2231 
2232    ---------------------------------------------------------------------------------------------------------------
2233    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2234    ---------------------------------------------------------------------------------------------------------------
2235    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2236 
2237    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2238    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2239 
2240    IF xla_accounting_cache_pkg.GetValueChar
2241          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2242          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2243    AND l_bflow_method_code = 'PRIOR_ENTRY'
2244 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2245    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2246          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2247        )
2248    THEN
2249          xla_ae_lines_pkg.BflowUpgEntry
2250            (p_business_method_code    => l_bflow_method_code
2251            ,p_business_class_code     => l_bflow_class_code
2252            ,p_balance_type            => l_balance_type_code);
2253    ELSE
2254       NULL;
2255 XLA_AE_LINES_PKG.business_flow_validation(
2256                                 p_business_method_code     => l_bflow_method_code
2257                                ,p_business_class_code      => l_bflow_class_code
2258                                ,p_inherit_description_flag => l_inherit_desc_flag);
2259    END IF;
2260 
2261    --
2262    -- call description
2263    --
2264    -- No description or it is inherited.
2265    --
2266    -- call ADRs
2267    -- Bug 4922099
2268    --
2269    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2270         (NVL(l_actual_upg_option, 'N') = 'O') OR
2271         (NVL(l_enc_upg_option, 'N') = 'O')
2272       )
2273    THEN
2274    NULL;
2275    --
2276    --
2277    
2278    --
2279    --
2280    END IF;
2281    --
2282    -- Bug 4922099
2283    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2284           (NVL(l_enc_upg_option, 'N') = 'O')
2285         ) AND
2286         (l_bflow_method_code = 'PRIOR_ENTRY')
2287       )
2288    THEN
2289       IF
2290       --
2291       1 = 1
2292       --
2293       THEN
2294       xla_accounting_err_pkg.build_message
2295                                     (p_appli_s_name            => 'XLA'
2296                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2297                                     ,p_token_1                 => 'LINE_NUMBER'
2298                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2299                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2300                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2301                                                                              l_component_type
2302                                                                             ,l_component_code
2303                                                                             ,l_component_type_code
2304                                                                             ,l_component_appl_id
2305                                                                             ,l_amb_context_code
2306                                                                             ,l_entity_code
2307                                                                             ,l_event_class_code
2308                                                                            )
2309                                     ,p_token_3                 => 'OWNER'
2310                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2311                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2312                                                                           ,p_lookup_code    => l_component_type_code
2313                                                                          )
2314                                     ,p_token_4                 => 'PRODUCT_NAME'
2315                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2316                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2317                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2318                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2319                                     ,p_ae_header_id            =>  NULL
2320                                        );
2321 
2322         IF (C_LEVEL_ERROR>= g_log_level) THEN
2323                  trace
2324                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2325                       ,p_level    => C_LEVEL_ERROR
2326                       ,p_module   => l_log_module);
2327         END IF;
2328       END IF;
2329    END IF;
2330    --
2331    --
2332    ------------------------------------------------------------------------------------------------
2333    -- 4219869 Business Flow
2334    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2335    -- Prior Entry.  Currently, the following code is always generated.
2339    ------------------------------------------------------------------------------------
2336    ------------------------------------------------------------------------------------------------
2337    -- No ValidateCurrentLine for business flow method of Prior Entry
2338 
2340    -- 4219869 Business Flow
2341    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2342    ------------------------------------------------------------------------------------
2343    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2344 
2345    ----------------------------------------------------------------------------------
2346    -- 4219869 Business Flow
2347    -- Update journal entry status -- Need to generate this within IF <condition>
2348    ----------------------------------------------------------------------------------
2349    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2350          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2351          ,p_balance_type_code => l_balance_type_code
2352          );
2353 
2354    -------------------------------------------------------------------------------------------
2355    -- 4262811 - Generate the Accrual Reversal lines
2356    -------------------------------------------------------------------------------------------
2357    BEGIN
2358       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2359                               (g_array_event(p_event_id).array_value_num('header_index'));
2360       IF l_acc_rev_flag IS NULL THEN
2361          l_acc_rev_flag := 'N';
2362       END IF;
2363    EXCEPTION
2364       WHEN OTHERS THEN
2365          l_acc_rev_flag := 'N';
2366    END;
2367    --
2368    IF (l_acc_rev_flag = 'Y') THEN
2369 
2370        -- 4645092  ------------------------------------------------------------------------------
2371        -- To allow MPA report to determine if it should generate report process
2372        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2373        ------------------------------------------------------------------------------------------
2374 
2375        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2376        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2377 
2378        --
2379        -- Update the line information that should be overwritten
2380        --
2381        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2382                                          p_header_num   => 1);
2383        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2384 
2385        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2386 
2387        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2388           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2389        END IF;
2390 
2391       --
2392       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2393       --
2394       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2395           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2396       ELSE
2397           ---------------------------------------------------------------------------------------------------
2398           -- 4262811a Switch Sign
2399           ---------------------------------------------------------------------------------------------------
2400           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2401           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2402                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2403           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2404                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2405           -- 5132302
2406           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2407                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2408 
2409       END IF;
2410 
2411       -- 4955764
2412       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2413       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2414 
2415 
2416       XLA_AE_LINES_PKG.ValidateCurrentLine;
2417       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2418 
2419       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2420                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2421                ,p_balance_type_code => l_balance_type_code);
2422 
2423    END IF;
2424 
2425    -----------------------------------------------------------------------------------------
2426    -- 4262811 Multiperiod Accounting
2427    -----------------------------------------------------------------------------------------
2428      -- No MPA option is assigned.
2429 
2430 
2431 END IF;
2432 END IF;
2433 --
2434 
2435 --
2436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2437    trace
2438       (p_msg      => 'END of AcctLineType_10'
2439       ,p_level    => C_LEVEL_PROCEDURE
2440       ,p_module   => l_log_module);
2441 END IF;
2442 --
2443 EXCEPTION
2444   WHEN xla_exceptions_pkg.application_exception THEN
2445       RAISE;
2446   WHEN OTHERS THEN
2447        xla_exceptions_pkg.raise_message
2448            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_10');
2449 END AcctLineType_10;
2450 --
2451 
2452 ---------------------------------------
2453 --
2454 -- PRIVATE FUNCTION
2455 --         AcctLineType_11
2456 --
2457 ---------------------------------------
2461  ,p_calculate_acctd_flag  IN VARCHAR2
2458 PROCEDURE AcctLineType_11 (
2459   p_application_id        IN NUMBER
2460  ,p_event_id              IN NUMBER
2462  ,p_calculate_g_l_flag    IN VARCHAR2
2463  ,p_actual_flag           IN OUT VARCHAR2
2464  ,p_balance_type_code     OUT VARCHAR2
2465  ,p_gain_or_loss_ref      OUT VARCHAR2
2466  
2467 --FV_CHECK_NUMBER
2468  , p_source_1            IN NUMBER
2469 --FV_CHECK_DATE
2470  , p_source_2            IN DATE
2471 --FV_TREASURY_PAY_NUMBER
2472  , p_source_3            IN NUMBER
2473 --DIT_CONFIRM_CASH_ACCOUNT
2474  , p_source_7            IN VARCHAR2
2475 --FV_INV_DIST_CCID
2476  , p_source_8            IN NUMBER
2477 --Automatic Offsets Value
2478  , p_source_9            IN VARCHAR2
2479  , p_source_9_meaning    IN VARCHAR2
2480 --FV_AP_LIABILITY_ACCOUNT
2481  , p_source_10            IN NUMBER
2482 --TREASURY_CONFIRMATION_ID
2483  , p_source_13            IN NUMBER
2484 --FV_BUS_FLOW_FV_APP_ID
2485  , p_source_14            IN NUMBER
2486 --FV_BUS_FLOW_TREASURY_DIST_TYPE
2487  , p_source_15            IN VARCHAR2
2488 --FV_BUS_FLOW_TREAS_ENTITY_CODE
2489  , p_source_16            IN VARCHAR2
2490 --FV_PAY_HIST_DIST_ID
2491  , p_source_17            IN NUMBER
2492 --FV_TREASURY_CONFIRMATION_ID
2493  , p_source_18            IN NUMBER
2494 --FV_PAY_DIST_AMOUNT
2495  , p_source_19            IN NUMBER
2496 --FV_INV_CURRENCY_CODE
2497  , p_source_20            IN VARCHAR2
2498 --FV_INV_EXCHANGE_DATE
2499  , p_source_21            IN DATE
2500 --FV_INV_EXCHANGE_RATE
2501  , p_source_22            IN NUMBER
2502 --FV_INV_EXCHANGE_RATE_TYPE
2503  , p_source_23            IN VARCHAR2
2504 )
2505 IS
2506 
2507 l_component_type              VARCHAR2(80);
2508 l_component_code              VARCHAR2(30);
2509 l_component_type_code         VARCHAR2(1);
2510 l_component_appl_id           INTEGER;
2511 l_amb_context_code            VARCHAR2(30);
2512 l_entity_code                 VARCHAR2(30);
2513 l_event_class_code            VARCHAR2(30);
2514 l_ae_header_id                NUMBER;
2515 l_event_type_code             VARCHAR2(30);
2516 l_line_definition_code        VARCHAR2(30);
2517 l_line_definition_owner_code  VARCHAR2(1);
2518 --
2519 -- adr variables
2520 l_segment                     VARCHAR2(30);
2521 l_ccid                        NUMBER;
2522 l_adr_transaction_coa_id      NUMBER;
2523 l_adr_accounting_coa_id       NUMBER;
2524 l_adr_flexfield_segment_code  VARCHAR2(30);
2525 l_adr_flex_value_set_id       NUMBER;
2526 l_adr_value_type_code         VARCHAR2(30);
2527 l_adr_value_combination_id    NUMBER;
2528 l_adr_value_segment_code      VARCHAR2(30);
2529 
2530 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2531 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2532 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2533 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2534 
2535 -- 4262811 Variables ------------------------------------------------------------------------------------------
2536 l_entered_amt_idx             NUMBER;
2537 l_accted_amt_idx              NUMBER;
2538 l_acc_rev_flag                VARCHAR2(1);
2539 l_accrual_line_num            NUMBER;
2540 l_tmp_amt                     NUMBER;
2541 l_acc_rev_natural_side_code   VARCHAR2(1);
2542 
2543 l_num_entries                 NUMBER;
2544 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2545 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2546 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2547 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2548 l_recog_line_1                NUMBER;
2549 l_recog_line_2                NUMBER;
2550 
2551 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2552 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2553 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2554 
2555 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2556 
2557 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2558 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2559 
2560 ---------------------------------------------------------------------------------------------------------------
2561 
2562 
2563 --
2564 -- bulk performance
2565 --
2566 l_balance_type_code           VARCHAR2(1);
2567 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2568 l_log_module                  VARCHAR2(240);
2569 
2570 --
2571 -- Upgrade strategy
2572 --
2573 l_actual_upg_option           VARCHAR2(1);
2574 l_enc_upg_option           VARCHAR2(1);
2575 
2576 --
2577 BEGIN
2578 --
2579 IF g_log_enabled THEN
2580       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
2581 END IF;
2582 --
2583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2584 
2585       trace
2586          (p_msg      => 'BEGIN of AcctLineType_11'
2587          ,p_level    => C_LEVEL_PROCEDURE
2588          ,p_module   => l_log_module);
2589 
2590 END IF;
2591 --
2592 l_component_type             := 'AMB_JLT';
2593 l_component_code             := 'FV_TC_DISB_TRANSIT_CR';
2594 l_component_type_code        := 'S';
2595 l_component_appl_id          :=  8901;
2596 l_amb_context_code           := 'DEFAULT';
2597 l_entity_code                := 'TREASURY_CONFIRMATION';
2598 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
2602 --
2599 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
2600 l_line_definition_owner_code := 'S';
2601 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
2603 l_balance_type_code          := 'A';
2604 l_segment                     := NULL;
2605 l_ccid                        := NULL;
2606 l_adr_transaction_coa_id      := NULL;
2607 l_adr_accounting_coa_id       := NULL;
2608 l_adr_flexfield_segment_code  := NULL;
2609 l_adr_flex_value_set_id       := NULL;
2610 l_adr_value_type_code         := NULL;
2611 l_adr_value_combination_id    := NULL;
2612 l_adr_value_segment_code      := NULL;
2613 
2614 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2615 l_bflow_class_code           := 'FV_TC_PAYMENT_CR';    -- 4219869 Business Flow
2616 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2617 l_budgetary_control_flag     := 'N';
2618 
2619 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2620 l_bflow_applied_to_amt       := NULL; -- 5132302
2621 l_entered_amt_idx            := NULL;          -- 4262811
2622 l_accted_amt_idx             := NULL;          -- 4262811
2623 l_acc_rev_flag               := NULL;          -- 4262811
2624 l_accrual_line_num           := NULL;          -- 4262811
2625 l_tmp_amt                    := NULL;          -- 4262811
2626 --
2627  
2628 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2629     l_balance_type_code <> 'B' THEN
2630 IF NVL(
2631 xla_ae_sources_pkg.GetSystemSourceChar(
2632    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2633  , p_source_type_code      => 'Y'
2634  , p_source_application_id =>  602
2635 ),'
2636 ')  =  'TREASURY_CONFIRM' AND 
2637 p_source_13  IS NOT NULL 
2638  THEN 
2639 
2640    --
2641    XLA_AE_LINES_PKG.SetNewLine;
2642 
2643    p_balance_type_code          := l_balance_type_code;
2644    -- set the flag so later we will know whether the gain loss line needs to be created
2645    
2646    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2647      p_actual_flag :='A';
2648    END IF;
2649 
2650    --
2651    -- bulk performance
2652    --
2653    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2654                                       p_header_num   => 0); -- 4262811
2655    --
2656    -- set accounting line options
2657    --
2658    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2659            p_natural_side_code          => 'C'
2660          , p_gain_or_loss_flag          => 'N'
2661          , p_gl_transfer_mode_code      => 'S'
2662          , p_acct_entry_type_code       => 'A'
2663          , p_switch_side_flag           => 'N'
2664          , p_merge_duplicate_code       => 'N'
2665          );
2666    --
2667    l_acc_rev_natural_side_code := 'D';  -- 4262811
2668    -- 
2669    --
2670    -- set accounting line type info
2671    --
2672    xla_ae_lines_pkg.SetAcctLineType
2673       (p_component_type             => l_component_type
2674       ,p_event_type_code            => l_event_type_code
2675       ,p_line_definition_owner_code => l_line_definition_owner_code
2676       ,p_line_definition_code       => l_line_definition_code
2677       ,p_accounting_line_code       => l_component_code
2678       ,p_accounting_line_type_code  => l_component_type_code
2679       ,p_accounting_line_appl_id    => l_component_appl_id
2680       ,p_amb_context_code           => l_amb_context_code
2681       ,p_entity_code                => l_entity_code
2682       ,p_event_class_code           => l_event_class_code);
2683    --
2684    -- set accounting class
2685    --
2686    xla_ae_lines_pkg.SetAcctClass(
2687            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
2688          , p_ae_header_id           => l_ae_header_id
2689          );
2690 
2691    --
2692    -- set rounding class
2693    --
2694    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2695                       'ACCOUNTSPAYABLE';
2696 
2697    --
2698    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2699    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2700    --
2701    -- bulk performance
2702    --
2703    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2704 
2705    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2706       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2707 
2708    -- 4955764
2709    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2711 
2712    -- 4458381 Public Sector Enh
2713    
2714    --
2715    -- set accounting attributes for the line type
2716    --
2717    l_entered_amt_idx := 8;
2718    l_accted_amt_idx  := 13;
2719    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2720    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
2721    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
2722    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2723    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
2724    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
2725    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
2726    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
2727    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_17);
2728    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2729    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
2730    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
2734    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
2731    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
2732    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
2733    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
2735    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
2736    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
2737    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
2738    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
2739    l_rec_acct_attrs.array_date_value(10)  := p_source_21;
2740    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
2741    l_rec_acct_attrs.array_num_value(11)  := p_source_22;
2742    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
2743    l_rec_acct_attrs.array_char_value(12)  := p_source_23;
2744    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
2745    l_rec_acct_attrs.array_num_value(13)  := p_source_19;
2746 
2747    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2748    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2749 
2750    ---------------------------------------------------------------------------------------------------------------
2751    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2752    ---------------------------------------------------------------------------------------------------------------
2753    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2754 
2755    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2756    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2757 
2758    IF xla_accounting_cache_pkg.GetValueChar
2759          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2760          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2761    AND l_bflow_method_code = 'PRIOR_ENTRY'
2762 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2763    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2764          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2765        )
2766    THEN
2767          xla_ae_lines_pkg.BflowUpgEntry
2768            (p_business_method_code    => l_bflow_method_code
2769            ,p_business_class_code     => l_bflow_class_code
2770            ,p_balance_type            => l_balance_type_code);
2771    ELSE
2772       NULL;
2773 -- No business flow processing for business flow method of NONE.
2774    END IF;
2775 
2776    --
2777    -- call description
2778    --
2779    
2780 xla_ae_lines_pkg.SetLineDescription(
2781    p_ae_header_id => l_ae_header_id
2782   ,p_description  => Description_1 (
2783      p_application_id         => p_application_id
2784    , p_ae_header_id           => l_ae_header_id 
2785 , p_source_1 => p_source_1
2786 , p_source_2 => p_source_2
2787 , p_source_3 => p_source_3
2788    )
2789 );
2790 
2791 
2792    --
2793    -- call ADRs
2794    -- Bug 4922099
2795    --
2796    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2797         (NVL(l_actual_upg_option, 'N') = 'O') OR
2798         (NVL(l_enc_upg_option, 'N') = 'O')
2799       )
2800    THEN
2801    NULL;
2802    --
2803    --
2804    
2805   l_ccid := AcctDerRule_8(
2806            p_application_id           => p_application_id
2807          , p_ae_header_id             => l_ae_header_id 
2808 , p_source_8 => p_source_8
2809 , p_source_9 => p_source_9
2810 , p_source_9_meaning => p_source_9_meaning
2811 , p_source_10 => p_source_10
2812          , x_transaction_coa_id       => l_adr_transaction_coa_id
2813          , x_accounting_coa_id        => l_adr_accounting_coa_id
2814          , x_value_type_code          => l_adr_value_type_code
2815          , p_side                     => 'NA'
2816    );
2817 
2818    xla_ae_lines_pkg.set_ccid(
2819     p_code_combination_id          => l_ccid
2820   , p_value_type_code              => l_adr_value_type_code
2821   , p_transaction_coa_id           => l_adr_transaction_coa_id
2822   , p_accounting_coa_id            => l_adr_accounting_coa_id
2823   , p_adr_code                     => 'FV_INV_PMT_ACCOUNT'
2824   , p_adr_type_code                => 'S'
2825   , p_component_type               => l_component_type
2826   , p_component_code               => l_component_code
2827   , p_component_type_code          => l_component_type_code
2828   , p_component_appl_id            => l_component_appl_id
2829   , p_amb_context_code             => l_amb_context_code
2830   , p_side                         => 'NA'
2831   );
2832 
2833 
2834    l_segment := AcctDerRule_4(
2835            p_application_id           => p_application_id
2836          , p_ae_header_id             => l_ae_header_id 
2837 , p_source_8 => p_source_8
2838 , p_source_9 => p_source_9
2839 , p_source_9_meaning => p_source_9_meaning
2840 , p_source_10 => p_source_10
2841          , x_transaction_coa_id       => l_adr_transaction_coa_id
2842          , x_accounting_coa_id        => l_adr_accounting_coa_id
2843          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
2844          , x_flex_value_set_id        => l_adr_flex_value_set_id
2845          , x_value_type_code          => l_adr_value_type_code
2846          , x_value_combination_id     => l_adr_value_combination_id
2847          , x_value_segment_code       => l_adr_value_segment_code
2848          , p_side                     => 'NA'
2849          , p_override_seg_flag        => 'Y'
2850    );
2851 
2852    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
2853 
2854       xla_ae_lines_pkg.set_segment(
2855           p_to_segment_code         => 'GL_BALANCING'
2856         , p_segment_value           => l_segment
2860         , p_transaction_coa_id      => l_adr_transaction_coa_id
2857         , p_from_segment_code       => l_adr_value_segment_code
2858         , p_from_combination_id     => l_adr_value_combination_id
2859         , p_value_type_code         => l_adr_value_type_code
2861         , p_accounting_coa_id       => l_adr_accounting_coa_id
2862         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
2863         , p_flex_value_set_id       => l_adr_flex_value_set_id
2864         , p_adr_code                => 'FV_INV_PMT_BAL_SEG'
2865         , p_adr_type_code           => 'S'
2866         , p_component_type          => l_component_type
2867         , p_component_code          => l_component_code
2868         , p_component_type_code     => l_component_type_code
2869         , p_component_appl_id       => l_component_appl_id
2870         , p_amb_context_code        => l_amb_context_code
2871         , p_entity_code             => 'TREASURY_CONFIRMATION'
2872         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
2873         , p_side                    => 'NA'
2874         );
2875 
2876   END IF;
2877 
2878    l_segment := AcctDerRule_3(
2879            p_application_id           => p_application_id
2880          , p_ae_header_id             => l_ae_header_id 
2881 , p_source_7 => p_source_7
2882          , x_transaction_coa_id       => l_adr_transaction_coa_id
2883          , x_accounting_coa_id        => l_adr_accounting_coa_id
2884          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
2885          , x_flex_value_set_id        => l_adr_flex_value_set_id
2886          , x_value_type_code          => l_adr_value_type_code
2887          , x_value_combination_id     => l_adr_value_combination_id
2888          , x_value_segment_code       => l_adr_value_segment_code
2889          , p_side                     => 'NA'
2890          , p_override_seg_flag        => 'Y'
2891    );
2892 
2893    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
2894 
2895       xla_ae_lines_pkg.set_segment(
2896           p_to_segment_code         => 'GL_ACCOUNT'
2897         , p_segment_value           => l_segment
2898         , p_from_segment_code       => l_adr_value_segment_code
2899         , p_from_combination_id     => l_adr_value_combination_id
2900         , p_value_type_code         => l_adr_value_type_code
2901         , p_transaction_coa_id      => l_adr_transaction_coa_id
2902         , p_accounting_coa_id       => l_adr_accounting_coa_id
2903         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
2904         , p_flex_value_set_id       => l_adr_flex_value_set_id
2905         , p_adr_code                => 'FV_TREASURY_CONFIRM_CASH_ACCT'
2906         , p_adr_type_code           => 'S'
2907         , p_component_type          => l_component_type
2908         , p_component_code          => l_component_code
2909         , p_component_type_code     => l_component_type_code
2910         , p_component_appl_id       => l_component_appl_id
2911         , p_amb_context_code        => l_amb_context_code
2912         , p_entity_code             => 'TREASURY_CONFIRMATION'
2913         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
2914         , p_side                    => 'NA'
2915         );
2916 
2917   END IF;
2918 
2919    --
2920    --
2921    END IF;
2922    --
2923    -- Bug 4922099
2924    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2925           (NVL(l_enc_upg_option, 'N') = 'O')
2926         ) AND
2927         (l_bflow_method_code = 'PRIOR_ENTRY')
2928       )
2929    THEN
2930       IF
2931       --
2932       1 = 2
2933       --
2934       THEN
2935       xla_accounting_err_pkg.build_message
2936                                     (p_appli_s_name            => 'XLA'
2937                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2938                                     ,p_token_1                 => 'LINE_NUMBER'
2939                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2940                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2941                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2942                                                                              l_component_type
2943                                                                             ,l_component_code
2944                                                                             ,l_component_type_code
2945                                                                             ,l_component_appl_id
2946                                                                             ,l_amb_context_code
2947                                                                             ,l_entity_code
2948                                                                             ,l_event_class_code
2949                                                                            )
2950                                     ,p_token_3                 => 'OWNER'
2951                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2952                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2953                                                                           ,p_lookup_code    => l_component_type_code
2954                                                                          )
2955                                     ,p_token_4                 => 'PRODUCT_NAME'
2956                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2957                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2958                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2959                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2960                                     ,p_ae_header_id            =>  NULL
2961                                        );
2962 
2963         IF (C_LEVEL_ERROR>= g_log_level) THEN
2964                  trace
2965                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2966                       ,p_level    => C_LEVEL_ERROR
2967                       ,p_module   => l_log_module);
2968         END IF;
2969       END IF;
2970    END IF;
2971    --
2972    --
2973    ------------------------------------------------------------------------------------------------
2974    -- 4219869 Business Flow
2975    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2976    -- Prior Entry.  Currently, the following code is always generated.
2977    ------------------------------------------------------------------------------------------------
2978    XLA_AE_LINES_PKG.ValidateCurrentLine;
2979 
2980    ------------------------------------------------------------------------------------
2981    -- 4219869 Business Flow
2982    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2983    ------------------------------------------------------------------------------------
2984    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2985 
2986    ----------------------------------------------------------------------------------
2987    -- 4219869 Business Flow
2988    -- Update journal entry status -- Need to generate this within IF <condition>
2989    ----------------------------------------------------------------------------------
2990    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2991          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2992          ,p_balance_type_code => l_balance_type_code
2993          );
2994 
2995    -------------------------------------------------------------------------------------------
2996    -- 4262811 - Generate the Accrual Reversal lines
2997    -------------------------------------------------------------------------------------------
2998    BEGIN
2999       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3000                               (g_array_event(p_event_id).array_value_num('header_index'));
3001       IF l_acc_rev_flag IS NULL THEN
3002          l_acc_rev_flag := 'N';
3003       END IF;
3004    EXCEPTION
3005       WHEN OTHERS THEN
3006          l_acc_rev_flag := 'N';
3007    END;
3008    --
3009    IF (l_acc_rev_flag = 'Y') THEN
3010 
3011        -- 4645092  ------------------------------------------------------------------------------
3012        -- To allow MPA report to determine if it should generate report process
3013        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3014        ------------------------------------------------------------------------------------------
3015 
3016        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3017        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3018 
3019        --
3020        -- Update the line information that should be overwritten
3021        --
3022        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3023                                          p_header_num   => 1);
3024        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3025 
3029           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3026        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3027 
3028        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3030        END IF;
3031 
3032       --
3033       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3034       --
3035       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3036           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3037       ELSE
3038           ---------------------------------------------------------------------------------------------------
3039           -- 4262811a Switch Sign
3040           ---------------------------------------------------------------------------------------------------
3041           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3042           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3043                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3044           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3045                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3046           -- 5132302
3047           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3048                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3049 
3050       END IF;
3051 
3052       -- 4955764
3053       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3054       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3055 
3056 
3057       XLA_AE_LINES_PKG.ValidateCurrentLine;
3058       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3059 
3060       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3061                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3062                ,p_balance_type_code => l_balance_type_code);
3063 
3064    END IF;
3065 
3066    -----------------------------------------------------------------------------------------
3067    -- 4262811 Multiperiod Accounting
3068    -----------------------------------------------------------------------------------------
3069      -- No MPA option is assigned.
3070 
3071 
3072 END IF;
3073 END IF;
3074 --
3075 
3076 --
3077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3078    trace
3079       (p_msg      => 'END of AcctLineType_11'
3080       ,p_level    => C_LEVEL_PROCEDURE
3081       ,p_module   => l_log_module);
3082 END IF;
3083 --
3084 EXCEPTION
3085   WHEN xla_exceptions_pkg.application_exception THEN
3086       RAISE;
3087   WHEN OTHERS THEN
3088        xla_exceptions_pkg.raise_message
3089            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_11');
3090 END AcctLineType_11;
3091 --
3092 
3093 ---------------------------------------
3094 --
3095 -- PRIVATE FUNCTION
3096 --         AcctLineType_12
3097 --
3098 ---------------------------------------
3099 PROCEDURE AcctLineType_12 (
3100   p_application_id        IN NUMBER
3101  ,p_event_id              IN NUMBER
3102  ,p_calculate_acctd_flag  IN VARCHAR2
3103  ,p_calculate_g_l_flag    IN VARCHAR2
3104  ,p_actual_flag           IN OUT VARCHAR2
3105  ,p_balance_type_code     OUT VARCHAR2
3106  ,p_gain_or_loss_ref      OUT VARCHAR2
3107  
3108 --FV_BUS_FLOW_FV_APP_ID
3109  , p_source_14            IN NUMBER
3110 --FV_BUS_FLOW_TREASURY_DIST_TYPE
3111  , p_source_15            IN VARCHAR2
3112 --FV_BUS_FLOW_TREAS_ENTITY_CODE
3113  , p_source_16            IN VARCHAR2
3114 --FV_PAY_HIST_DIST_ID
3115  , p_source_17            IN NUMBER
3116 --FV_TREASURY_CONFIRMATION_ID
3117  , p_source_18            IN NUMBER
3118 --FV_PAY_DIST_AMOUNT
3119  , p_source_19            IN NUMBER
3120 --FV_INV_CURRENCY_CODE
3121  , p_source_20            IN VARCHAR2
3122 --FV_REV_PAY_HIST_DIST_ID
3123  , p_source_24            IN NUMBER
3124 )
3125 IS
3126 
3127 l_component_type              VARCHAR2(80);
3128 l_component_code              VARCHAR2(30);
3129 l_component_type_code         VARCHAR2(1);
3130 l_component_appl_id           INTEGER;
3131 l_amb_context_code            VARCHAR2(30);
3132 l_entity_code                 VARCHAR2(30);
3133 l_event_class_code            VARCHAR2(30);
3134 l_ae_header_id                NUMBER;
3135 l_event_type_code             VARCHAR2(30);
3136 l_line_definition_code        VARCHAR2(30);
3137 l_line_definition_owner_code  VARCHAR2(1);
3138 --
3139 -- adr variables
3140 l_segment                     VARCHAR2(30);
3141 l_ccid                        NUMBER;
3142 l_adr_transaction_coa_id      NUMBER;
3143 l_adr_accounting_coa_id       NUMBER;
3144 l_adr_flexfield_segment_code  VARCHAR2(30);
3145 l_adr_flex_value_set_id       NUMBER;
3146 l_adr_value_type_code         VARCHAR2(30);
3147 l_adr_value_combination_id    NUMBER;
3148 l_adr_value_segment_code      VARCHAR2(30);
3149 
3150 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3151 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3152 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3153 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3154 
3155 -- 4262811 Variables ------------------------------------------------------------------------------------------
3156 l_entered_amt_idx             NUMBER;
3157 l_accted_amt_idx              NUMBER;
3158 l_acc_rev_flag                VARCHAR2(1);
3162 
3159 l_accrual_line_num            NUMBER;
3160 l_tmp_amt                     NUMBER;
3161 l_acc_rev_natural_side_code   VARCHAR2(1);
3163 l_num_entries                 NUMBER;
3164 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3165 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3166 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3167 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3168 l_recog_line_1                NUMBER;
3169 l_recog_line_2                NUMBER;
3170 
3171 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3172 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3173 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3174 
3175 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3176 
3177 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3178 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3179 
3180 ---------------------------------------------------------------------------------------------------------------
3181 
3182 
3183 --
3184 -- bulk performance
3185 --
3186 l_balance_type_code           VARCHAR2(1);
3187 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3188 l_log_module                  VARCHAR2(240);
3189 
3190 --
3191 -- Upgrade strategy
3192 --
3193 l_actual_upg_option           VARCHAR2(1);
3194 l_enc_upg_option           VARCHAR2(1);
3195 
3196 --
3197 BEGIN
3198 --
3199 IF g_log_enabled THEN
3200       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
3201 END IF;
3202 --
3203 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3204 
3205       trace
3206          (p_msg      => 'BEGIN of AcctLineType_12'
3207          ,p_level    => C_LEVEL_PROCEDURE
3208          ,p_module   => l_log_module);
3209 
3210 END IF;
3211 --
3212 l_component_type             := 'AMB_JLT';
3213 l_component_code             := 'FV_TC_DISB_TRANSIT_REV_DR';
3214 l_component_type_code        := 'S';
3215 l_component_appl_id          :=  8901;
3216 l_amb_context_code           := 'DEFAULT';
3217 l_entity_code                := 'TREASURY_CONFIRMATION';
3218 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
3219 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
3220 l_line_definition_owner_code := 'S';
3221 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
3222 --
3223 l_balance_type_code          := 'A';
3224 l_segment                     := NULL;
3225 l_ccid                        := NULL;
3226 l_adr_transaction_coa_id      := NULL;
3227 l_adr_accounting_coa_id       := NULL;
3228 l_adr_flexfield_segment_code  := NULL;
3229 l_adr_flex_value_set_id       := NULL;
3230 l_adr_value_type_code         := NULL;
3231 l_adr_value_combination_id    := NULL;
3232 l_adr_value_segment_code      := NULL;
3233 
3234 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3235 l_bflow_class_code           := 'FV_TC_PAYMENT_CR';    -- 4219869 Business Flow
3236 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3237 l_budgetary_control_flag     := 'N';
3238 
3239 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3240 l_bflow_applied_to_amt       := NULL; -- 5132302
3241 l_entered_amt_idx            := NULL;          -- 4262811
3242 l_accted_amt_idx             := NULL;          -- 4262811
3243 l_acc_rev_flag               := NULL;          -- 4262811
3244 l_accrual_line_num           := NULL;          -- 4262811
3245 l_tmp_amt                    := NULL;          -- 4262811
3246 --
3247  
3248 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3249     l_balance_type_code <> 'B' THEN
3250 IF NVL(
3251 xla_ae_sources_pkg.GetSystemSourceChar(
3252    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3253  , p_source_type_code      => 'Y'
3254  , p_source_application_id =>  602
3255 ),'
3256 ')  =  'TREASURY_BACKOUT' OR 
3257 NVL(
3258 xla_ae_sources_pkg.GetSystemSourceChar(
3259    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3260  , p_source_type_code      => 'Y'
3261  , p_source_application_id =>  602
3262 ),'
3263 ')  =  'TREASURY_VOID'
3264  THEN 
3265 
3266    --
3267    XLA_AE_LINES_PKG.SetNewLine;
3268 
3269    p_balance_type_code          := l_balance_type_code;
3270    -- set the flag so later we will know whether the gain loss line needs to be created
3271    
3272    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3273      p_actual_flag :='A';
3274    END IF;
3275 
3276    --
3277    -- bulk performance
3278    --
3279    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3280                                       p_header_num   => 0); -- 4262811
3281    --
3282    -- set accounting line options
3283    --
3284    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3285            p_natural_side_code          => 'D'
3286          , p_gain_or_loss_flag          => 'N'
3287          , p_gl_transfer_mode_code      => 'S'
3288          , p_acct_entry_type_code       => 'A'
3289          , p_switch_side_flag           => 'N'
3290          , p_merge_duplicate_code       => 'N'
3291          );
3292    --
3293    l_acc_rev_natural_side_code := 'C';  -- 4262811
3294    -- 
3295    --
3296    -- set accounting line type info
3297    --
3298    xla_ae_lines_pkg.SetAcctLineType
3299       (p_component_type             => l_component_type
3300       ,p_event_type_code            => l_event_type_code
3301       ,p_line_definition_owner_code => l_line_definition_owner_code
3302       ,p_line_definition_code       => l_line_definition_code
3306       ,p_amb_context_code           => l_amb_context_code
3303       ,p_accounting_line_code       => l_component_code
3304       ,p_accounting_line_type_code  => l_component_type_code
3305       ,p_accounting_line_appl_id    => l_component_appl_id
3307       ,p_entity_code                => l_entity_code
3308       ,p_event_class_code           => l_event_class_code);
3309    --
3310    -- set accounting class
3311    --
3312    xla_ae_lines_pkg.SetAcctClass(
3313            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
3314          , p_ae_header_id           => l_ae_header_id
3315          );
3316 
3317    --
3318    -- set rounding class
3319    --
3320    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3321                       'ACCOUNTSPAYABLE';
3322 
3323    --
3324    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3325    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3326    --
3327    -- bulk performance
3328    --
3329    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3330 
3331    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3332       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3333 
3334    -- 4955764
3335    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3336       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3337 
3338    -- 4458381 Public Sector Enh
3339    
3340    --
3341    -- set accounting attributes for the line type
3342    --
3343    l_entered_amt_idx := 8;
3344    l_accted_amt_idx  := 10;
3345    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3346    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
3347    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
3348    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3349    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
3350    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
3351    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
3352    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
3353    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_24);
3354    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3355    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
3356    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
3357    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
3358    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
3359    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
3360    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
3361    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
3362    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
3363    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
3364    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
3365    l_rec_acct_attrs.array_num_value(10)  := p_source_19;
3366 
3367    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3368    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3369 
3370    ---------------------------------------------------------------------------------------------------------------
3371    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3372    ---------------------------------------------------------------------------------------------------------------
3373    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3374 
3375    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3376    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3377 
3378    IF xla_accounting_cache_pkg.GetValueChar
3379          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3380          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3381    AND l_bflow_method_code = 'PRIOR_ENTRY'
3382 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3383    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3384          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3385        )
3386    THEN
3387          xla_ae_lines_pkg.BflowUpgEntry
3388            (p_business_method_code    => l_bflow_method_code
3389            ,p_business_class_code     => l_bflow_class_code
3390            ,p_balance_type            => l_balance_type_code);
3391    ELSE
3392       NULL;
3393 XLA_AE_LINES_PKG.business_flow_validation(
3394                                 p_business_method_code     => l_bflow_method_code
3395                                ,p_business_class_code      => l_bflow_class_code
3396                                ,p_inherit_description_flag => l_inherit_desc_flag);
3397    END IF;
3398 
3399    --
3400    -- call description
3401    --
3402    -- No description or it is inherited.
3403    --
3404    -- call ADRs
3405    -- Bug 4922099
3406    --
3407    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3408         (NVL(l_actual_upg_option, 'N') = 'O') OR
3409         (NVL(l_enc_upg_option, 'N') = 'O')
3410       )
3411    THEN
3412    NULL;
3413    --
3414    --
3415    
3416    --
3417    --
3418    END IF;
3419    --
3420    -- Bug 4922099
3421    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3422           (NVL(l_enc_upg_option, 'N') = 'O')
3423         ) AND
3424         (l_bflow_method_code = 'PRIOR_ENTRY')
3425       )
3426    THEN
3427       IF
3428       --
3429       1 = 1
3433                                     (p_appli_s_name            => 'XLA'
3430       --
3431       THEN
3432       xla_accounting_err_pkg.build_message
3434                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3435                                     ,p_token_1                 => 'LINE_NUMBER'
3436                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3437                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3438                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3439                                                                              l_component_type
3440                                                                             ,l_component_code
3441                                                                             ,l_component_type_code
3442                                                                             ,l_component_appl_id
3443                                                                             ,l_amb_context_code
3444                                                                             ,l_entity_code
3445                                                                             ,l_event_class_code
3446                                                                            )
3447                                     ,p_token_3                 => 'OWNER'
3448                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3449                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3450                                                                           ,p_lookup_code    => l_component_type_code
3451                                                                          )
3452                                     ,p_token_4                 => 'PRODUCT_NAME'
3453                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3454                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3455                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3456                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3457                                     ,p_ae_header_id            =>  NULL
3458                                        );
3459 
3460         IF (C_LEVEL_ERROR>= g_log_level) THEN
3461                  trace
3462                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3463                       ,p_level    => C_LEVEL_ERROR
3464                       ,p_module   => l_log_module);
3465         END IF;
3466       END IF;
3467    END IF;
3468    --
3469    --
3470    ------------------------------------------------------------------------------------------------
3471    -- 4219869 Business Flow
3472    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3473    -- Prior Entry.  Currently, the following code is always generated.
3474    ------------------------------------------------------------------------------------------------
3475    -- No ValidateCurrentLine for business flow method of Prior Entry
3476 
3477    ------------------------------------------------------------------------------------
3478    -- 4219869 Business Flow
3479    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3480    ------------------------------------------------------------------------------------
3481    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3482 
3483    ----------------------------------------------------------------------------------
3484    -- 4219869 Business Flow
3485    -- Update journal entry status -- Need to generate this within IF <condition>
3486    ----------------------------------------------------------------------------------
3487    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3488          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3489          ,p_balance_type_code => l_balance_type_code
3490          );
3491 
3492    -------------------------------------------------------------------------------------------
3493    -- 4262811 - Generate the Accrual Reversal lines
3494    -------------------------------------------------------------------------------------------
3495    BEGIN
3496       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3497                               (g_array_event(p_event_id).array_value_num('header_index'));
3498       IF l_acc_rev_flag IS NULL THEN
3499          l_acc_rev_flag := 'N';
3500       END IF;
3501    EXCEPTION
3502       WHEN OTHERS THEN
3503          l_acc_rev_flag := 'N';
3504    END;
3505    --
3506    IF (l_acc_rev_flag = 'Y') THEN
3507 
3508        -- 4645092  ------------------------------------------------------------------------------
3509        -- To allow MPA report to determine if it should generate report process
3510        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3511        ------------------------------------------------------------------------------------------
3512 
3513        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3514        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3515 
3516        --
3517        -- Update the line information that should be overwritten
3518        --
3519        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3520                                          p_header_num   => 1);
3521        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3522 
3523        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3524 
3525        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3526           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3527        END IF;
3528 
3529       --
3533           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3530       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3531       --
3532       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3534       ELSE
3535           ---------------------------------------------------------------------------------------------------
3536           -- 4262811a Switch Sign
3537           ---------------------------------------------------------------------------------------------------
3538           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3539           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3540                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3541           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3542                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3543           -- 5132302
3544           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3545                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3546 
3547       END IF;
3548 
3549       -- 4955764
3550       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3551       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3552 
3553 
3554       XLA_AE_LINES_PKG.ValidateCurrentLine;
3555       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3556 
3557       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3558                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3559                ,p_balance_type_code => l_balance_type_code);
3560 
3561    END IF;
3562 
3563    -----------------------------------------------------------------------------------------
3564    -- 4262811 Multiperiod Accounting
3565    -----------------------------------------------------------------------------------------
3566      -- No MPA option is assigned.
3567 
3568 
3569 END IF;
3570 END IF;
3571 --
3572 
3573 --
3574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3575    trace
3576       (p_msg      => 'END of AcctLineType_12'
3577       ,p_level    => C_LEVEL_PROCEDURE
3578       ,p_module   => l_log_module);
3579 END IF;
3580 --
3581 EXCEPTION
3582   WHEN xla_exceptions_pkg.application_exception THEN
3583       RAISE;
3584   WHEN OTHERS THEN
3585        xla_exceptions_pkg.raise_message
3586            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_12');
3587 END AcctLineType_12;
3588 --
3589 
3590 ---------------------------------------
3591 --
3592 -- PRIVATE FUNCTION
3593 --         AcctLineType_13
3594 --
3595 ---------------------------------------
3596 PROCEDURE AcctLineType_13 (
3597   p_application_id        IN NUMBER
3598  ,p_event_id              IN NUMBER
3599  ,p_calculate_acctd_flag  IN VARCHAR2
3600  ,p_calculate_g_l_flag    IN VARCHAR2
3601  ,p_actual_flag           IN OUT VARCHAR2
3602  ,p_balance_type_code     OUT VARCHAR2
3603  ,p_gain_or_loss_ref      OUT VARCHAR2
3604  
3605 --FV_CHECK_NUMBER
3606  , p_source_1            IN NUMBER
3607 --FV_CHECK_DATE
3608  , p_source_2            IN DATE
3609 --FV_TREASURY_PAY_NUMBER
3610  , p_source_3            IN NUMBER
3611 --FV_INV_DIST_CCID
3612  , p_source_8            IN NUMBER
3613 --FV_INV_TYPE_LOOKUP_CODE
3614  , p_source_11            IN VARCHAR2
3615 --FV_BUS_FLOW_FV_APP_ID
3616  , p_source_14            IN NUMBER
3617 --FV_BUS_FLOW_TREASURY_DIST_TYPE
3618  , p_source_15            IN VARCHAR2
3619 --FV_BUS_FLOW_TREAS_ENTITY_CODE
3620  , p_source_16            IN VARCHAR2
3621 --FV_PAY_HIST_DIST_ID
3622  , p_source_17            IN NUMBER
3623 --FV_TREASURY_CONFIRMATION_ID
3624  , p_source_18            IN NUMBER
3625 --FV_PAY_DIST_AMOUNT
3626  , p_source_19            IN NUMBER
3627 --FV_INV_CURRENCY_CODE
3628  , p_source_20            IN VARCHAR2
3629 --FV_INV_EXCHANGE_DATE
3630  , p_source_21            IN DATE
3631 --FV_INV_EXCHANGE_RATE
3632  , p_source_22            IN NUMBER
3633 --FV_INV_EXCHANGE_RATE_TYPE
3634  , p_source_23            IN VARCHAR2
3635 )
3636 IS
3637 
3638 l_component_type              VARCHAR2(80);
3639 l_component_code              VARCHAR2(30);
3640 l_component_type_code         VARCHAR2(1);
3641 l_component_appl_id           INTEGER;
3642 l_amb_context_code            VARCHAR2(30);
3643 l_entity_code                 VARCHAR2(30);
3644 l_event_class_code            VARCHAR2(30);
3645 l_ae_header_id                NUMBER;
3646 l_event_type_code             VARCHAR2(30);
3647 l_line_definition_code        VARCHAR2(30);
3648 l_line_definition_owner_code  VARCHAR2(1);
3649 --
3650 -- adr variables
3651 l_segment                     VARCHAR2(30);
3652 l_ccid                        NUMBER;
3653 l_adr_transaction_coa_id      NUMBER;
3654 l_adr_accounting_coa_id       NUMBER;
3655 l_adr_flexfield_segment_code  VARCHAR2(30);
3656 l_adr_flex_value_set_id       NUMBER;
3657 l_adr_value_type_code         VARCHAR2(30);
3658 l_adr_value_combination_id    NUMBER;
3659 l_adr_value_segment_code      VARCHAR2(30);
3660 
3661 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3662 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3663 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3664 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3665 
3666 -- 4262811 Variables ------------------------------------------------------------------------------------------
3670 l_accrual_line_num            NUMBER;
3667 l_entered_amt_idx             NUMBER;
3668 l_accted_amt_idx              NUMBER;
3669 l_acc_rev_flag                VARCHAR2(1);
3671 l_tmp_amt                     NUMBER;
3672 l_acc_rev_natural_side_code   VARCHAR2(1);
3673 
3674 l_num_entries                 NUMBER;
3675 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3676 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3677 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3678 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3679 l_recog_line_1                NUMBER;
3680 l_recog_line_2                NUMBER;
3681 
3682 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3683 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3684 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3685 
3686 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3687 
3688 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3689 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3690 
3691 ---------------------------------------------------------------------------------------------------------------
3692 
3693 
3694 --
3695 -- bulk performance
3696 --
3697 l_balance_type_code           VARCHAR2(1);
3698 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3699 l_log_module                  VARCHAR2(240);
3700 
3701 --
3702 -- Upgrade strategy
3703 --
3704 l_actual_upg_option           VARCHAR2(1);
3705 l_enc_upg_option           VARCHAR2(1);
3706 
3707 --
3708 BEGIN
3709 --
3710 IF g_log_enabled THEN
3711       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
3712 END IF;
3713 --
3714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3715 
3716       trace
3717          (p_msg      => 'BEGIN of AcctLineType_13'
3718          ,p_level    => C_LEVEL_PROCEDURE
3719          ,p_module   => l_log_module);
3720 
3721 END IF;
3722 --
3723 l_component_type             := 'AMB_JLT';
3724 l_component_code             := 'FV_TC_PAID_ACCT_CR';
3725 l_component_type_code        := 'S';
3726 l_component_appl_id          :=  8901;
3727 l_amb_context_code           := 'DEFAULT';
3728 l_entity_code                := 'TREASURY_CONFIRMATION';
3729 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
3730 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
3731 l_line_definition_owner_code := 'S';
3732 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
3733 --
3734 l_balance_type_code          := 'A';
3735 l_segment                     := NULL;
3736 l_ccid                        := NULL;
3737 l_adr_transaction_coa_id      := NULL;
3738 l_adr_accounting_coa_id       := NULL;
3739 l_adr_flexfield_segment_code  := NULL;
3740 l_adr_flex_value_set_id       := NULL;
3741 l_adr_value_type_code         := NULL;
3742 l_adr_value_combination_id    := NULL;
3743 l_adr_value_segment_code      := NULL;
3744 
3745 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3746 l_bflow_class_code           := 'FV_TC_PAID_CR';    -- 4219869 Business Flow
3747 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3748 l_budgetary_control_flag     := 'N';
3749 
3750 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3751 l_bflow_applied_to_amt       := NULL; -- 5132302
3752 l_entered_amt_idx            := NULL;          -- 4262811
3753 l_accted_amt_idx             := NULL;          -- 4262811
3754 l_acc_rev_flag               := NULL;          -- 4262811
3755 l_accrual_line_num           := NULL;          -- 4262811
3756 l_tmp_amt                    := NULL;          -- 4262811
3757 --
3758  
3759 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3760     l_balance_type_code <> 'B' THEN
3761 IF NVL(
3762 xla_ae_sources_pkg.GetSystemSourceChar(
3763    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3764  , p_source_type_code      => 'Y'
3765  , p_source_application_id =>  602
3766 ),'
3767 ')  =  'TREASURY_CONFIRM'
3768  THEN 
3769 
3770    --
3771    XLA_AE_LINES_PKG.SetNewLine;
3772 
3773    p_balance_type_code          := l_balance_type_code;
3774    -- set the flag so later we will know whether the gain loss line needs to be created
3775    
3776    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3777      p_actual_flag :='A';
3778    END IF;
3779 
3780    --
3781    -- bulk performance
3782    --
3783    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3784                                       p_header_num   => 0); -- 4262811
3785    --
3786    -- set accounting line options
3787    --
3788    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3789            p_natural_side_code          => 'C'
3790          , p_gain_or_loss_flag          => 'N'
3791          , p_gl_transfer_mode_code      => 'S'
3792          , p_acct_entry_type_code       => 'A'
3793          , p_switch_side_flag           => 'N'
3794          , p_merge_duplicate_code       => 'N'
3795          );
3796    --
3797    l_acc_rev_natural_side_code := 'D';  -- 4262811
3798    -- 
3799    --
3800    -- set accounting line type info
3801    --
3802    xla_ae_lines_pkg.SetAcctLineType
3803       (p_component_type             => l_component_type
3804       ,p_event_type_code            => l_event_type_code
3805       ,p_line_definition_owner_code => l_line_definition_owner_code
3806       ,p_line_definition_code       => l_line_definition_code
3810       ,p_amb_context_code           => l_amb_context_code
3807       ,p_accounting_line_code       => l_component_code
3808       ,p_accounting_line_type_code  => l_component_type_code
3809       ,p_accounting_line_appl_id    => l_component_appl_id
3811       ,p_entity_code                => l_entity_code
3812       ,p_event_class_code           => l_event_class_code);
3813    --
3814    -- set accounting class
3815    --
3816    xla_ae_lines_pkg.SetAcctClass(
3817            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
3818          , p_ae_header_id           => l_ae_header_id
3819          );
3820 
3821    --
3822    -- set rounding class
3823    --
3824    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3825                       'ACCOUNTSPAYABLE';
3826 
3827    --
3828    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3829    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3830    --
3831    -- bulk performance
3832    --
3833    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3834 
3835    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3836       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3837 
3838    -- 4955764
3839    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3841 
3842    -- 4458381 Public Sector Enh
3843    
3844    --
3845    -- set accounting attributes for the line type
3846    --
3847    l_entered_amt_idx := 8;
3848    l_accted_amt_idx  := 13;
3849    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3850    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
3851    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
3852    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3853    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
3854    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
3855    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
3856    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
3857    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_17);
3858    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3859    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
3860    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
3861    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
3862    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
3863    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
3864    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
3865    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
3866    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
3867    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
3868    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
3869    l_rec_acct_attrs.array_date_value(10)  := p_source_21;
3870    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
3871    l_rec_acct_attrs.array_num_value(11)  := p_source_22;
3872    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
3873    l_rec_acct_attrs.array_char_value(12)  := p_source_23;
3874    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
3875    l_rec_acct_attrs.array_num_value(13)  := p_source_19;
3876 
3877    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3878    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3879 
3880    ---------------------------------------------------------------------------------------------------------------
3881    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3882    ---------------------------------------------------------------------------------------------------------------
3883    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3884 
3885    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3886    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3887 
3888    IF xla_accounting_cache_pkg.GetValueChar
3889          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3890          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3891    AND l_bflow_method_code = 'PRIOR_ENTRY'
3892 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3893    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3894          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3895        )
3896    THEN
3897          xla_ae_lines_pkg.BflowUpgEntry
3898            (p_business_method_code    => l_bflow_method_code
3899            ,p_business_class_code     => l_bflow_class_code
3900            ,p_balance_type            => l_balance_type_code);
3901    ELSE
3902       NULL;
3903 -- No business flow processing for business flow method of NONE.
3904    END IF;
3905 
3906    --
3907    -- call description
3908    --
3909    
3910 xla_ae_lines_pkg.SetLineDescription(
3911    p_ae_header_id => l_ae_header_id
3912   ,p_description  => Description_1 (
3913      p_application_id         => p_application_id
3914    , p_ae_header_id           => l_ae_header_id 
3915 , p_source_1 => p_source_1
3916 , p_source_2 => p_source_2
3917 , p_source_3 => p_source_3
3918    )
3919 );
3920 
3921 
3922    --
3923    -- call ADRs
3924    -- Bug 4922099
3925    --
3929       )
3926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3927         (NVL(l_actual_upg_option, 'N') = 'O') OR
3928         (NVL(l_enc_upg_option, 'N') = 'O')
3930    THEN
3931    NULL;
3932    --
3933    --
3934    
3935   l_ccid := AcctDerRule_7(
3936            p_application_id           => p_application_id
3937          , p_ae_header_id             => l_ae_header_id 
3938 , p_source_8 => p_source_8
3939          , x_transaction_coa_id       => l_adr_transaction_coa_id
3940          , x_accounting_coa_id        => l_adr_accounting_coa_id
3941          , x_value_type_code          => l_adr_value_type_code
3942          , p_side                     => 'NA'
3943    );
3944 
3945    xla_ae_lines_pkg.set_ccid(
3946     p_code_combination_id          => l_ccid
3947   , p_value_type_code              => l_adr_value_type_code
3948   , p_transaction_coa_id           => l_adr_transaction_coa_id
3949   , p_accounting_coa_id            => l_adr_accounting_coa_id
3950   , p_adr_code                     => 'FV_INV_DIST_ACCOUNT'
3951   , p_adr_type_code                => 'S'
3952   , p_component_type               => l_component_type
3953   , p_component_code               => l_component_code
3954   , p_component_type_code          => l_component_type_code
3955   , p_component_appl_id            => l_component_appl_id
3956   , p_amb_context_code             => l_amb_context_code
3957   , p_side                         => 'NA'
3958   );
3959 
3960 
3961    l_segment := AcctDerRule_6(
3962            p_application_id           => p_application_id
3963          , p_ae_header_id             => l_ae_header_id 
3964 , p_source_11 => p_source_11
3965          , x_transaction_coa_id       => l_adr_transaction_coa_id
3966          , x_accounting_coa_id        => l_adr_accounting_coa_id
3967          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
3968          , x_flex_value_set_id        => l_adr_flex_value_set_id
3969          , x_value_type_code          => l_adr_value_type_code
3970          , x_value_combination_id     => l_adr_value_combination_id
3971          , x_value_segment_code       => l_adr_value_segment_code
3972          , p_side                     => 'NA'
3973          , p_override_seg_flag        => 'Y'
3974    );
3975 
3976    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
3977 
3978       xla_ae_lines_pkg.set_segment(
3979           p_to_segment_code         => 'GL_ACCOUNT'
3980         , p_segment_value           => l_segment
3981         , p_from_segment_code       => l_adr_value_segment_code
3982         , p_from_combination_id     => l_adr_value_combination_id
3983         , p_value_type_code         => l_adr_value_type_code
3984         , p_transaction_coa_id      => l_adr_transaction_coa_id
3985         , p_accounting_coa_id       => l_adr_accounting_coa_id
3986         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
3987         , p_flex_value_set_id       => l_adr_flex_value_set_id
3988         , p_adr_code                => 'FV_4X0201_TREASURY_PAY_ACCT'
3989         , p_adr_type_code           => 'S'
3990         , p_component_type          => l_component_type
3991         , p_component_code          => l_component_code
3992         , p_component_type_code     => l_component_type_code
3993         , p_component_appl_id       => l_component_appl_id
3994         , p_amb_context_code        => l_amb_context_code
3995         , p_entity_code             => 'TREASURY_CONFIRMATION'
3996         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
3997         , p_side                    => 'NA'
3998         );
3999 
4000   END IF;
4001 
4002    --
4003    --
4004    END IF;
4005    --
4006    -- Bug 4922099
4007    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4008           (NVL(l_enc_upg_option, 'N') = 'O')
4009         ) AND
4010         (l_bflow_method_code = 'PRIOR_ENTRY')
4011       )
4012    THEN
4013       IF
4014       --
4015       1 = 2
4016       --
4017       THEN
4018       xla_accounting_err_pkg.build_message
4019                                     (p_appli_s_name            => 'XLA'
4020                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4021                                     ,p_token_1                 => 'LINE_NUMBER'
4022                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4023                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4024                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4025                                                                              l_component_type
4026                                                                             ,l_component_code
4027                                                                             ,l_component_type_code
4028                                                                             ,l_component_appl_id
4029                                                                             ,l_amb_context_code
4030                                                                             ,l_entity_code
4031                                                                             ,l_event_class_code
4032                                                                            )
4033                                     ,p_token_3                 => 'OWNER'
4034                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4035                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4036                                                                           ,p_lookup_code    => l_component_type_code
4037                                                                          )
4038                                     ,p_token_4                 => 'PRODUCT_NAME'
4042                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4039                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4040                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4041                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4043                                     ,p_ae_header_id            =>  NULL
4044                                        );
4045 
4046         IF (C_LEVEL_ERROR>= g_log_level) THEN
4047                  trace
4048                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4049                       ,p_level    => C_LEVEL_ERROR
4050                       ,p_module   => l_log_module);
4051         END IF;
4052       END IF;
4053    END IF;
4054    --
4055    --
4056    ------------------------------------------------------------------------------------------------
4057    -- 4219869 Business Flow
4058    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4059    -- Prior Entry.  Currently, the following code is always generated.
4060    ------------------------------------------------------------------------------------------------
4061    XLA_AE_LINES_PKG.ValidateCurrentLine;
4062 
4063    ------------------------------------------------------------------------------------
4064    -- 4219869 Business Flow
4065    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4066    ------------------------------------------------------------------------------------
4067    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4068 
4069    ----------------------------------------------------------------------------------
4070    -- 4219869 Business Flow
4071    -- Update journal entry status -- Need to generate this within IF <condition>
4072    ----------------------------------------------------------------------------------
4073    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4074          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4075          ,p_balance_type_code => l_balance_type_code
4076          );
4077 
4078    -------------------------------------------------------------------------------------------
4079    -- 4262811 - Generate the Accrual Reversal lines
4080    -------------------------------------------------------------------------------------------
4081    BEGIN
4082       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4083                               (g_array_event(p_event_id).array_value_num('header_index'));
4084       IF l_acc_rev_flag IS NULL THEN
4085          l_acc_rev_flag := 'N';
4086       END IF;
4087    EXCEPTION
4088       WHEN OTHERS THEN
4089          l_acc_rev_flag := 'N';
4090    END;
4091    --
4092    IF (l_acc_rev_flag = 'Y') THEN
4093 
4094        -- 4645092  ------------------------------------------------------------------------------
4095        -- To allow MPA report to determine if it should generate report process
4096        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4097        ------------------------------------------------------------------------------------------
4098 
4099        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4100        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4101 
4102        --
4103        -- Update the line information that should be overwritten
4104        --
4105        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4106                                          p_header_num   => 1);
4107        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4108 
4109        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4110 
4111        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4112           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4113        END IF;
4114 
4115       --
4116       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4117       --
4118       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4119           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4120       ELSE
4121           ---------------------------------------------------------------------------------------------------
4122           -- 4262811a Switch Sign
4123           ---------------------------------------------------------------------------------------------------
4124           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4125           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4126                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4127           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4128                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4129           -- 5132302
4130           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4131                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4132 
4133       END IF;
4134 
4135       -- 4955764
4136       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4137       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4138 
4139 
4140       XLA_AE_LINES_PKG.ValidateCurrentLine;
4141       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4142 
4143       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4147    END IF;
4144                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4145                ,p_balance_type_code => l_balance_type_code);
4146 
4148 
4149    -----------------------------------------------------------------------------------------
4150    -- 4262811 Multiperiod Accounting
4151    -----------------------------------------------------------------------------------------
4152      -- No MPA option is assigned.
4153 
4154 
4155 END IF;
4156 END IF;
4157 --
4158 
4159 --
4160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4161    trace
4162       (p_msg      => 'END of AcctLineType_13'
4163       ,p_level    => C_LEVEL_PROCEDURE
4164       ,p_module   => l_log_module);
4165 END IF;
4166 --
4167 EXCEPTION
4168   WHEN xla_exceptions_pkg.application_exception THEN
4169       RAISE;
4170   WHEN OTHERS THEN
4171        xla_exceptions_pkg.raise_message
4172            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_13');
4173 END AcctLineType_13;
4174 --
4175 
4176 ---------------------------------------
4177 --
4178 -- PRIVATE FUNCTION
4179 --         AcctLineType_14
4180 --
4181 ---------------------------------------
4182 PROCEDURE AcctLineType_14 (
4183   p_application_id        IN NUMBER
4184  ,p_event_id              IN NUMBER
4185  ,p_calculate_acctd_flag  IN VARCHAR2
4186  ,p_calculate_g_l_flag    IN VARCHAR2
4187  ,p_actual_flag           IN OUT VARCHAR2
4188  ,p_balance_type_code     OUT VARCHAR2
4189  ,p_gain_or_loss_ref      OUT VARCHAR2
4190  
4191 --FV_BUS_FLOW_FV_APP_ID
4192  , p_source_14            IN NUMBER
4193 --FV_BUS_FLOW_TREASURY_DIST_TYPE
4194  , p_source_15            IN VARCHAR2
4195 --FV_BUS_FLOW_TREAS_ENTITY_CODE
4196  , p_source_16            IN VARCHAR2
4197 --FV_PAY_HIST_DIST_ID
4198  , p_source_17            IN NUMBER
4199 --FV_TREASURY_CONFIRMATION_ID
4200  , p_source_18            IN NUMBER
4201 --FV_PAY_DIST_AMOUNT
4202  , p_source_19            IN NUMBER
4203 --FV_INV_CURRENCY_CODE
4204  , p_source_20            IN VARCHAR2
4205 --FV_REV_PAY_HIST_DIST_ID
4206  , p_source_24            IN NUMBER
4207 )
4208 IS
4209 
4210 l_component_type              VARCHAR2(80);
4211 l_component_code              VARCHAR2(30);
4212 l_component_type_code         VARCHAR2(1);
4213 l_component_appl_id           INTEGER;
4214 l_amb_context_code            VARCHAR2(30);
4215 l_entity_code                 VARCHAR2(30);
4216 l_event_class_code            VARCHAR2(30);
4217 l_ae_header_id                NUMBER;
4218 l_event_type_code             VARCHAR2(30);
4219 l_line_definition_code        VARCHAR2(30);
4220 l_line_definition_owner_code  VARCHAR2(1);
4221 --
4222 -- adr variables
4223 l_segment                     VARCHAR2(30);
4224 l_ccid                        NUMBER;
4225 l_adr_transaction_coa_id      NUMBER;
4226 l_adr_accounting_coa_id       NUMBER;
4227 l_adr_flexfield_segment_code  VARCHAR2(30);
4228 l_adr_flex_value_set_id       NUMBER;
4229 l_adr_value_type_code         VARCHAR2(30);
4230 l_adr_value_combination_id    NUMBER;
4231 l_adr_value_segment_code      VARCHAR2(30);
4232 
4233 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4234 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4235 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4236 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4237 
4238 -- 4262811 Variables ------------------------------------------------------------------------------------------
4239 l_entered_amt_idx             NUMBER;
4240 l_accted_amt_idx              NUMBER;
4241 l_acc_rev_flag                VARCHAR2(1);
4242 l_accrual_line_num            NUMBER;
4243 l_tmp_amt                     NUMBER;
4244 l_acc_rev_natural_side_code   VARCHAR2(1);
4245 
4246 l_num_entries                 NUMBER;
4247 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4248 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4249 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4250 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4251 l_recog_line_1                NUMBER;
4252 l_recog_line_2                NUMBER;
4253 
4254 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4255 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4256 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4257 
4258 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4259 
4260 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4261 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4262 
4263 ---------------------------------------------------------------------------------------------------------------
4264 
4265 
4266 --
4267 -- bulk performance
4268 --
4269 l_balance_type_code           VARCHAR2(1);
4270 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4271 l_log_module                  VARCHAR2(240);
4272 
4273 --
4274 -- Upgrade strategy
4275 --
4276 l_actual_upg_option           VARCHAR2(1);
4277 l_enc_upg_option           VARCHAR2(1);
4278 
4279 --
4280 BEGIN
4281 --
4282 IF g_log_enabled THEN
4283       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
4284 END IF;
4285 --
4286 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4287 
4288       trace
4289          (p_msg      => 'BEGIN of AcctLineType_14'
4290          ,p_level    => C_LEVEL_PROCEDURE
4291          ,p_module   => l_log_module);
4292 
4293 END IF;
4294 --
4295 l_component_type             := 'AMB_JLT';
4299 l_amb_context_code           := 'DEFAULT';
4296 l_component_code             := 'FV_TC_PAID_ACCT_REV_DR';
4297 l_component_type_code        := 'S';
4298 l_component_appl_id          :=  8901;
4300 l_entity_code                := 'TREASURY_CONFIRMATION';
4301 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
4302 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
4303 l_line_definition_owner_code := 'S';
4304 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
4305 --
4306 l_balance_type_code          := 'A';
4307 l_segment                     := NULL;
4308 l_ccid                        := NULL;
4309 l_adr_transaction_coa_id      := NULL;
4310 l_adr_accounting_coa_id       := NULL;
4311 l_adr_flexfield_segment_code  := NULL;
4312 l_adr_flex_value_set_id       := NULL;
4313 l_adr_value_type_code         := NULL;
4314 l_adr_value_combination_id    := NULL;
4315 l_adr_value_segment_code      := NULL;
4316 
4317 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
4318 l_bflow_class_code           := 'FV_TC_PAID_CR';    -- 4219869 Business Flow
4319 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
4320 l_budgetary_control_flag     := 'N';
4321 
4322 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4323 l_bflow_applied_to_amt       := NULL; -- 5132302
4324 l_entered_amt_idx            := NULL;          -- 4262811
4325 l_accted_amt_idx             := NULL;          -- 4262811
4326 l_acc_rev_flag               := NULL;          -- 4262811
4327 l_accrual_line_num           := NULL;          -- 4262811
4328 l_tmp_amt                    := NULL;          -- 4262811
4329 --
4330  
4331 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4332     l_balance_type_code <> 'B' THEN
4333 IF NVL(
4334 xla_ae_sources_pkg.GetSystemSourceChar(
4335    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4336  , p_source_type_code      => 'Y'
4337  , p_source_application_id =>  602
4338 ),'
4339 ')  =  'TREASURY_BACKOUT' OR 
4340 NVL(
4341 xla_ae_sources_pkg.GetSystemSourceChar(
4342    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4343  , p_source_type_code      => 'Y'
4344  , p_source_application_id =>  602
4345 ),'
4346 ')  =  'TREASURY_VOID'
4347  THEN 
4348 
4349    --
4350    XLA_AE_LINES_PKG.SetNewLine;
4351 
4352    p_balance_type_code          := l_balance_type_code;
4353    -- set the flag so later we will know whether the gain loss line needs to be created
4354    
4355    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4356      p_actual_flag :='A';
4357    END IF;
4358 
4359    --
4360    -- bulk performance
4361    --
4362    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4363                                       p_header_num   => 0); -- 4262811
4364    --
4365    -- set accounting line options
4366    --
4367    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4368            p_natural_side_code          => 'D'
4369          , p_gain_or_loss_flag          => 'N'
4370          , p_gl_transfer_mode_code      => 'S'
4371          , p_acct_entry_type_code       => 'A'
4372          , p_switch_side_flag           => 'N'
4373          , p_merge_duplicate_code       => 'N'
4374          );
4375    --
4376    l_acc_rev_natural_side_code := 'C';  -- 4262811
4377    -- 
4378    --
4379    -- set accounting line type info
4380    --
4381    xla_ae_lines_pkg.SetAcctLineType
4382       (p_component_type             => l_component_type
4383       ,p_event_type_code            => l_event_type_code
4384       ,p_line_definition_owner_code => l_line_definition_owner_code
4385       ,p_line_definition_code       => l_line_definition_code
4386       ,p_accounting_line_code       => l_component_code
4387       ,p_accounting_line_type_code  => l_component_type_code
4388       ,p_accounting_line_appl_id    => l_component_appl_id
4389       ,p_amb_context_code           => l_amb_context_code
4390       ,p_entity_code                => l_entity_code
4391       ,p_event_class_code           => l_event_class_code);
4392    --
4393    -- set accounting class
4394    --
4395    xla_ae_lines_pkg.SetAcctClass(
4396            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
4397          , p_ae_header_id           => l_ae_header_id
4398          );
4399 
4400    --
4401    -- set rounding class
4402    --
4403    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4404                       'ACCOUNTSPAYABLE';
4405 
4406    --
4407    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4408    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4409    --
4410    -- bulk performance
4411    --
4412    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4413 
4414    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4415       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4416 
4417    -- 4955764
4418    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4419       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4420 
4421    -- 4458381 Public Sector Enh
4422    
4423    --
4424    -- set accounting attributes for the line type
4425    --
4426    l_entered_amt_idx := 8;
4427    l_accted_amt_idx  := 10;
4428    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4429    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4430    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
4434    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
4431    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4432    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
4433    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4435    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4436    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_24);
4437    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4438    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
4439    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4440    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
4441    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4442    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
4443    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
4444    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
4445    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
4446    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
4447    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
4448    l_rec_acct_attrs.array_num_value(10)  := p_source_19;
4449 
4450    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4451    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4452 
4453    ---------------------------------------------------------------------------------------------------------------
4454    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4455    ---------------------------------------------------------------------------------------------------------------
4456    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4457 
4458    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4459    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4460 
4461    IF xla_accounting_cache_pkg.GetValueChar
4462          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4463          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4464    AND l_bflow_method_code = 'PRIOR_ENTRY'
4465 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4466    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4467          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4468        )
4469    THEN
4470          xla_ae_lines_pkg.BflowUpgEntry
4471            (p_business_method_code    => l_bflow_method_code
4472            ,p_business_class_code     => l_bflow_class_code
4473            ,p_balance_type            => l_balance_type_code);
4474    ELSE
4475       NULL;
4476 XLA_AE_LINES_PKG.business_flow_validation(
4477                                 p_business_method_code     => l_bflow_method_code
4478                                ,p_business_class_code      => l_bflow_class_code
4479                                ,p_inherit_description_flag => l_inherit_desc_flag);
4480    END IF;
4481 
4482    --
4483    -- call description
4484    --
4485    -- No description or it is inherited.
4486    --
4487    -- call ADRs
4488    -- Bug 4922099
4489    --
4490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4491         (NVL(l_actual_upg_option, 'N') = 'O') OR
4492         (NVL(l_enc_upg_option, 'N') = 'O')
4493       )
4494    THEN
4495    NULL;
4496    --
4497    --
4498    
4499    --
4500    --
4501    END IF;
4502    --
4503    -- Bug 4922099
4504    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4505           (NVL(l_enc_upg_option, 'N') = 'O')
4506         ) AND
4507         (l_bflow_method_code = 'PRIOR_ENTRY')
4508       )
4509    THEN
4510       IF
4511       --
4512       1 = 1
4513       --
4514       THEN
4515       xla_accounting_err_pkg.build_message
4516                                     (p_appli_s_name            => 'XLA'
4517                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4518                                     ,p_token_1                 => 'LINE_NUMBER'
4519                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4520                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4521                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4522                                                                              l_component_type
4523                                                                             ,l_component_code
4524                                                                             ,l_component_type_code
4525                                                                             ,l_component_appl_id
4526                                                                             ,l_amb_context_code
4527                                                                             ,l_entity_code
4528                                                                             ,l_event_class_code
4529                                                                            )
4530                                     ,p_token_3                 => 'OWNER'
4531                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4532                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4533                                                                           ,p_lookup_code    => l_component_type_code
4534                                                                          )
4535                                     ,p_token_4                 => 'PRODUCT_NAME'
4539                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4536                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4537                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4538                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4540                                     ,p_ae_header_id            =>  NULL
4541                                        );
4542 
4543         IF (C_LEVEL_ERROR>= g_log_level) THEN
4544                  trace
4545                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4546                       ,p_level    => C_LEVEL_ERROR
4547                       ,p_module   => l_log_module);
4548         END IF;
4549       END IF;
4550    END IF;
4551    --
4552    --
4553    ------------------------------------------------------------------------------------------------
4554    -- 4219869 Business Flow
4555    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4556    -- Prior Entry.  Currently, the following code is always generated.
4557    ------------------------------------------------------------------------------------------------
4558    -- No ValidateCurrentLine for business flow method of Prior Entry
4559 
4560    ------------------------------------------------------------------------------------
4561    -- 4219869 Business Flow
4562    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4563    ------------------------------------------------------------------------------------
4564    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4565 
4566    ----------------------------------------------------------------------------------
4567    -- 4219869 Business Flow
4568    -- Update journal entry status -- Need to generate this within IF <condition>
4569    ----------------------------------------------------------------------------------
4570    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4571          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4572          ,p_balance_type_code => l_balance_type_code
4573          );
4574 
4575    -------------------------------------------------------------------------------------------
4576    -- 4262811 - Generate the Accrual Reversal lines
4577    -------------------------------------------------------------------------------------------
4578    BEGIN
4579       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4580                               (g_array_event(p_event_id).array_value_num('header_index'));
4581       IF l_acc_rev_flag IS NULL THEN
4582          l_acc_rev_flag := 'N';
4583       END IF;
4584    EXCEPTION
4585       WHEN OTHERS THEN
4586          l_acc_rev_flag := 'N';
4587    END;
4588    --
4589    IF (l_acc_rev_flag = 'Y') THEN
4590 
4591        -- 4645092  ------------------------------------------------------------------------------
4592        -- To allow MPA report to determine if it should generate report process
4593        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4594        ------------------------------------------------------------------------------------------
4595 
4596        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4597        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4598 
4599        --
4600        -- Update the line information that should be overwritten
4601        --
4602        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4603                                          p_header_num   => 1);
4604        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4605 
4606        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4607 
4608        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4609           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4610        END IF;
4611 
4612       --
4613       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4614       --
4615       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4616           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4617       ELSE
4618           ---------------------------------------------------------------------------------------------------
4619           -- 4262811a Switch Sign
4620           ---------------------------------------------------------------------------------------------------
4621           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4622           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4623                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4624           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4625                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4626           -- 5132302
4627           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4628                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4629 
4630       END IF;
4631 
4632       -- 4955764
4633       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4634       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4635 
4636 
4637       XLA_AE_LINES_PKG.ValidateCurrentLine;
4641                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4638       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4639 
4640       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4642                ,p_balance_type_code => l_balance_type_code);
4643 
4644    END IF;
4645 
4646    -----------------------------------------------------------------------------------------
4647    -- 4262811 Multiperiod Accounting
4648    -----------------------------------------------------------------------------------------
4649      -- No MPA option is assigned.
4650 
4651 
4652 END IF;
4653 END IF;
4654 --
4655 
4656 --
4657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4658    trace
4659       (p_msg      => 'END of AcctLineType_14'
4660       ,p_level    => C_LEVEL_PROCEDURE
4661       ,p_module   => l_log_module);
4662 END IF;
4663 --
4664 EXCEPTION
4665   WHEN xla_exceptions_pkg.application_exception THEN
4666       RAISE;
4667   WHEN OTHERS THEN
4668        xla_exceptions_pkg.raise_message
4669            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_14');
4670 END AcctLineType_14;
4671 --
4672 
4673 ---------------------------------------
4674 --
4675 -- PRIVATE FUNCTION
4676 --         AcctLineType_15
4677 --
4678 ---------------------------------------
4679 PROCEDURE AcctLineType_15 (
4680   p_application_id        IN NUMBER
4681  ,p_event_id              IN NUMBER
4682  ,p_calculate_acctd_flag  IN VARCHAR2
4683  ,p_calculate_g_l_flag    IN VARCHAR2
4684  ,p_actual_flag           IN OUT VARCHAR2
4685  ,p_balance_type_code     OUT VARCHAR2
4686  ,p_gain_or_loss_ref      OUT VARCHAR2
4687  
4688 --FV_CHECK_NUMBER
4689  , p_source_1            IN NUMBER
4690 --FV_CHECK_DATE
4691  , p_source_2            IN DATE
4692 --FV_TREASURY_PAY_NUMBER
4693  , p_source_3            IN NUMBER
4694 --FV_INV_DIST_CCID
4695  , p_source_8            IN NUMBER
4696 --FV_INV_TYPE_LOOKUP_CODE
4697  , p_source_11            IN VARCHAR2
4698 --FV_BUS_FLOW_FV_APP_ID
4699  , p_source_14            IN NUMBER
4700 --FV_BUS_FLOW_TREASURY_DIST_TYPE
4701  , p_source_15            IN VARCHAR2
4702 --FV_BUS_FLOW_TREAS_ENTITY_CODE
4703  , p_source_16            IN VARCHAR2
4704 --FV_PAY_HIST_DIST_ID
4705  , p_source_17            IN NUMBER
4706 --FV_TREASURY_CONFIRMATION_ID
4707  , p_source_18            IN NUMBER
4708 --FV_PAY_DIST_AMOUNT
4709  , p_source_19            IN NUMBER
4710 --FV_INV_CURRENCY_CODE
4711  , p_source_20            IN VARCHAR2
4712 --FV_INV_EXCHANGE_DATE
4713  , p_source_21            IN DATE
4714 --FV_INV_EXCHANGE_RATE
4715  , p_source_22            IN NUMBER
4716 --FV_INV_EXCHANGE_RATE_TYPE
4717  , p_source_23            IN VARCHAR2
4718 )
4719 IS
4720 
4721 l_component_type              VARCHAR2(80);
4722 l_component_code              VARCHAR2(30);
4723 l_component_type_code         VARCHAR2(1);
4724 l_component_appl_id           INTEGER;
4725 l_amb_context_code            VARCHAR2(30);
4726 l_entity_code                 VARCHAR2(30);
4727 l_event_class_code            VARCHAR2(30);
4728 l_ae_header_id                NUMBER;
4729 l_event_type_code             VARCHAR2(30);
4730 l_line_definition_code        VARCHAR2(30);
4731 l_line_definition_owner_code  VARCHAR2(1);
4732 --
4733 -- adr variables
4734 l_segment                     VARCHAR2(30);
4735 l_ccid                        NUMBER;
4736 l_adr_transaction_coa_id      NUMBER;
4737 l_adr_accounting_coa_id       NUMBER;
4738 l_adr_flexfield_segment_code  VARCHAR2(30);
4739 l_adr_flex_value_set_id       NUMBER;
4740 l_adr_value_type_code         VARCHAR2(30);
4741 l_adr_value_combination_id    NUMBER;
4742 l_adr_value_segment_code      VARCHAR2(30);
4743 
4744 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4745 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4746 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4747 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4748 
4749 -- 4262811 Variables ------------------------------------------------------------------------------------------
4750 l_entered_amt_idx             NUMBER;
4751 l_accted_amt_idx              NUMBER;
4752 l_acc_rev_flag                VARCHAR2(1);
4753 l_accrual_line_num            NUMBER;
4754 l_tmp_amt                     NUMBER;
4755 l_acc_rev_natural_side_code   VARCHAR2(1);
4756 
4757 l_num_entries                 NUMBER;
4758 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4759 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4760 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4761 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4762 l_recog_line_1                NUMBER;
4763 l_recog_line_2                NUMBER;
4764 
4765 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4766 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4767 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4768 
4769 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4770 
4771 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4772 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4773 
4774 ---------------------------------------------------------------------------------------------------------------
4775 
4776 
4777 --
4778 -- bulk performance
4779 --
4780 l_balance_type_code           VARCHAR2(1);
4784 --
4781 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4782 l_log_module                  VARCHAR2(240);
4783 
4785 -- Upgrade strategy
4786 --
4787 l_actual_upg_option           VARCHAR2(1);
4788 l_enc_upg_option           VARCHAR2(1);
4789 
4790 --
4791 BEGIN
4792 --
4793 IF g_log_enabled THEN
4794       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
4795 END IF;
4796 --
4797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4798 
4799       trace
4800          (p_msg      => 'BEGIN of AcctLineType_15'
4801          ,p_level    => C_LEVEL_PROCEDURE
4802          ,p_module   => l_log_module);
4803 
4804 END IF;
4805 --
4806 l_component_type             := 'AMB_JLT';
4807 l_component_code             := 'FV_TC_UNPAID_ACCT_DR';
4808 l_component_type_code        := 'S';
4809 l_component_appl_id          :=  8901;
4810 l_amb_context_code           := 'DEFAULT';
4811 l_entity_code                := 'TREASURY_CONFIRMATION';
4812 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
4813 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
4814 l_line_definition_owner_code := 'S';
4815 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
4816 --
4817 l_balance_type_code          := 'A';
4818 l_segment                     := NULL;
4819 l_ccid                        := NULL;
4820 l_adr_transaction_coa_id      := NULL;
4821 l_adr_accounting_coa_id       := NULL;
4822 l_adr_flexfield_segment_code  := NULL;
4823 l_adr_flex_value_set_id       := NULL;
4824 l_adr_value_type_code         := NULL;
4825 l_adr_value_combination_id    := NULL;
4826 l_adr_value_segment_code      := NULL;
4827 
4828 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4829 l_bflow_class_code           := 'FV_TC_PAID_DR';    -- 4219869 Business Flow
4830 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4831 l_budgetary_control_flag     := 'N';
4832 
4833 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4834 l_bflow_applied_to_amt       := NULL; -- 5132302
4835 l_entered_amt_idx            := NULL;          -- 4262811
4836 l_accted_amt_idx             := NULL;          -- 4262811
4837 l_acc_rev_flag               := NULL;          -- 4262811
4838 l_accrual_line_num           := NULL;          -- 4262811
4839 l_tmp_amt                    := NULL;          -- 4262811
4840 --
4841  
4842 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4843     l_balance_type_code <> 'B' THEN
4844 IF NVL(
4845 xla_ae_sources_pkg.GetSystemSourceChar(
4846    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4847  , p_source_type_code      => 'Y'
4848  , p_source_application_id =>  602
4849 ),'
4850 ')  =  'TREASURY_CONFIRM'
4851  THEN 
4852 
4853    --
4854    XLA_AE_LINES_PKG.SetNewLine;
4855 
4856    p_balance_type_code          := l_balance_type_code;
4857    -- set the flag so later we will know whether the gain loss line needs to be created
4858    
4859    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4860      p_actual_flag :='A';
4861    END IF;
4862 
4863    --
4864    -- bulk performance
4865    --
4866    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4867                                       p_header_num   => 0); -- 4262811
4868    --
4869    -- set accounting line options
4870    --
4871    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4872            p_natural_side_code          => 'D'
4873          , p_gain_or_loss_flag          => 'N'
4874          , p_gl_transfer_mode_code      => 'S'
4875          , p_acct_entry_type_code       => 'A'
4876          , p_switch_side_flag           => 'N'
4877          , p_merge_duplicate_code       => 'N'
4878          );
4879    --
4880    l_acc_rev_natural_side_code := 'C';  -- 4262811
4881    -- 
4882    --
4883    -- set accounting line type info
4884    --
4885    xla_ae_lines_pkg.SetAcctLineType
4886       (p_component_type             => l_component_type
4887       ,p_event_type_code            => l_event_type_code
4888       ,p_line_definition_owner_code => l_line_definition_owner_code
4889       ,p_line_definition_code       => l_line_definition_code
4890       ,p_accounting_line_code       => l_component_code
4891       ,p_accounting_line_type_code  => l_component_type_code
4892       ,p_accounting_line_appl_id    => l_component_appl_id
4893       ,p_amb_context_code           => l_amb_context_code
4894       ,p_entity_code                => l_entity_code
4895       ,p_event_class_code           => l_event_class_code);
4896    --
4897    -- set accounting class
4898    --
4899    xla_ae_lines_pkg.SetAcctClass(
4900            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
4901          , p_ae_header_id           => l_ae_header_id
4902          );
4903 
4904    --
4905    -- set rounding class
4906    --
4907    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4908                       'ACCOUNTSPAYABLE';
4909 
4910    --
4911    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4912    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4913    --
4914    -- bulk performance
4915    --
4916    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4917 
4918    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4919       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4920 
4921    -- 4955764
4922    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4926    
4923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4924 
4925    -- 4458381 Public Sector Enh
4927    --
4928    -- set accounting attributes for the line type
4929    --
4930    l_entered_amt_idx := 8;
4931    l_accted_amt_idx  := 13;
4932    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4933    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4934    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
4935    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4936    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
4937    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4938    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
4939    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4940    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_17);
4941    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4942    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
4943    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4944    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
4945    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4946    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
4947    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
4948    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
4949    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
4950    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
4951    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
4952    l_rec_acct_attrs.array_date_value(10)  := p_source_21;
4953    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
4954    l_rec_acct_attrs.array_num_value(11)  := p_source_22;
4955    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
4956    l_rec_acct_attrs.array_char_value(12)  := p_source_23;
4957    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
4958    l_rec_acct_attrs.array_num_value(13)  := p_source_19;
4959 
4960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4962 
4963    ---------------------------------------------------------------------------------------------------------------
4964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4965    ---------------------------------------------------------------------------------------------------------------
4966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4967 
4968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4970 
4971    IF xla_accounting_cache_pkg.GetValueChar
4972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4974    AND l_bflow_method_code = 'PRIOR_ENTRY'
4975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4978        )
4979    THEN
4980          xla_ae_lines_pkg.BflowUpgEntry
4981            (p_business_method_code    => l_bflow_method_code
4982            ,p_business_class_code     => l_bflow_class_code
4983            ,p_balance_type            => l_balance_type_code);
4984    ELSE
4985       NULL;
4986 -- No business flow processing for business flow method of NONE.
4987    END IF;
4988 
4989    --
4990    -- call description
4991    --
4992    
4993 xla_ae_lines_pkg.SetLineDescription(
4994    p_ae_header_id => l_ae_header_id
4995   ,p_description  => Description_1 (
4996      p_application_id         => p_application_id
4997    , p_ae_header_id           => l_ae_header_id 
4998 , p_source_1 => p_source_1
4999 , p_source_2 => p_source_2
5000 , p_source_3 => p_source_3
5001    )
5002 );
5003 
5004 
5005    --
5006    -- call ADRs
5007    -- Bug 4922099
5008    --
5009    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5010         (NVL(l_actual_upg_option, 'N') = 'O') OR
5011         (NVL(l_enc_upg_option, 'N') = 'O')
5012       )
5013    THEN
5014    NULL;
5015    --
5016    --
5017    
5018   l_ccid := AcctDerRule_7(
5019            p_application_id           => p_application_id
5020          , p_ae_header_id             => l_ae_header_id 
5021 , p_source_8 => p_source_8
5022          , x_transaction_coa_id       => l_adr_transaction_coa_id
5023          , x_accounting_coa_id        => l_adr_accounting_coa_id
5024          , x_value_type_code          => l_adr_value_type_code
5025          , p_side                     => 'NA'
5026    );
5027 
5028    xla_ae_lines_pkg.set_ccid(
5029     p_code_combination_id          => l_ccid
5030   , p_value_type_code              => l_adr_value_type_code
5031   , p_transaction_coa_id           => l_adr_transaction_coa_id
5032   , p_accounting_coa_id            => l_adr_accounting_coa_id
5033   , p_adr_code                     => 'FV_INV_DIST_ACCOUNT'
5034   , p_adr_type_code                => 'S'
5035   , p_component_type               => l_component_type
5036   , p_component_code               => l_component_code
5037   , p_component_type_code          => l_component_type_code
5038   , p_component_appl_id            => l_component_appl_id
5039   , p_amb_context_code             => l_amb_context_code
5040   , p_side                         => 'NA'
5041   );
5042 
5043 
5044    l_segment := AcctDerRule_5(
5048          , x_transaction_coa_id       => l_adr_transaction_coa_id
5045            p_application_id           => p_application_id
5046          , p_ae_header_id             => l_ae_header_id 
5047 , p_source_11 => p_source_11
5049          , x_accounting_coa_id        => l_adr_accounting_coa_id
5050          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
5051          , x_flex_value_set_id        => l_adr_flex_value_set_id
5052          , x_value_type_code          => l_adr_value_type_code
5053          , x_value_combination_id     => l_adr_value_combination_id
5054          , x_value_segment_code       => l_adr_value_segment_code
5055          , p_side                     => 'NA'
5056          , p_override_seg_flag        => 'Y'
5057    );
5058 
5059    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
5060 
5061       xla_ae_lines_pkg.set_segment(
5062           p_to_segment_code         => 'GL_ACCOUNT'
5063         , p_segment_value           => l_segment
5064         , p_from_segment_code       => l_adr_value_segment_code
5065         , p_from_combination_id     => l_adr_value_combination_id
5066         , p_value_type_code         => l_adr_value_type_code
5067         , p_transaction_coa_id      => l_adr_transaction_coa_id
5068         , p_accounting_coa_id       => l_adr_accounting_coa_id
5069         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
5070         , p_flex_value_set_id       => l_adr_flex_value_set_id
5071         , p_adr_code                => 'FV_4X0101_TREASURY_PAY_ACCT'
5072         , p_adr_type_code           => 'S'
5073         , p_component_type          => l_component_type
5074         , p_component_code          => l_component_code
5075         , p_component_type_code     => l_component_type_code
5076         , p_component_appl_id       => l_component_appl_id
5077         , p_amb_context_code        => l_amb_context_code
5078         , p_entity_code             => 'TREASURY_CONFIRMATION'
5079         , p_event_class_code        => 'TREASURY_ACCOMPLISHMENT'
5080         , p_side                    => 'NA'
5081         );
5082 
5083   END IF;
5084 
5085    --
5086    --
5087    END IF;
5088    --
5089    -- Bug 4922099
5090    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5091           (NVL(l_enc_upg_option, 'N') = 'O')
5092         ) AND
5093         (l_bflow_method_code = 'PRIOR_ENTRY')
5094       )
5095    THEN
5096       IF
5097       --
5098       1 = 2
5099       --
5100       THEN
5101       xla_accounting_err_pkg.build_message
5102                                     (p_appli_s_name            => 'XLA'
5103                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5104                                     ,p_token_1                 => 'LINE_NUMBER'
5105                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5106                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5107                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5108                                                                              l_component_type
5109                                                                             ,l_component_code
5110                                                                             ,l_component_type_code
5111                                                                             ,l_component_appl_id
5112                                                                             ,l_amb_context_code
5113                                                                             ,l_entity_code
5114                                                                             ,l_event_class_code
5115                                                                            )
5116                                     ,p_token_3                 => 'OWNER'
5117                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5118                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5119                                                                           ,p_lookup_code    => l_component_type_code
5120                                                                          )
5121                                     ,p_token_4                 => 'PRODUCT_NAME'
5122                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5123                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5124                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5125                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5126                                     ,p_ae_header_id            =>  NULL
5127                                        );
5128 
5129         IF (C_LEVEL_ERROR>= g_log_level) THEN
5130                  trace
5131                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5132                       ,p_level    => C_LEVEL_ERROR
5133                       ,p_module   => l_log_module);
5134         END IF;
5135       END IF;
5136    END IF;
5137    --
5138    --
5139    ------------------------------------------------------------------------------------------------
5140    -- 4219869 Business Flow
5141    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5142    -- Prior Entry.  Currently, the following code is always generated.
5143    ------------------------------------------------------------------------------------------------
5144    XLA_AE_LINES_PKG.ValidateCurrentLine;
5145 
5146    ------------------------------------------------------------------------------------
5147    -- 4219869 Business Flow
5151 
5148    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5149    ------------------------------------------------------------------------------------
5150    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5152    ----------------------------------------------------------------------------------
5153    -- 4219869 Business Flow
5154    -- Update journal entry status -- Need to generate this within IF <condition>
5155    ----------------------------------------------------------------------------------
5156    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5157          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5158          ,p_balance_type_code => l_balance_type_code
5159          );
5160 
5161    -------------------------------------------------------------------------------------------
5162    -- 4262811 - Generate the Accrual Reversal lines
5163    -------------------------------------------------------------------------------------------
5164    BEGIN
5165       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5166                               (g_array_event(p_event_id).array_value_num('header_index'));
5167       IF l_acc_rev_flag IS NULL THEN
5168          l_acc_rev_flag := 'N';
5169       END IF;
5170    EXCEPTION
5171       WHEN OTHERS THEN
5172          l_acc_rev_flag := 'N';
5173    END;
5174    --
5175    IF (l_acc_rev_flag = 'Y') THEN
5176 
5177        -- 4645092  ------------------------------------------------------------------------------
5178        -- To allow MPA report to determine if it should generate report process
5179        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5180        ------------------------------------------------------------------------------------------
5181 
5182        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5183        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5184 
5185        --
5186        -- Update the line information that should be overwritten
5187        --
5188        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5189                                          p_header_num   => 1);
5190        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5191 
5192        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5193 
5194        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5195           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5196        END IF;
5197 
5198       --
5199       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5200       --
5201       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5202           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5203       ELSE
5204           ---------------------------------------------------------------------------------------------------
5205           -- 4262811a Switch Sign
5206           ---------------------------------------------------------------------------------------------------
5207           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5208           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5209                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5210           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5211                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5212           -- 5132302
5213           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5214                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5215 
5216       END IF;
5217 
5218       -- 4955764
5219       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5220       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5221 
5222 
5223       XLA_AE_LINES_PKG.ValidateCurrentLine;
5224       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5225 
5226       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5227                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5228                ,p_balance_type_code => l_balance_type_code);
5229 
5230    END IF;
5231 
5232    -----------------------------------------------------------------------------------------
5233    -- 4262811 Multiperiod Accounting
5234    -----------------------------------------------------------------------------------------
5235      -- No MPA option is assigned.
5236 
5237 
5238 END IF;
5239 END IF;
5240 --
5241 
5242 --
5243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5244    trace
5245       (p_msg      => 'END of AcctLineType_15'
5246       ,p_level    => C_LEVEL_PROCEDURE
5247       ,p_module   => l_log_module);
5248 END IF;
5249 --
5250 EXCEPTION
5251   WHEN xla_exceptions_pkg.application_exception THEN
5252       RAISE;
5253   WHEN OTHERS THEN
5254        xla_exceptions_pkg.raise_message
5255            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_15');
5256 END AcctLineType_15;
5257 --
5258 
5259 ---------------------------------------
5260 --
5261 -- PRIVATE FUNCTION
5262 --         AcctLineType_16
5263 --
5264 ---------------------------------------
5265 PROCEDURE AcctLineType_16 (
5266   p_application_id        IN NUMBER
5267  ,p_event_id              IN NUMBER
5268  ,p_calculate_acctd_flag  IN VARCHAR2
5272  ,p_gain_or_loss_ref      OUT VARCHAR2
5269  ,p_calculate_g_l_flag    IN VARCHAR2
5270  ,p_actual_flag           IN OUT VARCHAR2
5271  ,p_balance_type_code     OUT VARCHAR2
5273  
5274 --FV_BUS_FLOW_FV_APP_ID
5275  , p_source_14            IN NUMBER
5276 --FV_BUS_FLOW_TREASURY_DIST_TYPE
5277  , p_source_15            IN VARCHAR2
5278 --FV_BUS_FLOW_TREAS_ENTITY_CODE
5279  , p_source_16            IN VARCHAR2
5280 --FV_PAY_HIST_DIST_ID
5281  , p_source_17            IN NUMBER
5282 --FV_TREASURY_CONFIRMATION_ID
5283  , p_source_18            IN NUMBER
5284 --FV_PAY_DIST_AMOUNT
5285  , p_source_19            IN NUMBER
5286 --FV_INV_CURRENCY_CODE
5287  , p_source_20            IN VARCHAR2
5288 --FV_REV_PAY_HIST_DIST_ID
5289  , p_source_24            IN NUMBER
5290 )
5291 IS
5292 
5293 l_component_type              VARCHAR2(80);
5294 l_component_code              VARCHAR2(30);
5295 l_component_type_code         VARCHAR2(1);
5296 l_component_appl_id           INTEGER;
5297 l_amb_context_code            VARCHAR2(30);
5298 l_entity_code                 VARCHAR2(30);
5299 l_event_class_code            VARCHAR2(30);
5300 l_ae_header_id                NUMBER;
5301 l_event_type_code             VARCHAR2(30);
5302 l_line_definition_code        VARCHAR2(30);
5303 l_line_definition_owner_code  VARCHAR2(1);
5304 --
5305 -- adr variables
5306 l_segment                     VARCHAR2(30);
5307 l_ccid                        NUMBER;
5308 l_adr_transaction_coa_id      NUMBER;
5309 l_adr_accounting_coa_id       NUMBER;
5310 l_adr_flexfield_segment_code  VARCHAR2(30);
5311 l_adr_flex_value_set_id       NUMBER;
5312 l_adr_value_type_code         VARCHAR2(30);
5313 l_adr_value_combination_id    NUMBER;
5314 l_adr_value_segment_code      VARCHAR2(30);
5315 
5316 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5317 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5318 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5319 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5320 
5321 -- 4262811 Variables ------------------------------------------------------------------------------------------
5322 l_entered_amt_idx             NUMBER;
5323 l_accted_amt_idx              NUMBER;
5324 l_acc_rev_flag                VARCHAR2(1);
5325 l_accrual_line_num            NUMBER;
5326 l_tmp_amt                     NUMBER;
5327 l_acc_rev_natural_side_code   VARCHAR2(1);
5328 
5329 l_num_entries                 NUMBER;
5330 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5331 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5332 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5333 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5334 l_recog_line_1                NUMBER;
5335 l_recog_line_2                NUMBER;
5336 
5337 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5338 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5339 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5340 
5341 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5342 
5343 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5344 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5345 
5346 ---------------------------------------------------------------------------------------------------------------
5347 
5348 
5349 --
5350 -- bulk performance
5351 --
5352 l_balance_type_code           VARCHAR2(1);
5353 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5354 l_log_module                  VARCHAR2(240);
5355 
5356 --
5357 -- Upgrade strategy
5358 --
5359 l_actual_upg_option           VARCHAR2(1);
5360 l_enc_upg_option           VARCHAR2(1);
5361 
5362 --
5363 BEGIN
5364 --
5365 IF g_log_enabled THEN
5366       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
5367 END IF;
5368 --
5369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5370 
5371       trace
5372          (p_msg      => 'BEGIN of AcctLineType_16'
5373          ,p_level    => C_LEVEL_PROCEDURE
5374          ,p_module   => l_log_module);
5375 
5376 END IF;
5377 --
5378 l_component_type             := 'AMB_JLT';
5379 l_component_code             := 'FV_TC_UNPAID_ACCT_REV_CR';
5380 l_component_type_code        := 'S';
5381 l_component_appl_id          :=  8901;
5382 l_amb_context_code           := 'DEFAULT';
5383 l_entity_code                := 'TREASURY_CONFIRMATION';
5384 l_event_class_code           := 'TREASURY_ACCOMPLISHMENT';
5385 l_event_type_code            := 'TREASURY_ACCOMPLISHMENT_ALL';
5386 l_line_definition_owner_code := 'S';
5387 l_line_definition_code       := 'FV_TREASURY_PAYMENTS_ALL';
5388 --
5389 l_balance_type_code          := 'A';
5390 l_segment                     := NULL;
5391 l_ccid                        := NULL;
5392 l_adr_transaction_coa_id      := NULL;
5393 l_adr_accounting_coa_id       := NULL;
5394 l_adr_flexfield_segment_code  := NULL;
5395 l_adr_flex_value_set_id       := NULL;
5396 l_adr_value_type_code         := NULL;
5397 l_adr_value_combination_id    := NULL;
5398 l_adr_value_segment_code      := NULL;
5399 
5400 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
5401 l_bflow_class_code           := 'FV_TC_PAID_DR';    -- 4219869 Business Flow
5402 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
5403 l_budgetary_control_flag     := 'N';
5404 
5405 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5406 l_bflow_applied_to_amt       := NULL; -- 5132302
5410 l_accrual_line_num           := NULL;          -- 4262811
5407 l_entered_amt_idx            := NULL;          -- 4262811
5408 l_accted_amt_idx             := NULL;          -- 4262811
5409 l_acc_rev_flag               := NULL;          -- 4262811
5411 l_tmp_amt                    := NULL;          -- 4262811
5412 --
5413  
5414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5415     l_balance_type_code <> 'B' THEN
5416 IF NVL(
5417 xla_ae_sources_pkg.GetSystemSourceChar(
5418    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5419  , p_source_type_code      => 'Y'
5420  , p_source_application_id =>  602
5421 ),'
5422 ')  =  'TREASURY_BACKOUT' OR 
5423 NVL(
5424 xla_ae_sources_pkg.GetSystemSourceChar(
5425    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5426  , p_source_type_code      => 'Y'
5427  , p_source_application_id =>  602
5428 ),'
5429 ')  =  'TREASURY_VOID'
5430  THEN 
5431 
5432    --
5433    XLA_AE_LINES_PKG.SetNewLine;
5434 
5435    p_balance_type_code          := l_balance_type_code;
5436    -- set the flag so later we will know whether the gain loss line needs to be created
5437    
5438    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5439      p_actual_flag :='A';
5440    END IF;
5441 
5442    --
5443    -- bulk performance
5444    --
5445    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5446                                       p_header_num   => 0); -- 4262811
5447    --
5448    -- set accounting line options
5449    --
5450    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5451            p_natural_side_code          => 'C'
5452          , p_gain_or_loss_flag          => 'N'
5453          , p_gl_transfer_mode_code      => 'S'
5454          , p_acct_entry_type_code       => 'A'
5455          , p_switch_side_flag           => 'N'
5456          , p_merge_duplicate_code       => 'N'
5457          );
5458    --
5459    l_acc_rev_natural_side_code := 'D';  -- 4262811
5460    -- 
5461    --
5462    -- set accounting line type info
5463    --
5464    xla_ae_lines_pkg.SetAcctLineType
5465       (p_component_type             => l_component_type
5466       ,p_event_type_code            => l_event_type_code
5467       ,p_line_definition_owner_code => l_line_definition_owner_code
5468       ,p_line_definition_code       => l_line_definition_code
5469       ,p_accounting_line_code       => l_component_code
5470       ,p_accounting_line_type_code  => l_component_type_code
5471       ,p_accounting_line_appl_id    => l_component_appl_id
5472       ,p_amb_context_code           => l_amb_context_code
5473       ,p_entity_code                => l_entity_code
5474       ,p_event_class_code           => l_event_class_code);
5475    --
5476    -- set accounting class
5477    --
5478    xla_ae_lines_pkg.SetAcctClass(
5479            p_accounting_class_code  => 'ACCOUNTSPAYABLE'
5480          , p_ae_header_id           => l_ae_header_id
5481          );
5482 
5483    --
5484    -- set rounding class
5485    --
5486    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5487                       'ACCOUNTSPAYABLE';
5488 
5489    --
5490    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5491    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5492    --
5493    -- bulk performance
5494    --
5495    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5496 
5497    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5498       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5499 
5500    -- 4955764
5501    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5503 
5504    -- 4458381 Public Sector Enh
5505    
5506    --
5507    -- set accounting attributes for the line type
5508    --
5509    l_entered_amt_idx := 8;
5510    l_accted_amt_idx  := 10;
5511    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5512    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
5513    l_rec_acct_attrs.array_num_value(1)  := p_source_14;
5514    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5515    l_rec_acct_attrs.array_char_value(2)  := p_source_15;
5516    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
5517    l_rec_acct_attrs.array_char_value(3)  := p_source_16;
5518    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
5519    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_24);
5520    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5521    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_18);
5522    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
5523    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_17);
5524    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
5525    l_rec_acct_attrs.array_char_value(7)  := p_source_15;
5526    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
5527    l_rec_acct_attrs.array_num_value(8)  := p_source_19;
5528    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
5529    l_rec_acct_attrs.array_char_value(9)  := p_source_20;
5530    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
5531    l_rec_acct_attrs.array_num_value(10)  := p_source_19;
5532 
5533    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5537    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5534    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5535 
5536    ---------------------------------------------------------------------------------------------------------------
5538    ---------------------------------------------------------------------------------------------------------------
5539    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5540 
5541    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5542    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5543 
5544    IF xla_accounting_cache_pkg.GetValueChar
5545          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5546          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5547    AND l_bflow_method_code = 'PRIOR_ENTRY'
5548 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5549    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5550          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5551        )
5552    THEN
5553          xla_ae_lines_pkg.BflowUpgEntry
5554            (p_business_method_code    => l_bflow_method_code
5555            ,p_business_class_code     => l_bflow_class_code
5556            ,p_balance_type            => l_balance_type_code);
5557    ELSE
5558       NULL;
5559 XLA_AE_LINES_PKG.business_flow_validation(
5560                                 p_business_method_code     => l_bflow_method_code
5561                                ,p_business_class_code      => l_bflow_class_code
5562                                ,p_inherit_description_flag => l_inherit_desc_flag);
5563    END IF;
5564 
5565    --
5566    -- call description
5567    --
5568    -- No description or it is inherited.
5569    --
5570    -- call ADRs
5571    -- Bug 4922099
5572    --
5573    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5574         (NVL(l_actual_upg_option, 'N') = 'O') OR
5575         (NVL(l_enc_upg_option, 'N') = 'O')
5576       )
5577    THEN
5578    NULL;
5579    --
5580    --
5581    
5582    --
5583    --
5584    END IF;
5585    --
5586    -- Bug 4922099
5587    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5588           (NVL(l_enc_upg_option, 'N') = 'O')
5589         ) AND
5590         (l_bflow_method_code = 'PRIOR_ENTRY')
5591       )
5592    THEN
5593       IF
5594       --
5595       1 = 1
5596       --
5597       THEN
5598       xla_accounting_err_pkg.build_message
5599                                     (p_appli_s_name            => 'XLA'
5600                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5601                                     ,p_token_1                 => 'LINE_NUMBER'
5602                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5603                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5604                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5605                                                                              l_component_type
5606                                                                             ,l_component_code
5607                                                                             ,l_component_type_code
5608                                                                             ,l_component_appl_id
5609                                                                             ,l_amb_context_code
5610                                                                             ,l_entity_code
5611                                                                             ,l_event_class_code
5612                                                                            )
5613                                     ,p_token_3                 => 'OWNER'
5614                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5615                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5616                                                                           ,p_lookup_code    => l_component_type_code
5617                                                                          )
5618                                     ,p_token_4                 => 'PRODUCT_NAME'
5619                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5620                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5621                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5622                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5623                                     ,p_ae_header_id            =>  NULL
5624                                        );
5625 
5626         IF (C_LEVEL_ERROR>= g_log_level) THEN
5627                  trace
5628                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5629                       ,p_level    => C_LEVEL_ERROR
5630                       ,p_module   => l_log_module);
5631         END IF;
5632       END IF;
5633    END IF;
5634    --
5635    --
5636    ------------------------------------------------------------------------------------------------
5637    -- 4219869 Business Flow
5638    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5639    -- Prior Entry.  Currently, the following code is always generated.
5640    ------------------------------------------------------------------------------------------------
5641    -- No ValidateCurrentLine for business flow method of Prior Entry
5642 
5646    ------------------------------------------------------------------------------------
5643    ------------------------------------------------------------------------------------
5644    -- 4219869 Business Flow
5645    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5647    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5648 
5649    ----------------------------------------------------------------------------------
5650    -- 4219869 Business Flow
5651    -- Update journal entry status -- Need to generate this within IF <condition>
5652    ----------------------------------------------------------------------------------
5653    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5654          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5655          ,p_balance_type_code => l_balance_type_code
5656          );
5657 
5658    -------------------------------------------------------------------------------------------
5659    -- 4262811 - Generate the Accrual Reversal lines
5660    -------------------------------------------------------------------------------------------
5661    BEGIN
5662       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5663                               (g_array_event(p_event_id).array_value_num('header_index'));
5664       IF l_acc_rev_flag IS NULL THEN
5665          l_acc_rev_flag := 'N';
5666       END IF;
5667    EXCEPTION
5668       WHEN OTHERS THEN
5669          l_acc_rev_flag := 'N';
5670    END;
5671    --
5672    IF (l_acc_rev_flag = 'Y') THEN
5673 
5674        -- 4645092  ------------------------------------------------------------------------------
5675        -- To allow MPA report to determine if it should generate report process
5676        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5677        ------------------------------------------------------------------------------------------
5678 
5679        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5680        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5681 
5682        --
5683        -- Update the line information that should be overwritten
5684        --
5685        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5686                                          p_header_num   => 1);
5687        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5688 
5689        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5690 
5691        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5692           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5693        END IF;
5694 
5695       --
5696       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5697       --
5698       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5699           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5700       ELSE
5701           ---------------------------------------------------------------------------------------------------
5702           -- 4262811a Switch Sign
5703           ---------------------------------------------------------------------------------------------------
5704           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5705           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5706                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5707           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5708                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5709           -- 5132302
5710           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5711                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5712 
5713       END IF;
5714 
5715       -- 4955764
5716       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5717       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5718 
5719 
5720       XLA_AE_LINES_PKG.ValidateCurrentLine;
5721       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5722 
5723       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5724                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5725                ,p_balance_type_code => l_balance_type_code);
5726 
5727    END IF;
5728 
5729    -----------------------------------------------------------------------------------------
5730    -- 4262811 Multiperiod Accounting
5731    -----------------------------------------------------------------------------------------
5732      -- No MPA option is assigned.
5733 
5734 
5735 END IF;
5736 END IF;
5737 --
5738 
5739 --
5740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5741    trace
5742       (p_msg      => 'END of AcctLineType_16'
5743       ,p_level    => C_LEVEL_PROCEDURE
5744       ,p_module   => l_log_module);
5745 END IF;
5746 --
5747 EXCEPTION
5748   WHEN xla_exceptions_pkg.application_exception THEN
5749       RAISE;
5750   WHEN OTHERS THEN
5751        xla_exceptions_pkg.raise_message
5752            (p_location => 'XLA_08901_AAD_S_000002_PKG.AcctLineType_16');
5753 END AcctLineType_16;
5754 --
5755 
5756 ---------------------------------------
5757 --
5758 -- PRIVATE PROCEDURE
5759 --         insert_sources_17
5760 --
5761 ----------------------------------------
5762 --
5763 PROCEDURE insert_sources_17(
5764                                 p_target_ledger_id       IN NUMBER
5768                               , p_pad_end_date           IN DATE
5765                               , p_language               IN VARCHAR2
5766                               , p_sla_ledger_id          IN NUMBER
5767                               , p_pad_start_date         IN DATE
5769                          )
5770 IS
5771 
5772 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_EXECUTION_ALL';
5773 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BUDGET_EXECUTION';
5774 p_apps_owner                   VARCHAR2(30);
5775 l_log_module                   VARCHAR2(240);
5776 BEGIN
5777 IF g_log_enabled THEN
5778       l_log_module := C_DEFAULT_MODULE||'.insert_sources_17';
5779 END IF;
5780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5781 
5782       trace
5783          (p_msg      => 'BEGIN of insert_sources_17'
5784          ,p_level    => C_LEVEL_PROCEDURE
5785          ,p_module   => l_log_module);
5786 
5787 END IF;
5788 
5789 -- select APPS owner
5790 SELECT oracle_username
5791   INTO p_apps_owner
5792   FROM fnd_oracle_userid
5793  WHERE read_only_flag = 'U'
5794 ;
5795 
5796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5797       trace
5798          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
5799                         ' - p_language = '||p_language||
5800                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
5801                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
5802                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
5803                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
5804          ,p_level    => C_LEVEL_STATEMENT
5805          ,p_module   => l_log_module);
5806 END IF;
5807 
5808 
5809 --
5810 INSERT INTO xla_diag_sources --hdr2
5811 (
5812         event_id
5813       , ledger_id
5814       , sla_ledger_id
5815       , description_language
5816       , object_name
5817       , object_type_code
5818       , line_number
5819       , source_application_id
5820       , source_type_code
5821       , source_code
5822       , source_value
5823       , source_meaning
5824       , created_by
5825       , creation_date
5826       , last_update_date
5827       , last_updated_by
5828       , last_update_login
5829       , program_update_date
5830       , program_application_id
5831       , program_id
5832       , request_id
5833 )
5834 SELECT
5835         event_id
5836       , p_target_ledger_id
5837       , p_sla_ledger_id
5838       , p_language
5839       , object_name
5840       , object_type_code
5841       , line_number
5842       , source_application_id
5843       , source_type_code
5844       , source_code
5845       , SUBSTR(source_value ,1,1996)
5846       , SUBSTR(source_meaning ,1,200)
5847       , xla_environment_pkg.g_Usr_Id
5848       , TRUNC(SYSDATE)
5849       , TRUNC(SYSDATE)
5850       , xla_environment_pkg.g_Usr_Id
5851       , xla_environment_pkg.g_Login_Id
5852       , TRUNC(SYSDATE)
5853       , xla_environment_pkg.g_Prog_Appl_Id
5854       , xla_environment_pkg.g_Prog_Id
5855       , xla_environment_pkg.g_Req_Id
5856   FROM (
5857        SELECT xet.event_id                  event_id
5858             , 0                          line_number
5859             , CASE r
5860                WHEN 1 THEN 'FV_BE_BA_FD_HDR_V' 
5861                 
5862                ELSE null
5863               END                           object_name
5864             , CASE r
5865                 WHEN 1 THEN 'HEADER' 
5866                 
5867                 ELSE null
5868               END                           object_type_code
5869             , CASE r
5870                 WHEN 1 THEN '8901' 
5871                 
5872                 ELSE null
5873               END                           source_application_id
5874             , 'S'             source_type_code
5875             , CASE r
5876                 WHEN 1 THEN 'GL_DATE' 
5877                 
5878                 ELSE null
5879               END                           source_code
5880             , CASE r
5881                 WHEN 1 THEN TO_CHAR(h1.GL_DATE)
5882                 
5883                 ELSE null
5884               END                           source_value
5885             , null              source_meaning
5886          FROM xla_events_gt     xet  
5887       , FV_BE_BA_FD_HDR_V  h1
5888              ,(select rownum r from all_objects where rownum <= 1 and owner = p_apps_owner)
5889          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
5890            AND xet.event_class_code = C_EVENT_CLASS_CODE
5891               AND h1.event_id = xet.event_id
5892 
5893 )
5894 ;
5895 --
5896 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5897 
5898       trace
5899          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
5900          ,p_level    => C_LEVEL_STATEMENT
5901          ,p_module   => l_log_module);
5902 
5903 END IF;
5904 --
5905 
5906 
5907  
5908 
5909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5910       trace
5911          (p_msg      => 'END of insert_sources_17'
5912          ,p_level    => C_LEVEL_PROCEDURE
5913          ,p_module   => l_log_module);
5914 END IF;
5915 EXCEPTION
5916   WHEN xla_exceptions_pkg.application_exception THEN
5917       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
5918             trace
5919                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
5920                ,p_level    => C_LEVEL_EXCEPTION
5921                ,p_module   => l_log_module);
5922       END IF;
5923       RAISE;
5924   WHEN OTHERS THEN
5928                ,p_level    => C_LEVEL_EXCEPTION
5925       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
5926             trace
5927                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
5929                ,p_module   => l_log_module);
5930        END IF;
5931        xla_exceptions_pkg.raise_message
5932            (p_location => 'XLA_08901_AAD_S_000002_PKG.insert_sources_17');
5933 END insert_sources_17;
5934 --
5935 
5936 ---------------------------------------
5937 --
5938 -- PRIVATE FUNCTION
5939 --         EventClass_17
5940 --
5941 ----------------------------------------
5942 --
5943 FUNCTION EventClass_17
5944        (p_application_id         IN NUMBER
5945        ,p_base_ledger_id         IN NUMBER
5946        ,p_target_ledger_id       IN NUMBER
5947        ,p_language               IN VARCHAR2
5948        ,p_currency_code          IN VARCHAR2
5949        ,p_sla_ledger_id          IN NUMBER
5950        ,p_pad_start_date         IN DATE
5951        ,p_pad_end_date           IN DATE
5952        ,p_primary_ledger_id      IN NUMBER)
5953 RETURN BOOLEAN IS
5954 --
5955 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_EXECUTION_ALL';
5956 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BUDGET_EXECUTION';
5957 
5958 l_calculate_acctd_flag   VARCHAR2(1) :='N';
5959 l_calculate_g_l_flag     VARCHAR2(1) :='N';
5960 --
5961 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5962 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5963 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5964 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5965 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5966 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5967 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5968 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5969 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5970 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5971 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5972 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5973 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5974 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
5975 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5976 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5977 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5978 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
5979 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5980 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5981 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5982 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
5983 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
5984 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
5985 
5986 l_event_id                             NUMBER;
5987 l_previous_event_id                    NUMBER;
5988 l_first_event_id                       NUMBER;
5989 l_last_event_id                        NUMBER;
5990 
5991 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
5992 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
5993 --
5994 --
5995 l_result                    BOOLEAN := TRUE;
5996 l_rows                      NUMBER  := 1000;
5997 l_event_type_name           VARCHAR2(80) := 'All';
5998 l_event_class_name          VARCHAR2(80) := 'Budget Execution Transactions';
5999 l_description               VARCHAR2(4000);
6000 l_transaction_reversal      NUMBER;
6001 l_ae_header_id              NUMBER;
6002 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
6003 l_log_module                VARCHAR2(240);
6004 --
6005 l_acct_reversal_source      VARCHAR2(30);
6006 l_trx_reversal_source       VARCHAR2(30);
6007 
6008 l_continue_with_lines       BOOLEAN := TRUE;
6009 --
6010 l_acc_rev_gl_date_source    DATE;                      -- 4262811
6011 --
6012 type t_array_event_id is table of number index by binary_integer;
6013 
6014 l_rec_array_event                    t_rec_array_event;
6015 l_null_rec_array_event               t_rec_array_event;
6016 l_array_ae_header_id                 xla_number_array_type;
6017 l_actual_flag                        VARCHAR2(1) := NULL;
6018 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
6019 l_balance_type_code                  VARCHAR2(1) :=NULL;
6020 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
6021 
6022 --
6023 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
6024 --
6025 
6026 TYPE t_array_source_25 IS TABLE OF FV_BE_BA_FD_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
6027 
6028 
6029 l_array_source_25              t_array_source_25;
6030 
6031 
6032 --
6033 CURSOR header_cur
6034 IS
6035 SELECT /*+ leading(xet) cardinality(xet,1) */
6036 -- Event Class Code: BUDGET_EXECUTION
6037     xet.entity_id
6038    ,xet.legal_entity_id
6039    ,xet.entity_code
6040    ,xet.transaction_number
6041    ,xet.event_id
6042    ,xet.event_class_code
6043    ,xet.event_type_code
6044    ,xet.event_number
6045    ,xet.event_date
6046    ,xet.transaction_date
6047    ,xet.reference_num_1
6048    ,xet.reference_num_2
6049    ,xet.reference_num_3
6050    ,xet.reference_num_4
6051    ,xet.reference_char_1
6052    ,xet.reference_char_2
6056    ,xet.reference_date_2
6053    ,xet.reference_char_3
6054    ,xet.reference_char_4
6055    ,xet.reference_date_1
6057    ,xet.reference_date_3
6058    ,xet.reference_date_4
6059    ,xet.event_created_by
6060    ,xet.budgetary_control_flag 
6061   , h1.GL_DATE    source_25
6062   FROM xla_events_gt     xet 
6063   , FV_BE_BA_FD_HDR_V  h1
6064  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
6065    and xet.event_class_code = C_EVENT_CLASS_CODE
6066    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
6067 
6068  ORDER BY event_id
6069 ;
6070 
6071 
6072 --
6073 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
6074 IS
6075 SELECT  /*+ leading(xet) cardinality(xet,1) */
6076 -- Event Class Code: BUDGET_EXECUTION
6077     xet.entity_id
6078    ,xet.legal_entity_id
6079    ,xet.entity_code
6080    ,xet.transaction_number
6081    ,xet.event_id
6082    ,xet.event_class_code
6083    ,xet.event_type_code
6084    ,xet.event_number
6085    ,xet.event_date
6086    ,xet.transaction_date
6087    ,xet.reference_num_1
6088    ,xet.reference_num_2
6089    ,xet.reference_num_3
6090    ,xet.reference_num_4
6091    ,xet.reference_char_1
6092    ,xet.reference_char_2
6093    ,xet.reference_char_3
6094    ,xet.reference_char_4
6095    ,xet.reference_date_1
6096    ,xet.reference_date_2
6097    ,xet.reference_date_3
6098    ,xet.reference_date_4
6099    ,xet.event_created_by
6100    ,xet.budgetary_control_flag
6101  , 0 
6102   FROM xla_events_gt     xet  
6103  WHERE xet.event_id between x_first_event_id and x_last_event_id
6104    and xet.event_date between p_pad_start_date and p_pad_end_date
6105    and xet.event_class_code = C_EVENT_CLASS_CODE
6106    and xet.event_status_code <> 'N'  ;
6107 
6108 --
6109 BEGIN
6110 IF g_log_enabled THEN
6111    l_log_module := C_DEFAULT_MODULE||'.EventClass_17';
6112 END IF;
6113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6114    trace
6115       (p_msg      => 'BEGIN of EventClass_17'
6116       ,p_level    => C_LEVEL_PROCEDURE
6117       ,p_module   => l_log_module);
6118 END IF;
6119 
6120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6121    trace
6122       (p_msg      => 'p_application_id = '||p_application_id||
6123                      ' - p_base_ledger_id = '||p_base_ledger_id||
6124                      ' - p_target_ledger_id  = '||p_target_ledger_id||
6125                      ' - p_language = '||p_language||
6126                      ' - p_currency_code = '||p_currency_code||
6127                      ' - p_sla_ledger_id = '||p_sla_ledger_id
6128       ,p_level    => C_LEVEL_STATEMENT
6129       ,p_module   => l_log_module);
6130 END IF;
6131 --
6132 -- initialze arrays
6133 --
6134 g_array_event.DELETE;
6135 l_rec_array_event := l_null_rec_array_event;
6136 --
6137 --------------------------------------
6138 -- 4262811 Initialze MPA Line Number
6139 --------------------------------------
6140 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
6141 
6142 --
6143 
6144 --
6145 OPEN header_cur;
6146 --
6147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6148    trace
6149    (p_msg      => 'SQL - FETCH header_cur'
6150    ,p_level    => C_LEVEL_STATEMENT
6151    ,p_module   => l_log_module);
6152 END IF;
6153 --
6154 LOOP
6155 FETCH header_cur BULK COLLECT INTO
6156         l_array_entity_id
6157       , l_array_legal_entity_id
6158       , l_array_entity_code
6159       , l_array_transaction_num
6160       , l_array_event_id
6161       , l_array_class_code
6162       , l_array_event_type
6163       , l_array_event_number
6164       , l_array_event_date
6165       , l_array_transaction_date
6166       , l_array_reference_num_1
6167       , l_array_reference_num_2
6168       , l_array_reference_num_3
6169       , l_array_reference_num_4
6170       , l_array_reference_char_1
6171       , l_array_reference_char_2
6172       , l_array_reference_char_3
6173       , l_array_reference_char_4
6174       , l_array_reference_date_1
6175       , l_array_reference_date_2
6176       , l_array_reference_date_3
6177       , l_array_reference_date_4
6178       , l_array_event_created_by
6179       , l_array_budgetary_control_flag 
6180       , l_array_source_25
6181       LIMIT l_rows;
6182 --
6183 IF (C_LEVEL_EVENT >= g_log_level) THEN
6184    trace
6185    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
6186    ,p_level    => C_LEVEL_EVENT
6187    ,p_module   => l_log_module);
6188 END IF;
6189 --
6190 EXIT WHEN l_array_entity_id.COUNT = 0;
6191 
6192 -- initialize arrays
6193 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
6194 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
6195 
6196 --
6197 -- Bug 4458708
6198 --
6199 XLA_AE_LINES_PKG.g_LineNumber := 0;
6200 
6201 
6202 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
6203 g_last_hdr_idx := l_array_event_id.LAST;
6204 --
6205 -- loop for the headers. Each iteration is for each header extract row
6206 -- fetched in header cursor
6207 --
6208 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
6209 
6210 --
6211 -- set event info as cache for other routines to refer event attributes
6212 --
6213 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6214    (p_application_id           => p_application_id
6215    ,p_primary_ledger_id        => p_primary_ledger_id
6216    ,p_base_ledger_id           => p_base_ledger_id
6220    ,p_entity_code              => l_array_entity_code(hdr_idx)
6217    ,p_target_ledger_id         => p_target_ledger_id
6218    ,p_entity_id                => l_array_entity_id(hdr_idx)
6219    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
6221    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
6222    ,p_event_id                 => l_array_event_id(hdr_idx)
6223    ,p_event_class_code         => l_array_class_code(hdr_idx)
6224    ,p_event_type_code          => l_array_event_type(hdr_idx)
6225    ,p_event_number             => l_array_event_number(hdr_idx)
6226    ,p_event_date               => l_array_event_date(hdr_idx)
6227    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
6228    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
6229    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
6230    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
6231    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
6232    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
6233    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
6234    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
6235    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
6236    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
6237    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
6238    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
6239    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
6240    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
6241    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
6242 
6243 --
6244 -- set the status of entry to C_VALID (0)
6245 --
6246 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6247 
6248 --
6249 -- initialize a row for ae header
6250 --
6251 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
6252 
6253 l_event_id := l_array_event_id(hdr_idx);
6254 
6255 --
6256 -- storing the hdr_idx for event. May be used by line cursor.
6257 --
6258 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
6259 
6260 --
6261 -- store sources from header extract. This can be improved to
6262 -- store only those sources from header extract that may be used in lines
6263 --
6264 
6265 g_array_event(l_event_id).array_value_date('source_25') := l_array_source_25(hdr_idx);
6266 
6267 --
6268 -- initilaize the status of ae headers for diffrent balance types
6269 -- the status is initialised to C_NOT_CREATED (2)
6270 --
6271 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6272 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6273 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6274 
6275 --
6276 -- call api to validate and store accounting attributes for header
6277 --
6278 
6279 ------------------------------------------------------------
6280 -- Accrual Reversal : to get date for Standard Source (NONE)
6281 ------------------------------------------------------------
6282 l_acc_rev_gl_date_source := NULL;
6283 
6284      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
6285       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_25');
6286 
6287 
6288 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
6289 
6290 XLA_AE_HEADER_PKG.SetJeCategoryName;
6291 
6292 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
6293 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
6294 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
6295 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
6296 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
6297 
6298 
6299 
6300 
6301 --
6302 --accounting attribute enhancement, bug 3612931
6303 --
6304 l_trx_reversal_source := SUBSTR(NULL, 1,30);
6305 
6306 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
6307    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
6308 
6309    xla_accounting_err_pkg.build_message
6310       (p_appli_s_name            => 'XLA'
6311       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
6312       ,p_token_1                 => 'ACCT_ATTR_NAME'
6313       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
6314       ,p_token_2                 => 'PRODUCT_NAME'
6315       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6316       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6317       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
6318       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6319 
6320 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
6321    --
6322    -- following sets the accounting attributes needed to reverse
6323    -- accounting for a distributeion
6324    --
6325    xla_ae_lines_pkg.SetTrxReversalAttrs
6326       (p_event_id              => l_event_id
6327       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
6328       ,p_trx_reversal_source   => l_trx_reversal_source);
6329 
6330 END IF;
6331 
6332 
6333 ----------------------------------------------------------------
6334 -- 4262811 -  update the header statuses to invalid in need be
6338 
6335 ----------------------------------------------------------------
6336 --
6337 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
6339 
6340   -----------------------------------------------
6341   -- No accrual reversal for the event class/type
6342   -----------------------------------------------
6343 ----------------------------------------------------------------
6344 
6345 --
6346 -- this ends the header loop iteration for one bulk fetch
6347 --
6348 END LOOP;
6349 
6350 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
6351 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
6352 
6353 --
6354 -- insert dummy rows into lines gt table that were created due to
6355 -- transaction reversals
6356 --
6357 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
6358    l_result := XLA_AE_LINES_PKG.InsertLines;
6359 END IF;
6360 
6361 --
6362 -- reset the temp_line_num for each set of events fetched from header
6363 -- cursor rather than doing it for each new event in line cursor
6364 -- Bug 3939231
6365 --
6366 xla_ae_lines_pkg.g_temp_line_num := 0;
6367 
6368 
6369 
6370 --
6371 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
6372 --
6373 --
6374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6375 
6376       trace
6377          (p_msg      => 'SQL - FETCH line_cur'
6378          ,p_level    => C_LEVEL_STATEMENT
6379          ,p_module   => l_log_module);
6380 
6381 END IF;
6382 --
6383 --
6384 LOOP
6385   --
6386   FETCH line_cur BULK COLLECT INTO
6387         l_array_entity_id
6388       , l_array_legal_entity_id
6389       , l_array_entity_code
6390       , l_array_transaction_num
6391       , l_array_event_id
6392       , l_array_class_code
6393       , l_array_event_type
6394       , l_array_event_number
6395       , l_array_event_date
6396       , l_array_transaction_date
6397       , l_array_reference_num_1
6398       , l_array_reference_num_2
6399       , l_array_reference_num_3
6400       , l_array_reference_num_4
6401       , l_array_reference_char_1
6402       , l_array_reference_char_2
6403       , l_array_reference_char_3
6404       , l_array_reference_char_4
6405       , l_array_reference_date_1
6406       , l_array_reference_date_2
6407       , l_array_reference_date_3
6408       , l_array_reference_date_4
6409       , l_array_event_created_by
6410       , l_array_budgetary_control_flag
6411       , l_array_extract_line_num 
6412       LIMIT l_rows;
6413 
6414   --
6415   IF (C_LEVEL_EVENT >= g_log_level) THEN
6416             trace
6417                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
6418                ,p_level    => C_LEVEL_EVENT
6419                ,p_module   => l_log_module);
6420   END IF;
6421   --
6422   EXIT WHEN l_array_entity_id.count = 0;
6423 
6424   XLA_AE_LINES_PKG.g_rec_lines := null;
6425 
6426 --
6427 -- Bug 4458708
6428 --
6429 XLA_AE_LINES_PKG.g_LineNumber := 0;
6430 --
6431 --
6432 
6433 FOR Idx IN 1..l_array_event_id.count LOOP
6434    --
6435    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
6436    --
6437    l_event_id := l_array_event_id(idx);  -- 5648433
6438 
6439    --
6440    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
6441    --
6442 
6443    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
6444              (g_array_event(l_event_id).array_value_num('header_index'))
6445          ,'N'
6446          ) <> 'Y'
6447    THEN
6448       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6449          trace
6450             (p_msg      => 'Trancaction revesal option is not Y '
6451             ,p_level    => C_LEVEL_STATEMENT
6452             ,p_module   => l_log_module);
6453       END IF;
6454 
6455 --
6456 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
6457 --
6458 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6459 --
6460 -- set event info as cache for other routines to refer event attributes
6461 --
6462 
6463 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
6464    l_previous_event_id := l_event_id;
6465 
6466    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6467       (p_application_id           => p_application_id
6468       ,p_primary_ledger_id        => p_primary_ledger_id
6469       ,p_base_ledger_id           => p_base_ledger_id
6470       ,p_target_ledger_id         => p_target_ledger_id
6471       ,p_entity_id                => l_array_entity_id(Idx)
6472       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
6473       ,p_entity_code              => l_array_entity_code(Idx)
6474       ,p_transaction_num          => l_array_transaction_num(Idx)
6475       ,p_event_id                 => l_array_event_id(Idx)
6476       ,p_event_class_code         => l_array_class_code(Idx)
6477       ,p_event_type_code          => l_array_event_type(Idx)
6478       ,p_event_number             => l_array_event_number(Idx)
6479       ,p_event_date               => l_array_event_date(Idx)
6480       ,p_transaction_date         => l_array_transaction_date(Idx)
6481       ,p_reference_num_1          => l_array_reference_num_1(Idx)
6482       ,p_reference_num_2          => l_array_reference_num_2(Idx)
6483       ,p_reference_num_3          => l_array_reference_num_3(Idx)
6484       ,p_reference_num_4          => l_array_reference_num_4(Idx)
6485       ,p_reference_char_1         => l_array_reference_char_1(Idx)
6486       ,p_reference_char_2         => l_array_reference_char_2(Idx)
6487       ,p_reference_char_3         => l_array_reference_char_3(Idx)
6491       ,p_reference_date_3         => l_array_reference_date_3(Idx)
6488       ,p_reference_char_4         => l_array_reference_char_4(Idx)
6489       ,p_reference_date_1         => l_array_reference_date_1(Idx)
6490       ,p_reference_date_2         => l_array_reference_date_2(Idx)
6492       ,p_reference_date_4         => l_array_reference_date_4(Idx)
6493       ,p_event_created_by         => l_array_event_created_by(Idx)
6494       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
6495        --
6496 END IF;
6497 
6498 
6499 
6500 --
6501 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
6502 
6503 l_acct_reversal_source := SUBSTR(NULL, 1,30);
6504 
6505 IF l_continue_with_lines THEN
6506    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
6507       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
6508 
6509       xla_accounting_err_pkg.build_message
6510          (p_appli_s_name            => 'XLA'
6511          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
6512          ,p_token_1                 => 'LINE_NUMBER'
6513          ,p_value_1                 => l_array_extract_line_num(Idx)
6514          ,p_token_2                 => 'PRODUCT_NAME'
6515          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6516          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6517          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
6518          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6519 
6520    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
6521       --
6522       -- following sets the accounting attributes needed to reverse
6523       -- accounting for a distributeion
6524       --
6525 
6526       --
6527       -- 5217187
6528       --
6529       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
6530       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
6531                                        g_array_event(l_event_id).array_value_num('header_index'));
6532       --
6533       --
6534 
6535       -- No reversal code generated
6536 
6537       xla_ae_lines_pkg.SetAcctReversalAttrs
6538          (p_event_id             => l_event_id
6539          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
6540          ,p_calculate_acctd_flag => l_calculate_acctd_flag
6541          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
6542    END IF;
6543 
6544    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
6545        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
6546       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
6547       -- or secondary ledger that has different currency with primary
6548       -- or alc that is calculated by sla
6549       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
6550             (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'))
6551 
6552 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
6553 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
6554           AND (l_actual_flag = 'A')) THEN
6555         XLA_AE_LINES_PKG.CreateGainOrLossLines(
6556           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
6557          ,p_application_id   => p_application_id
6558          ,p_amb_context_code => 'DEFAULT'
6559          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
6560          ,p_event_class_code => C_EVENT_CLASS_CODE
6561          ,p_event_type_code  => C_EVENT_TYPE_CODE
6562          
6563          ,p_gain_ccid        => -1
6564          ,p_loss_ccid        => -1
6565 
6566          ,p_actual_flag      => l_actual_flag
6567          ,p_enc_flag         => null
6568          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
6569          ,p_enc_g_l_ref      => null
6570          );
6571       END IF;
6572    END IF;
6573 END IF;
6574 
6575    ELSE
6576       --
6577       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
6578       --
6579       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6580          trace
6581             (p_msg      => 'Trancaction revesal option is Y'
6582             ,p_level    => C_LEVEL_STATEMENT
6583             ,p_module   => l_log_module);
6584       END IF;
6585    END IF;
6586 
6587 END LOOP;
6588 l_result := XLA_AE_LINES_PKG.InsertLines ;
6589 end loop;
6590 close line_cur;
6591 
6592 
6593 --
6594 -- insert headers into xla_ae_headers_gt table
6595 --
6596 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
6597 
6598 -- insert into errors table here.
6599 
6600 END LOOP;
6601 
6602 --
6603 -- 4865292
6604 --
6605 -- Compare g_hdr_extract_count with event count in
6606 -- CreateHeadersAndLines.
6607 --
6608 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
6609 
6610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6611    trace (p_msg     => '# rows extracted from header extract objects '
6612                     || ' (running total): '
6613                     || g_hdr_extract_count
6614          ,p_level   => C_LEVEL_STATEMENT
6615          ,p_module  => l_log_module);
6616 END IF;
6617 
6618 CLOSE header_cur;
6619 --
6620 
6621 --
6622 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6623    trace
6624       (p_msg      => 'END of EventClass_17'
6625       ,p_level    => C_LEVEL_PROCEDURE
6626       ,p_module   => l_log_module);
6627 END IF;
6628 --
6629 RETURN l_result;
6630 EXCEPTION
6634 
6631 WHEN xla_exceptions_pkg.application_exception THEN
6632    
6633 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
6635    
6636 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
6637 
6638    RAISE;
6639 WHEN OTHERS THEN
6640    xla_exceptions_pkg.raise_message
6641       (p_location => 'XLA_08901_AAD_S_000002_PKG.EventClass_17');
6642 END EventClass_17;
6643 --
6644 
6645 ---------------------------------------
6646 --
6647 -- PRIVATE PROCEDURE
6648 --         insert_sources_18
6649 --
6650 ----------------------------------------
6651 --
6652 PROCEDURE insert_sources_18(
6653                                 p_target_ledger_id       IN NUMBER
6654                               , p_language               IN VARCHAR2
6655                               , p_sla_ledger_id          IN NUMBER
6656                               , p_pad_start_date         IN DATE
6657                               , p_pad_end_date           IN DATE
6658                          )
6659 IS
6660 
6661 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RPR_BUDGET_EXECUTION_ALL';
6662 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RPR_BUDGET_EXECUTION';
6663 p_apps_owner                   VARCHAR2(30);
6664 l_log_module                   VARCHAR2(240);
6665 BEGIN
6666 IF g_log_enabled THEN
6667       l_log_module := C_DEFAULT_MODULE||'.insert_sources_18';
6668 END IF;
6669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6670 
6671       trace
6672          (p_msg      => 'BEGIN of insert_sources_18'
6673          ,p_level    => C_LEVEL_PROCEDURE
6674          ,p_module   => l_log_module);
6675 
6676 END IF;
6677 
6678 -- select APPS owner
6679 SELECT oracle_username
6680   INTO p_apps_owner
6681   FROM fnd_oracle_userid
6682  WHERE read_only_flag = 'U'
6683 ;
6684 
6685 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6686       trace
6687          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
6688                         ' - p_language = '||p_language||
6689                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
6690                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
6691                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
6692                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
6693          ,p_level    => C_LEVEL_STATEMENT
6694          ,p_module   => l_log_module);
6695 END IF;
6696 
6697 
6698 --
6699 INSERT INTO xla_diag_sources --hdr2
6700 (
6701         event_id
6702       , ledger_id
6703       , sla_ledger_id
6704       , description_language
6705       , object_name
6706       , object_type_code
6707       , line_number
6708       , source_application_id
6709       , source_type_code
6710       , source_code
6711       , source_value
6712       , source_meaning
6713       , created_by
6714       , creation_date
6715       , last_update_date
6716       , last_updated_by
6717       , last_update_login
6718       , program_update_date
6719       , program_application_id
6720       , program_id
6721       , request_id
6722 )
6723 SELECT
6724         event_id
6725       , p_target_ledger_id
6726       , p_sla_ledger_id
6727       , p_language
6728       , object_name
6729       , object_type_code
6730       , line_number
6731       , source_application_id
6732       , source_type_code
6733       , source_code
6734       , SUBSTR(source_value ,1,1996)
6735       , SUBSTR(source_meaning ,1,200)
6736       , xla_environment_pkg.g_Usr_Id
6737       , TRUNC(SYSDATE)
6738       , TRUNC(SYSDATE)
6739       , xla_environment_pkg.g_Usr_Id
6740       , xla_environment_pkg.g_Login_Id
6741       , TRUNC(SYSDATE)
6742       , xla_environment_pkg.g_Prog_Appl_Id
6743       , xla_environment_pkg.g_Prog_Id
6744       , xla_environment_pkg.g_Req_Id
6745   FROM (
6746        SELECT xet.event_id                  event_id
6747             , 0                          line_number
6748             , CASE r
6749                WHEN 1 THEN 'FV_BE_RPR_HDR_V' 
6750                 
6751                ELSE null
6752               END                           object_name
6753             , CASE r
6754                 WHEN 1 THEN 'HEADER' 
6755                 
6756                 ELSE null
6757               END                           object_type_code
6758             , CASE r
6759                 WHEN 1 THEN '8901' 
6760                 
6761                 ELSE null
6762               END                           source_application_id
6763             , 'S'             source_type_code
6764             , CASE r
6765                 WHEN 1 THEN 'GL_DATE' 
6766                 
6767                 ELSE null
6768               END                           source_code
6769             , CASE r
6770                 WHEN 1 THEN TO_CHAR(h1.GL_DATE)
6771                 
6772                 ELSE null
6773               END                           source_value
6774             , null              source_meaning
6775          FROM xla_events_gt     xet  
6776       , FV_BE_RPR_HDR_V  h1
6777              ,(select rownum r from all_objects where rownum <= 1 and owner = p_apps_owner)
6778          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
6779            AND xet.event_class_code = C_EVENT_CLASS_CODE
6780               AND h1.event_id = xet.event_id
6781 
6782 )
6783 ;
6784 --
6785 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6786 
6787       trace
6788          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
6789          ,p_level    => C_LEVEL_STATEMENT
6790          ,p_module   => l_log_module);
6791 
6792 END IF;
6793 --
6794 
6795 
6799       trace
6796  
6797 
6798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6800          (p_msg      => 'END of insert_sources_18'
6801          ,p_level    => C_LEVEL_PROCEDURE
6802          ,p_module   => l_log_module);
6803 END IF;
6804 EXCEPTION
6805   WHEN xla_exceptions_pkg.application_exception THEN
6806       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6807             trace
6808                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6809                ,p_level    => C_LEVEL_EXCEPTION
6810                ,p_module   => l_log_module);
6811       END IF;
6812       RAISE;
6813   WHEN OTHERS THEN
6814       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6815             trace
6816                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6817                ,p_level    => C_LEVEL_EXCEPTION
6818                ,p_module   => l_log_module);
6819        END IF;
6820        xla_exceptions_pkg.raise_message
6821            (p_location => 'XLA_08901_AAD_S_000002_PKG.insert_sources_18');
6822 END insert_sources_18;
6823 --
6824 
6825 ---------------------------------------
6826 --
6827 -- PRIVATE FUNCTION
6828 --         EventClass_18
6829 --
6830 ----------------------------------------
6831 --
6832 FUNCTION EventClass_18
6833        (p_application_id         IN NUMBER
6834        ,p_base_ledger_id         IN NUMBER
6835        ,p_target_ledger_id       IN NUMBER
6836        ,p_language               IN VARCHAR2
6837        ,p_currency_code          IN VARCHAR2
6838        ,p_sla_ledger_id          IN NUMBER
6839        ,p_pad_start_date         IN DATE
6840        ,p_pad_end_date           IN DATE
6841        ,p_primary_ledger_id      IN NUMBER)
6842 RETURN BOOLEAN IS
6843 --
6844 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RPR_BUDGET_EXECUTION_ALL';
6845 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RPR_BUDGET_EXECUTION';
6846 
6847 l_calculate_acctd_flag   VARCHAR2(1) :='N';
6848 l_calculate_g_l_flag     VARCHAR2(1) :='N';
6849 --
6850 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6851 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6852 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6853 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6854 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6855 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6856 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6857 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6858 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6859 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6860 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6861 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6862 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6863 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6864 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6865 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6866 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6867 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6868 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6869 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6870 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6871 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6872 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
6873 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6874 
6875 l_event_id                             NUMBER;
6876 l_previous_event_id                    NUMBER;
6877 l_first_event_id                       NUMBER;
6878 l_last_event_id                        NUMBER;
6879 
6880 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
6881 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
6882 --
6883 --
6884 l_result                    BOOLEAN := TRUE;
6885 l_rows                      NUMBER  := 1000;
6886 l_event_type_name           VARCHAR2(80) := 'All';
6887 l_event_class_name          VARCHAR2(80) := 'Reprogram Budget Execution Transactions';
6888 l_description               VARCHAR2(4000);
6889 l_transaction_reversal      NUMBER;
6890 l_ae_header_id              NUMBER;
6891 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
6892 l_log_module                VARCHAR2(240);
6893 --
6894 l_acct_reversal_source      VARCHAR2(30);
6895 l_trx_reversal_source       VARCHAR2(30);
6896 
6897 l_continue_with_lines       BOOLEAN := TRUE;
6898 --
6899 l_acc_rev_gl_date_source    DATE;                      -- 4262811
6900 --
6901 type t_array_event_id is table of number index by binary_integer;
6902 
6903 l_rec_array_event                    t_rec_array_event;
6904 l_null_rec_array_event               t_rec_array_event;
6905 l_array_ae_header_id                 xla_number_array_type;
6906 l_actual_flag                        VARCHAR2(1) := NULL;
6907 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
6908 l_balance_type_code                  VARCHAR2(1) :=NULL;
6909 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
6910 
6911 --
6912 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
6913 --
6914 
6915 TYPE t_array_source_25 IS TABLE OF FV_BE_RPR_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
6916 
6917 
6918 l_array_source_25              t_array_source_25;
6919 
6923 IS
6920 
6921 --
6922 CURSOR header_cur
6924 SELECT /*+ leading(xet) cardinality(xet,1) */
6925 -- Event Class Code: RPR_BUDGET_EXECUTION
6926     xet.entity_id
6927    ,xet.legal_entity_id
6928    ,xet.entity_code
6929    ,xet.transaction_number
6930    ,xet.event_id
6931    ,xet.event_class_code
6932    ,xet.event_type_code
6933    ,xet.event_number
6934    ,xet.event_date
6935    ,xet.transaction_date
6936    ,xet.reference_num_1
6937    ,xet.reference_num_2
6938    ,xet.reference_num_3
6939    ,xet.reference_num_4
6940    ,xet.reference_char_1
6941    ,xet.reference_char_2
6942    ,xet.reference_char_3
6943    ,xet.reference_char_4
6944    ,xet.reference_date_1
6945    ,xet.reference_date_2
6946    ,xet.reference_date_3
6947    ,xet.reference_date_4
6948    ,xet.event_created_by
6949    ,xet.budgetary_control_flag 
6950   , h1.GL_DATE    source_25
6951   FROM xla_events_gt     xet 
6952   , FV_BE_RPR_HDR_V  h1
6953  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
6954    and xet.event_class_code = C_EVENT_CLASS_CODE
6955    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
6956 
6957  ORDER BY event_id
6958 ;
6959 
6960 
6961 --
6962 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
6963 IS
6964 SELECT  /*+ leading(xet) cardinality(xet,1) */
6965 -- Event Class Code: RPR_BUDGET_EXECUTION
6966     xet.entity_id
6967    ,xet.legal_entity_id
6968    ,xet.entity_code
6969    ,xet.transaction_number
6970    ,xet.event_id
6971    ,xet.event_class_code
6972    ,xet.event_type_code
6973    ,xet.event_number
6974    ,xet.event_date
6975    ,xet.transaction_date
6976    ,xet.reference_num_1
6977    ,xet.reference_num_2
6978    ,xet.reference_num_3
6979    ,xet.reference_num_4
6980    ,xet.reference_char_1
6981    ,xet.reference_char_2
6982    ,xet.reference_char_3
6983    ,xet.reference_char_4
6984    ,xet.reference_date_1
6985    ,xet.reference_date_2
6986    ,xet.reference_date_3
6987    ,xet.reference_date_4
6988    ,xet.event_created_by
6989    ,xet.budgetary_control_flag
6990  , 0 
6991   FROM xla_events_gt     xet  
6992  WHERE xet.event_id between x_first_event_id and x_last_event_id
6993    and xet.event_date between p_pad_start_date and p_pad_end_date
6994    and xet.event_class_code = C_EVENT_CLASS_CODE
6995    and xet.event_status_code <> 'N'  ;
6996 
6997 --
6998 BEGIN
6999 IF g_log_enabled THEN
7000    l_log_module := C_DEFAULT_MODULE||'.EventClass_18';
7001 END IF;
7002 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7003    trace
7004       (p_msg      => 'BEGIN of EventClass_18'
7005       ,p_level    => C_LEVEL_PROCEDURE
7006       ,p_module   => l_log_module);
7007 END IF;
7008 
7009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7010    trace
7011       (p_msg      => 'p_application_id = '||p_application_id||
7012                      ' - p_base_ledger_id = '||p_base_ledger_id||
7013                      ' - p_target_ledger_id  = '||p_target_ledger_id||
7014                      ' - p_language = '||p_language||
7015                      ' - p_currency_code = '||p_currency_code||
7016                      ' - p_sla_ledger_id = '||p_sla_ledger_id
7017       ,p_level    => C_LEVEL_STATEMENT
7018       ,p_module   => l_log_module);
7019 END IF;
7020 --
7021 -- initialze arrays
7022 --
7023 g_array_event.DELETE;
7024 l_rec_array_event := l_null_rec_array_event;
7025 --
7026 --------------------------------------
7027 -- 4262811 Initialze MPA Line Number
7028 --------------------------------------
7029 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
7030 
7031 --
7032 
7033 --
7034 OPEN header_cur;
7035 --
7036 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7037    trace
7038    (p_msg      => 'SQL - FETCH header_cur'
7039    ,p_level    => C_LEVEL_STATEMENT
7040    ,p_module   => l_log_module);
7041 END IF;
7042 --
7043 LOOP
7044 FETCH header_cur BULK COLLECT INTO
7045         l_array_entity_id
7046       , l_array_legal_entity_id
7047       , l_array_entity_code
7048       , l_array_transaction_num
7049       , l_array_event_id
7050       , l_array_class_code
7051       , l_array_event_type
7052       , l_array_event_number
7053       , l_array_event_date
7054       , l_array_transaction_date
7055       , l_array_reference_num_1
7056       , l_array_reference_num_2
7057       , l_array_reference_num_3
7058       , l_array_reference_num_4
7059       , l_array_reference_char_1
7060       , l_array_reference_char_2
7061       , l_array_reference_char_3
7062       , l_array_reference_char_4
7063       , l_array_reference_date_1
7064       , l_array_reference_date_2
7065       , l_array_reference_date_3
7066       , l_array_reference_date_4
7067       , l_array_event_created_by
7068       , l_array_budgetary_control_flag 
7069       , l_array_source_25
7070       LIMIT l_rows;
7071 --
7072 IF (C_LEVEL_EVENT >= g_log_level) THEN
7073    trace
7074    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
7075    ,p_level    => C_LEVEL_EVENT
7076    ,p_module   => l_log_module);
7077 END IF;
7078 --
7079 EXIT WHEN l_array_entity_id.COUNT = 0;
7080 
7081 -- initialize arrays
7082 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
7083 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
7084 
7085 --
7086 -- Bug 4458708
7087 --
7088 XLA_AE_LINES_PKG.g_LineNumber := 0;
7089 
7090 
7094 -- loop for the headers. Each iteration is for each header extract row
7091 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
7092 g_last_hdr_idx := l_array_event_id.LAST;
7093 --
7095 -- fetched in header cursor
7096 --
7097 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
7098 
7099 --
7100 -- set event info as cache for other routines to refer event attributes
7101 --
7102 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
7103    (p_application_id           => p_application_id
7104    ,p_primary_ledger_id        => p_primary_ledger_id
7105    ,p_base_ledger_id           => p_base_ledger_id
7106    ,p_target_ledger_id         => p_target_ledger_id
7107    ,p_entity_id                => l_array_entity_id(hdr_idx)
7108    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
7109    ,p_entity_code              => l_array_entity_code(hdr_idx)
7110    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
7111    ,p_event_id                 => l_array_event_id(hdr_idx)
7112    ,p_event_class_code         => l_array_class_code(hdr_idx)
7113    ,p_event_type_code          => l_array_event_type(hdr_idx)
7114    ,p_event_number             => l_array_event_number(hdr_idx)
7115    ,p_event_date               => l_array_event_date(hdr_idx)
7116    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
7117    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
7118    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
7119    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
7120    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
7121    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
7122    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
7123    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
7124    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
7125    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
7126    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
7127    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
7128    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
7129    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
7130    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
7131 
7132 --
7133 -- set the status of entry to C_VALID (0)
7134 --
7135 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
7136 
7137 --
7138 -- initialize a row for ae header
7139 --
7140 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
7141 
7142 l_event_id := l_array_event_id(hdr_idx);
7143 
7144 --
7145 -- storing the hdr_idx for event. May be used by line cursor.
7146 --
7147 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
7148 
7149 --
7150 -- store sources from header extract. This can be improved to
7151 -- store only those sources from header extract that may be used in lines
7152 --
7153 
7154 g_array_event(l_event_id).array_value_date('source_25') := l_array_source_25(hdr_idx);
7155 
7156 --
7157 -- initilaize the status of ae headers for diffrent balance types
7158 -- the status is initialised to C_NOT_CREATED (2)
7159 --
7160 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7161 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7162 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7163 
7164 --
7165 -- call api to validate and store accounting attributes for header
7166 --
7167 
7168 ------------------------------------------------------------
7169 -- Accrual Reversal : to get date for Standard Source (NONE)
7170 ------------------------------------------------------------
7171 l_acc_rev_gl_date_source := NULL;
7172 
7173      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
7174       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_25');
7175 
7176 
7177 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
7178 
7179 XLA_AE_HEADER_PKG.SetJeCategoryName;
7180 
7181 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
7182 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
7183 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
7184 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
7185 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
7186 
7187 
7188 
7189 
7190 --
7191 --accounting attribute enhancement, bug 3612931
7192 --
7193 l_trx_reversal_source := SUBSTR(NULL, 1,30);
7194 
7195 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
7196    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
7197 
7198    xla_accounting_err_pkg.build_message
7199       (p_appli_s_name            => 'XLA'
7200       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
7201       ,p_token_1                 => 'ACCT_ATTR_NAME'
7202       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
7203       ,p_token_2                 => 'PRODUCT_NAME'
7204       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
7205       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
7206       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
7207       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
7208 
7212    -- accounting for a distributeion
7209 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
7210    --
7211    -- following sets the accounting attributes needed to reverse
7213    --
7214    xla_ae_lines_pkg.SetTrxReversalAttrs
7215       (p_event_id              => l_event_id
7216       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
7217       ,p_trx_reversal_source   => l_trx_reversal_source);
7218 
7219 END IF;
7220 
7221 
7222 ----------------------------------------------------------------
7223 -- 4262811 -  update the header statuses to invalid in need be
7224 ----------------------------------------------------------------
7225 --
7226 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
7227 
7228 
7229   -----------------------------------------------
7230   -- No accrual reversal for the event class/type
7231   -----------------------------------------------
7232 ----------------------------------------------------------------
7233 
7234 --
7235 -- this ends the header loop iteration for one bulk fetch
7236 --
7237 END LOOP;
7238 
7239 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
7240 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
7241 
7242 --
7243 -- insert dummy rows into lines gt table that were created due to
7244 -- transaction reversals
7245 --
7246 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
7247    l_result := XLA_AE_LINES_PKG.InsertLines;
7248 END IF;
7249 
7250 --
7251 -- reset the temp_line_num for each set of events fetched from header
7252 -- cursor rather than doing it for each new event in line cursor
7253 -- Bug 3939231
7254 --
7255 xla_ae_lines_pkg.g_temp_line_num := 0;
7256 
7257 
7258 
7259 --
7260 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
7261 --
7262 --
7263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7264 
7265       trace
7266          (p_msg      => 'SQL - FETCH line_cur'
7267          ,p_level    => C_LEVEL_STATEMENT
7268          ,p_module   => l_log_module);
7269 
7270 END IF;
7271 --
7272 --
7273 LOOP
7274   --
7275   FETCH line_cur BULK COLLECT INTO
7276         l_array_entity_id
7277       , l_array_legal_entity_id
7278       , l_array_entity_code
7279       , l_array_transaction_num
7280       , l_array_event_id
7281       , l_array_class_code
7282       , l_array_event_type
7283       , l_array_event_number
7284       , l_array_event_date
7285       , l_array_transaction_date
7286       , l_array_reference_num_1
7287       , l_array_reference_num_2
7288       , l_array_reference_num_3
7289       , l_array_reference_num_4
7290       , l_array_reference_char_1
7291       , l_array_reference_char_2
7292       , l_array_reference_char_3
7293       , l_array_reference_char_4
7294       , l_array_reference_date_1
7295       , l_array_reference_date_2
7296       , l_array_reference_date_3
7297       , l_array_reference_date_4
7298       , l_array_event_created_by
7299       , l_array_budgetary_control_flag
7300       , l_array_extract_line_num 
7301       LIMIT l_rows;
7302 
7303   --
7304   IF (C_LEVEL_EVENT >= g_log_level) THEN
7305             trace
7306                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
7307                ,p_level    => C_LEVEL_EVENT
7308                ,p_module   => l_log_module);
7309   END IF;
7310   --
7311   EXIT WHEN l_array_entity_id.count = 0;
7312 
7313   XLA_AE_LINES_PKG.g_rec_lines := null;
7314 
7315 --
7316 -- Bug 4458708
7317 --
7318 XLA_AE_LINES_PKG.g_LineNumber := 0;
7319 --
7320 --
7321 
7322 FOR Idx IN 1..l_array_event_id.count LOOP
7323    --
7324    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
7325    --
7326    l_event_id := l_array_event_id(idx);  -- 5648433
7327 
7328    --
7329    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
7330    --
7331 
7332    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
7333              (g_array_event(l_event_id).array_value_num('header_index'))
7334          ,'N'
7335          ) <> 'Y'
7336    THEN
7337       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7338          trace
7339             (p_msg      => 'Trancaction revesal option is not Y '
7340             ,p_level    => C_LEVEL_STATEMENT
7341             ,p_module   => l_log_module);
7342       END IF;
7343 
7344 --
7345 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
7346 --
7347 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
7348 --
7349 -- set event info as cache for other routines to refer event attributes
7350 --
7351 
7352 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
7353    l_previous_event_id := l_event_id;
7354 
7355    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
7356       (p_application_id           => p_application_id
7357       ,p_primary_ledger_id        => p_primary_ledger_id
7358       ,p_base_ledger_id           => p_base_ledger_id
7359       ,p_target_ledger_id         => p_target_ledger_id
7360       ,p_entity_id                => l_array_entity_id(Idx)
7361       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
7362       ,p_entity_code              => l_array_entity_code(Idx)
7363       ,p_transaction_num          => l_array_transaction_num(Idx)
7364       ,p_event_id                 => l_array_event_id(Idx)
7365       ,p_event_class_code         => l_array_class_code(Idx)
7366       ,p_event_type_code          => l_array_event_type(Idx)
7370       ,p_reference_num_1          => l_array_reference_num_1(Idx)
7367       ,p_event_number             => l_array_event_number(Idx)
7368       ,p_event_date               => l_array_event_date(Idx)
7369       ,p_transaction_date         => l_array_transaction_date(Idx)
7371       ,p_reference_num_2          => l_array_reference_num_2(Idx)
7372       ,p_reference_num_3          => l_array_reference_num_3(Idx)
7373       ,p_reference_num_4          => l_array_reference_num_4(Idx)
7374       ,p_reference_char_1         => l_array_reference_char_1(Idx)
7375       ,p_reference_char_2         => l_array_reference_char_2(Idx)
7376       ,p_reference_char_3         => l_array_reference_char_3(Idx)
7377       ,p_reference_char_4         => l_array_reference_char_4(Idx)
7378       ,p_reference_date_1         => l_array_reference_date_1(Idx)
7379       ,p_reference_date_2         => l_array_reference_date_2(Idx)
7380       ,p_reference_date_3         => l_array_reference_date_3(Idx)
7381       ,p_reference_date_4         => l_array_reference_date_4(Idx)
7382       ,p_event_created_by         => l_array_event_created_by(Idx)
7383       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
7384        --
7385 END IF;
7386 
7387 
7388 
7389 --
7390 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
7391 
7392 l_acct_reversal_source := SUBSTR(NULL, 1,30);
7393 
7394 IF l_continue_with_lines THEN
7395    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
7396       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
7397 
7398       xla_accounting_err_pkg.build_message
7399          (p_appli_s_name            => 'XLA'
7400          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
7401          ,p_token_1                 => 'LINE_NUMBER'
7402          ,p_value_1                 => l_array_extract_line_num(Idx)
7403          ,p_token_2                 => 'PRODUCT_NAME'
7404          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
7405          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
7406          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
7407          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
7408 
7409    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
7410       --
7411       -- following sets the accounting attributes needed to reverse
7412       -- accounting for a distributeion
7413       --
7414 
7415       --
7416       -- 5217187
7417       --
7418       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
7419       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
7420                                        g_array_event(l_event_id).array_value_num('header_index'));
7421       --
7422       --
7423 
7424       -- No reversal code generated
7425 
7426       xla_ae_lines_pkg.SetAcctReversalAttrs
7427          (p_event_id             => l_event_id
7428          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
7429          ,p_calculate_acctd_flag => l_calculate_acctd_flag
7430          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
7431    END IF;
7432 
7433    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
7434        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
7435       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
7436       -- or secondary ledger that has different currency with primary
7437       -- or alc that is calculated by sla
7438       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
7439             (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'))
7440 
7441 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
7442 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
7443           AND (l_actual_flag = 'A')) THEN
7444         XLA_AE_LINES_PKG.CreateGainOrLossLines(
7445           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
7446          ,p_application_id   => p_application_id
7447          ,p_amb_context_code => 'DEFAULT'
7448          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
7449          ,p_event_class_code => C_EVENT_CLASS_CODE
7450          ,p_event_type_code  => C_EVENT_TYPE_CODE
7451          
7452          ,p_gain_ccid        => -1
7453          ,p_loss_ccid        => -1
7454 
7455          ,p_actual_flag      => l_actual_flag
7456          ,p_enc_flag         => null
7457          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
7458          ,p_enc_g_l_ref      => null
7459          );
7460       END IF;
7461    END IF;
7462 END IF;
7463 
7464    ELSE
7465       --
7466       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
7467       --
7468       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7469          trace
7470             (p_msg      => 'Trancaction revesal option is Y'
7471             ,p_level    => C_LEVEL_STATEMENT
7472             ,p_module   => l_log_module);
7473       END IF;
7474    END IF;
7475 
7476 END LOOP;
7477 l_result := XLA_AE_LINES_PKG.InsertLines ;
7478 end loop;
7479 close line_cur;
7480 
7481 
7482 --
7483 -- insert headers into xla_ae_headers_gt table
7484 --
7485 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
7486 
7487 -- insert into errors table here.
7488 
7489 END LOOP;
7490 
7491 --
7492 -- 4865292
7493 --
7494 -- Compare g_hdr_extract_count with event count in
7495 -- CreateHeadersAndLines.
7496 --
7497 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
7498 
7502                     || g_hdr_extract_count
7499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7500    trace (p_msg     => '# rows extracted from header extract objects '
7501                     || ' (running total): '
7503          ,p_level   => C_LEVEL_STATEMENT
7504          ,p_module  => l_log_module);
7505 END IF;
7506 
7507 CLOSE header_cur;
7508 --
7509 
7510 --
7511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7512    trace
7513       (p_msg      => 'END of EventClass_18'
7514       ,p_level    => C_LEVEL_PROCEDURE
7515       ,p_module   => l_log_module);
7516 END IF;
7517 --
7518 RETURN l_result;
7519 EXCEPTION
7520 WHEN xla_exceptions_pkg.application_exception THEN
7521    
7522 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
7523 
7524    
7525 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
7526 
7527    RAISE;
7528 WHEN OTHERS THEN
7529    xla_exceptions_pkg.raise_message
7530       (p_location => 'XLA_08901_AAD_S_000002_PKG.EventClass_18');
7531 END EventClass_18;
7532 --
7533 
7534 ---------------------------------------
7535 --
7536 -- PRIVATE PROCEDURE
7537 --         insert_sources_19
7538 --
7539 ----------------------------------------
7540 --
7541 PROCEDURE insert_sources_19(
7542                                 p_target_ledger_id       IN NUMBER
7543                               , p_language               IN VARCHAR2
7544                               , p_sla_ledger_id          IN NUMBER
7545                               , p_pad_start_date         IN DATE
7546                               , p_pad_end_date           IN DATE
7547                          )
7548 IS
7549 
7550 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TREASURY_ACCOMPLISHMENT_ALL';
7551 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TREASURY_ACCOMPLISHMENT';
7552 p_apps_owner                   VARCHAR2(30);
7553 l_log_module                   VARCHAR2(240);
7554 BEGIN
7555 IF g_log_enabled THEN
7556       l_log_module := C_DEFAULT_MODULE||'.insert_sources_19';
7557 END IF;
7558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7559 
7560       trace
7561          (p_msg      => 'BEGIN of insert_sources_19'
7562          ,p_level    => C_LEVEL_PROCEDURE
7563          ,p_module   => l_log_module);
7564 
7565 END IF;
7566 
7567 -- select APPS owner
7568 SELECT oracle_username
7569   INTO p_apps_owner
7570   FROM fnd_oracle_userid
7571  WHERE read_only_flag = 'U'
7572 ;
7573 
7574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7575       trace
7576          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
7577                         ' - p_language = '||p_language||
7578                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
7579                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
7580                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
7581                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
7582          ,p_level    => C_LEVEL_STATEMENT
7583          ,p_module   => l_log_module);
7584 END IF;
7585 
7586 
7587 --
7588 INSERT INTO xla_diag_sources --hdr2
7589 (
7590         event_id
7591       , ledger_id
7592       , sla_ledger_id
7593       , description_language
7594       , object_name
7595       , object_type_code
7596       , line_number
7597       , source_application_id
7598       , source_type_code
7599       , source_code
7600       , source_value
7601       , source_meaning
7602       , created_by
7603       , creation_date
7604       , last_update_date
7605       , last_updated_by
7606       , last_update_login
7607       , program_update_date
7608       , program_application_id
7609       , program_id
7610       , request_id
7611 )
7612 SELECT
7613         event_id
7614       , p_target_ledger_id
7615       , p_sla_ledger_id
7616       , p_language
7617       , object_name
7618       , object_type_code
7619       , line_number
7620       , source_application_id
7621       , source_type_code
7622       , source_code
7623       , SUBSTR(source_value ,1,1996)
7624       , SUBSTR(source_meaning ,1,200)
7625       , xla_environment_pkg.g_Usr_Id
7626       , TRUNC(SYSDATE)
7627       , TRUNC(SYSDATE)
7628       , xla_environment_pkg.g_Usr_Id
7629       , xla_environment_pkg.g_Login_Id
7630       , TRUNC(SYSDATE)
7631       , xla_environment_pkg.g_Prog_Appl_Id
7632       , xla_environment_pkg.g_Prog_Id
7633       , xla_environment_pkg.g_Req_Id
7634   FROM (
7635        SELECT xet.event_id                  event_id
7636             , 0                          line_number
7637             , CASE r
7638                WHEN 1 THEN 'AP_SYSTEM_PARAMETERS_EXTRACT_V' 
7639                 WHEN 2 THEN 'AP_SYSTEM_PARAMETERS_EXTRACT_V' 
7640                 WHEN 3 THEN 'FV_TREASURY_EXTRACT_HEADER_V' 
7641                 
7642                ELSE null
7643               END                           object_name
7644             , CASE r
7645                 WHEN 1 THEN 'HEADER' 
7646                 WHEN 2 THEN 'HEADER' 
7647                 WHEN 3 THEN 'HEADER' 
7648                 
7649                 ELSE null
7650               END                           object_type_code
7651             , CASE r
7652                 WHEN 1 THEN '200' 
7653                 WHEN 2 THEN '200' 
7654                 WHEN 3 THEN '8901' 
7655                 
7656                 ELSE null
7657               END                           source_application_id
7658             , 'S'             source_type_code
7659             , CASE r
7660                 WHEN 1 THEN 'ASP_WHEN_TO_ACCOUNT_PMT' 
7661                 WHEN 2 THEN 'ASP_AUTOMATIC_OFFSETS_VALUE' 
7665               END                           source_code
7662                 WHEN 3 THEN 'TREASURY_CONFIRMATION_ID' 
7663                 
7664                 ELSE null
7666             , CASE r
7667                 WHEN 1 THEN TO_CHAR(h1.ASP_WHEN_TO_ACCOUNT_PMT)
7668                 WHEN 2 THEN TO_CHAR(h1.ASP_AUTOMATIC_OFFSETS_VALUE)
7669                 WHEN 3 THEN TO_CHAR(h3.TREASURY_CONFIRMATION_ID)
7670                 
7671                 ELSE null
7672               END                           source_value
7673             , CASE r
7674                 WHEN 2 THEN fvl9.meaning
7675                 
7676                 ELSE null
7677               END               source_meaning
7678          FROM xla_events_gt     xet  
7679       , AP_SYSTEM_PARAMETERS_EXTRACT_V  h1
7680       , FV_TREASURY_EXTRACT_HEADER_V  h3
7681   , fnd_lookup_values    fvl9
7682              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
7683          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
7684            AND xet.event_class_code = C_EVENT_CLASS_CODE
7685               AND h3.event_id = xet.event_id
7686  AND h3.org_id = h1.asp_org_id   AND fvl9.lookup_type(+)         = 'LIABILITY FLEXBUILD METHOD'
7687   AND fvl9.lookup_code(+)         = h1.ASP_AUTOMATIC_OFFSETS_VALUE
7688   AND fvl9.view_application_id(+) = 200
7689   AND fvl9.language(+)            = USERENV('LANG')
7690   
7691 )
7692 ;
7693 --
7694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7695 
7696       trace
7697          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
7698          ,p_level    => C_LEVEL_STATEMENT
7699          ,p_module   => l_log_module);
7700 
7701 END IF;
7702 --
7703 
7704 
7705 
7706 --
7707 INSERT INTO xla_diag_sources  --line2
7708 (
7709         event_id
7710       , ledger_id
7711       , sla_ledger_id
7712       , description_language
7713       , object_name
7714       , object_type_code
7715       , line_number
7716       , source_application_id
7717       , source_type_code
7718       , source_code
7719       , source_value
7720       , source_meaning
7721       , created_by
7722       , creation_date
7723       , last_update_date
7724       , last_updated_by
7725       , last_update_login
7726       , program_update_date
7727       , program_application_id
7728       , program_id
7729       , request_id
7730 )
7731 SELECT  event_id
7732       , p_target_ledger_id
7733       , p_sla_ledger_id
7734       , p_language
7735       , object_name
7736       , object_type_code
7737       , line_number
7738       , source_application_id
7739       , source_type_code
7740       , source_code
7741       , SUBSTR(source_value,1,1996)
7742       , SUBSTR(source_meaning ,1,200)
7743       , xla_environment_pkg.g_Usr_Id
7744       , TRUNC(SYSDATE)
7745       , TRUNC(SYSDATE)
7746       , xla_environment_pkg.g_Usr_Id
7747       , xla_environment_pkg.g_Login_Id
7748       , TRUNC(SYSDATE)
7749       , xla_environment_pkg.g_Prog_Appl_Id
7750       , xla_environment_pkg.g_Prog_Id
7751       , xla_environment_pkg.g_Req_Id
7752   FROM (
7753        SELECT xet.event_id                  event_id
7754             , l2.line_number                 line_number
7755             , CASE r
7756                WHEN 1 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7757                 WHEN 2 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7758                 WHEN 3 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7759                 WHEN 4 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7760                 WHEN 5 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7761                 WHEN 6 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7762                 WHEN 7 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7763                 WHEN 8 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7764                 WHEN 9 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7765                 WHEN 10 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7766                 WHEN 11 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7767                 WHEN 12 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7768                 WHEN 13 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7769                 WHEN 14 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7770                 WHEN 15 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7771                 WHEN 16 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7772                 WHEN 17 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7773                 WHEN 18 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7774                 WHEN 19 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7775                 WHEN 20 THEN 'FV_TREASURY_EXTRACT_DETAILS_V' 
7776                 
7777                ELSE null
7778               END                           object_name
7779             , CASE r
7780                 WHEN 1 THEN 'LINE' 
7781                 WHEN 2 THEN 'LINE' 
7782                 WHEN 3 THEN 'LINE' 
7783                 WHEN 4 THEN 'LINE' 
7784                 WHEN 5 THEN 'LINE' 
7785                 WHEN 6 THEN 'LINE' 
7786                 WHEN 7 THEN 'LINE' 
7787                 WHEN 8 THEN 'LINE' 
7788                 WHEN 9 THEN 'LINE' 
7789                 WHEN 10 THEN 'LINE' 
7790                 WHEN 11 THEN 'LINE' 
7791                 WHEN 12 THEN 'LINE' 
7792                 WHEN 13 THEN 'LINE' 
7793                 WHEN 14 THEN 'LINE' 
7794                 WHEN 15 THEN 'LINE' 
7795                 WHEN 16 THEN 'LINE' 
7796                 WHEN 17 THEN 'LINE' 
7797                 WHEN 18 THEN 'LINE' 
7798                 WHEN 19 THEN 'LINE' 
7799                 WHEN 20 THEN 'LINE' 
7800                 
7801                 ELSE null
7802               END                           object_type_code
7803             , CASE r
7804                 WHEN 1 THEN '8901' 
7808                 WHEN 5 THEN '8901' 
7805                 WHEN 2 THEN '8901' 
7806                 WHEN 3 THEN '8901' 
7807                 WHEN 4 THEN '8901' 
7809                 WHEN 6 THEN '8901' 
7810                 WHEN 7 THEN '8901' 
7811                 WHEN 8 THEN '8901' 
7812                 WHEN 9 THEN '8901' 
7813                 WHEN 10 THEN '8901' 
7814                 WHEN 11 THEN '8901' 
7815                 WHEN 12 THEN '8901' 
7816                 WHEN 13 THEN '8901' 
7817                 WHEN 14 THEN '8901' 
7818                 WHEN 15 THEN '8901' 
7819                 WHEN 16 THEN '8901' 
7820                 WHEN 17 THEN '8901' 
7821                 WHEN 18 THEN '8901' 
7822                 WHEN 19 THEN '8901' 
7823                 WHEN 20 THEN '8901' 
7824                 
7825                 ELSE null
7826               END                           source_application_id
7827             , 'S'             source_type_code
7828             , CASE r
7829                 WHEN 1 THEN 'FV_CHECK_NUMBER' 
7830                 WHEN 2 THEN 'FV_CHECK_DATE' 
7831                 WHEN 3 THEN 'FV_TREASURY_PAY_NUMBER' 
7832                 WHEN 4 THEN 'FV_AP_CASH_ACCOUNT' 
7833                 WHEN 5 THEN 'FV_AP_CASH_CLEARING_CCID' 
7834                 WHEN 6 THEN 'DIT_CONFIRM_CASH_ACCOUNT' 
7835                 WHEN 7 THEN 'FV_INV_DIST_CCID' 
7836                 WHEN 8 THEN 'FV_AP_LIABILITY_ACCOUNT' 
7837                 WHEN 9 THEN 'FV_INV_TYPE_LOOKUP_CODE' 
7838                 WHEN 10 THEN 'FV_BUS_FLOW_FV_APP_ID' 
7839                 WHEN 11 THEN 'FV_BUS_FLOW_TREASURY_DIST_TYPE' 
7840                 WHEN 12 THEN 'FV_BUS_FLOW_TREAS_ENTITY_CODE' 
7841                 WHEN 13 THEN 'FV_PAY_HIST_DIST_ID' 
7842                 WHEN 14 THEN 'FV_TREASURY_CONFIRMATION_ID' 
7843                 WHEN 15 THEN 'FV_PAY_DIST_AMOUNT' 
7844                 WHEN 16 THEN 'FV_INV_CURRENCY_CODE' 
7845                 WHEN 17 THEN 'FV_INV_EXCHANGE_DATE' 
7846                 WHEN 18 THEN 'FV_INV_EXCHANGE_RATE' 
7847                 WHEN 19 THEN 'FV_INV_EXCHANGE_RATE_TYPE' 
7848                 WHEN 20 THEN 'FV_REV_PAY_HIST_DIST_ID' 
7849                 
7850                 ELSE null
7851               END                           source_code
7852             , CASE r
7853                 WHEN 1 THEN TO_CHAR(l2.FV_CHECK_NUMBER)
7854                 WHEN 2 THEN TO_CHAR(l2.FV_CHECK_DATE)
7855                 WHEN 3 THEN TO_CHAR(l2.FV_TREASURY_PAY_NUMBER)
7856                 WHEN 4 THEN TO_CHAR(l2.FV_AP_CASH_ACCOUNT)
7857                 WHEN 5 THEN TO_CHAR(l2.FV_AP_CASH_CLEARING_CCID)
7858                 WHEN 6 THEN TO_CHAR(l2.DIT_CONFIRM_CASH_ACCOUNT)
7859                 WHEN 7 THEN TO_CHAR(l2.FV_INV_DIST_CCID)
7860                 WHEN 8 THEN TO_CHAR(l2.FV_AP_LIABILITY_ACCOUNT)
7861                 WHEN 9 THEN TO_CHAR(l2.FV_INV_TYPE_LOOKUP_CODE)
7862                 WHEN 10 THEN TO_CHAR(l2.FV_BUS_FLOW_FV_APP_ID)
7863                 WHEN 11 THEN TO_CHAR(l2.FV_BUS_FLOW_TREASURY_DIST_TYPE)
7864                 WHEN 12 THEN TO_CHAR(l2.FV_BUS_FLOW_TREAS_ENTITY_CODE)
7865                 WHEN 13 THEN TO_CHAR(l2.FV_PAY_HIST_DIST_ID)
7866                 WHEN 14 THEN TO_CHAR(l2.FV_TREASURY_CONFIRMATION_ID)
7867                 WHEN 15 THEN TO_CHAR(l2.FV_PAY_DIST_AMOUNT)
7868                 WHEN 16 THEN TO_CHAR(l2.FV_INV_CURRENCY_CODE)
7869                 WHEN 17 THEN TO_CHAR(l2.FV_INV_EXCHANGE_DATE)
7870                 WHEN 18 THEN TO_CHAR(l2.FV_INV_EXCHANGE_RATE)
7871                 WHEN 19 THEN TO_CHAR(l2.FV_INV_EXCHANGE_RATE_TYPE)
7872                 WHEN 20 THEN TO_CHAR(l2.FV_REV_PAY_HIST_DIST_ID)
7873                 
7874                 ELSE null
7875               END                           source_value
7876             , null              source_meaning
7877          FROM  xla_events_gt     xet  
7878         , FV_TREASURY_EXTRACT_DETAILS_V  l2
7879             , (select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
7880         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
7881           AND xet.event_class_code = C_EVENT_CLASS_CODE
7882             AND l2.event_id          = xet.event_id
7883 
7884 )
7885 ;
7886 --
7887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7888 
7889       trace
7890          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
7891          ,p_level    => C_LEVEL_STATEMENT
7892          ,p_module   => l_log_module);
7893 
7894 END IF;
7895 
7896 
7897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7898       trace
7899          (p_msg      => 'END of insert_sources_19'
7900          ,p_level    => C_LEVEL_PROCEDURE
7901          ,p_module   => l_log_module);
7902 END IF;
7903 EXCEPTION
7904   WHEN xla_exceptions_pkg.application_exception THEN
7905       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
7906             trace
7907                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
7908                ,p_level    => C_LEVEL_EXCEPTION
7909                ,p_module   => l_log_module);
7910       END IF;
7911       RAISE;
7912   WHEN OTHERS THEN
7913       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
7914             trace
7915                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
7916                ,p_level    => C_LEVEL_EXCEPTION
7917                ,p_module   => l_log_module);
7918        END IF;
7919        xla_exceptions_pkg.raise_message
7920            (p_location => 'XLA_08901_AAD_S_000002_PKG.insert_sources_19');
7921 END insert_sources_19;
7922 --
7923 
7924 ---------------------------------------
7925 --
7926 -- PRIVATE FUNCTION
7927 --         EventClass_19
7928 --
7929 ----------------------------------------
7930 --
7931 FUNCTION EventClass_19
7932        (p_application_id         IN NUMBER
7933        ,p_base_ledger_id         IN NUMBER
7937        ,p_sla_ledger_id          IN NUMBER
7934        ,p_target_ledger_id       IN NUMBER
7935        ,p_language               IN VARCHAR2
7936        ,p_currency_code          IN VARCHAR2
7938        ,p_pad_start_date         IN DATE
7939        ,p_pad_end_date           IN DATE
7940        ,p_primary_ledger_id      IN NUMBER)
7941 RETURN BOOLEAN IS
7942 --
7943 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TREASURY_ACCOMPLISHMENT_ALL';
7944 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TREASURY_ACCOMPLISHMENT';
7945 
7946 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
7947 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
7948 --
7949 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7950 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7951 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7952 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7953 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7954 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7955 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7956 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7957 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7958 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7959 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7960 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7961 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7962 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7963 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7964 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7965 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7966 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7967 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7968 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7969 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7970 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7971 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
7972 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7973 
7974 l_event_id                             NUMBER;
7975 l_previous_event_id                    NUMBER;
7976 l_first_event_id                       NUMBER;
7977 l_last_event_id                        NUMBER;
7978 
7979 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
7980 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
7981 --
7982 --
7983 l_result                    BOOLEAN := TRUE;
7984 l_rows                      NUMBER  := 1000;
7985 l_event_type_name           VARCHAR2(80) := 'All';
7986 l_event_class_name          VARCHAR2(80) := 'Treasury Accomplishment';
7987 l_description               VARCHAR2(4000);
7988 l_transaction_reversal      NUMBER;
7989 l_ae_header_id              NUMBER;
7990 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
7991 l_log_module                VARCHAR2(240);
7992 --
7993 l_acct_reversal_source      VARCHAR2(30);
7994 l_trx_reversal_source       VARCHAR2(30);
7995 
7996 l_continue_with_lines       BOOLEAN := TRUE;
7997 --
7998 l_acc_rev_gl_date_source    DATE;                      -- 4262811
7999 --
8000 type t_array_event_id is table of number index by binary_integer;
8001 
8002 l_rec_array_event                    t_rec_array_event;
8003 l_null_rec_array_event               t_rec_array_event;
8004 l_array_ae_header_id                 xla_number_array_type;
8005 l_actual_flag                        VARCHAR2(1) := NULL;
8006 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
8007 l_balance_type_code                  VARCHAR2(1) :=NULL;
8008 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
8009 
8010 --
8011 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
8012 --
8013 
8014 TYPE t_array_source_5 IS TABLE OF AP_SYSTEM_PARAMETERS_EXTRACT_V.ASP_WHEN_TO_ACCOUNT_PMT%TYPE INDEX BY BINARY_INTEGER;
8015 TYPE t_array_source_9 IS TABLE OF AP_SYSTEM_PARAMETERS_EXTRACT_V.ASP_AUTOMATIC_OFFSETS_VALUE%TYPE INDEX BY BINARY_INTEGER;
8016 TYPE t_array_source_13 IS TABLE OF FV_TREASURY_EXTRACT_HEADER_V.TREASURY_CONFIRMATION_ID%TYPE INDEX BY BINARY_INTEGER;
8017 
8018 TYPE t_array_source_1 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_CHECK_NUMBER%TYPE INDEX BY BINARY_INTEGER;
8019 TYPE t_array_source_2 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_CHECK_DATE%TYPE INDEX BY BINARY_INTEGER;
8020 TYPE t_array_source_3 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_TREASURY_PAY_NUMBER%TYPE INDEX BY BINARY_INTEGER;
8021 TYPE t_array_source_4 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_AP_CASH_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
8022 TYPE t_array_source_6 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_AP_CASH_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
8023 TYPE t_array_source_7 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.DIT_CONFIRM_CASH_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
8024 TYPE t_array_source_8 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
8025 TYPE t_array_source_10 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_AP_LIABILITY_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
8026 TYPE t_array_source_11 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_TYPE_LOOKUP_CODE%TYPE INDEX BY BINARY_INTEGER;
8027 TYPE t_array_source_14 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_BUS_FLOW_FV_APP_ID%TYPE INDEX BY BINARY_INTEGER;
8028 TYPE t_array_source_15 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_BUS_FLOW_TREASURY_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
8032 TYPE t_array_source_19 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_PAY_DIST_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
8029 TYPE t_array_source_16 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_BUS_FLOW_TREAS_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
8030 TYPE t_array_source_17 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_PAY_HIST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
8031 TYPE t_array_source_18 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_TREASURY_CONFIRMATION_ID%TYPE INDEX BY BINARY_INTEGER;
8033 TYPE t_array_source_20 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
8034 TYPE t_array_source_21 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
8035 TYPE t_array_source_22 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
8036 TYPE t_array_source_23 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_INV_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
8037 TYPE t_array_source_24 IS TABLE OF FV_TREASURY_EXTRACT_DETAILS_V.FV_REV_PAY_HIST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
8038 
8039 l_array_source_5              t_array_source_5;
8040 l_array_source_9              t_array_source_9;
8041 l_array_source_9_meaning      t_array_lookup_meaning;
8042 l_array_source_13              t_array_source_13;
8043 
8044 l_array_source_1      t_array_source_1;
8045 l_array_source_2      t_array_source_2;
8046 l_array_source_3      t_array_source_3;
8047 l_array_source_4      t_array_source_4;
8048 l_array_source_6      t_array_source_6;
8049 l_array_source_7      t_array_source_7;
8050 l_array_source_8      t_array_source_8;
8051 l_array_source_10      t_array_source_10;
8052 l_array_source_11      t_array_source_11;
8053 l_array_source_14      t_array_source_14;
8054 l_array_source_15      t_array_source_15;
8055 l_array_source_16      t_array_source_16;
8056 l_array_source_17      t_array_source_17;
8057 l_array_source_18      t_array_source_18;
8058 l_array_source_19      t_array_source_19;
8059 l_array_source_20      t_array_source_20;
8060 l_array_source_21      t_array_source_21;
8061 l_array_source_22      t_array_source_22;
8062 l_array_source_23      t_array_source_23;
8063 l_array_source_24      t_array_source_24;
8064 
8065 --
8066 CURSOR header_cur
8067 IS
8068 SELECT /*+ leading(xet) cardinality(xet,1) */
8069 -- Event Class Code: TREASURY_ACCOMPLISHMENT
8070     xet.entity_id
8071    ,xet.legal_entity_id
8072    ,xet.entity_code
8073    ,xet.transaction_number
8074    ,xet.event_id
8075    ,xet.event_class_code
8076    ,xet.event_type_code
8077    ,xet.event_number
8078    ,xet.event_date
8079    ,xet.transaction_date
8080    ,xet.reference_num_1
8081    ,xet.reference_num_2
8082    ,xet.reference_num_3
8083    ,xet.reference_num_4
8084    ,xet.reference_char_1
8085    ,xet.reference_char_2
8086    ,xet.reference_char_3
8087    ,xet.reference_char_4
8088    ,xet.reference_date_1
8089    ,xet.reference_date_2
8090    ,xet.reference_date_3
8091    ,xet.reference_date_4
8092    ,xet.event_created_by
8093    ,xet.budgetary_control_flag 
8094   , h1.ASP_WHEN_TO_ACCOUNT_PMT    source_5
8095   , h1.ASP_AUTOMATIC_OFFSETS_VALUE    source_9
8096   , fvl9.meaning   source_9_meaning
8097   , h3.TREASURY_CONFIRMATION_ID    source_13
8098   FROM xla_events_gt     xet 
8099   , AP_SYSTEM_PARAMETERS_EXTRACT_V  h1
8100   , FV_TREASURY_EXTRACT_HEADER_V  h3
8101   , fnd_lookup_values    fvl9
8102  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
8103    and xet.event_class_code = C_EVENT_CLASS_CODE
8104    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
8105  AND h3.org_id = h1.asp_org_id   AND fvl9.lookup_type(+)         = 'LIABILITY FLEXBUILD METHOD'
8106   AND fvl9.lookup_code(+)         = h1.ASP_AUTOMATIC_OFFSETS_VALUE
8107   AND fvl9.view_application_id(+) = 200
8108   AND fvl9.language(+)            = USERENV('LANG')
8109   
8110  ORDER BY event_id
8111 ;
8112 
8113 
8114 --
8115 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
8116 IS
8117 SELECT  /*+ leading(xet) cardinality(xet,1) */
8118 -- Event Class Code: TREASURY_ACCOMPLISHMENT
8119     xet.entity_id
8120    ,xet.legal_entity_id
8121    ,xet.entity_code
8122    ,xet.transaction_number
8123    ,xet.event_id
8124    ,xet.event_class_code
8125    ,xet.event_type_code
8126    ,xet.event_number
8127    ,xet.event_date
8128    ,xet.transaction_date
8129    ,xet.reference_num_1
8130    ,xet.reference_num_2
8131    ,xet.reference_num_3
8132    ,xet.reference_num_4
8133    ,xet.reference_char_1
8134    ,xet.reference_char_2
8135    ,xet.reference_char_3
8136    ,xet.reference_char_4
8137    ,xet.reference_date_1
8138    ,xet.reference_date_2
8139    ,xet.reference_date_3
8140    ,xet.reference_date_4
8141    ,xet.event_created_by
8142    ,xet.budgetary_control_flag
8143  , l2.LINE_NUMBER  
8144   , l2.FV_CHECK_NUMBER    source_1
8145   , l2.FV_CHECK_DATE    source_2
8146   , l2.FV_TREASURY_PAY_NUMBER    source_3
8147   , l2.FV_AP_CASH_ACCOUNT    source_4
8148   , l2.FV_AP_CASH_CLEARING_CCID    source_6
8149   , l2.DIT_CONFIRM_CASH_ACCOUNT    source_7
8150   , l2.FV_INV_DIST_CCID    source_8
8151   , l2.FV_AP_LIABILITY_ACCOUNT    source_10
8152   , l2.FV_INV_TYPE_LOOKUP_CODE    source_11
8153   , l2.FV_BUS_FLOW_FV_APP_ID    source_14
8154   , l2.FV_BUS_FLOW_TREASURY_DIST_TYPE    source_15
8155   , l2.FV_BUS_FLOW_TREAS_ENTITY_CODE    source_16
8156   , l2.FV_PAY_HIST_DIST_ID    source_17
8157   , l2.FV_TREASURY_CONFIRMATION_ID    source_18
8158   , l2.FV_PAY_DIST_AMOUNT    source_19
8159   , l2.FV_INV_CURRENCY_CODE    source_20
8160   , l2.FV_INV_EXCHANGE_DATE    source_21
8161   , l2.FV_INV_EXCHANGE_RATE    source_22
8165   , FV_TREASURY_EXTRACT_DETAILS_V  l2
8162   , l2.FV_INV_EXCHANGE_RATE_TYPE    source_23
8163   , l2.FV_REV_PAY_HIST_DIST_ID    source_24
8164   FROM xla_events_gt     xet 
8166  WHERE xet.event_id between x_first_event_id and x_last_event_id
8167    and xet.event_date between p_pad_start_date and p_pad_end_date
8168    and xet.event_class_code = C_EVENT_CLASS_CODE
8169    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
8170 ;
8171 
8172 --
8173 BEGIN
8174 IF g_log_enabled THEN
8175    l_log_module := C_DEFAULT_MODULE||'.EventClass_19';
8176 END IF;
8177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8178    trace
8179       (p_msg      => 'BEGIN of EventClass_19'
8180       ,p_level    => C_LEVEL_PROCEDURE
8181       ,p_module   => l_log_module);
8182 END IF;
8183 
8184 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8185    trace
8186       (p_msg      => 'p_application_id = '||p_application_id||
8187                      ' - p_base_ledger_id = '||p_base_ledger_id||
8188                      ' - p_target_ledger_id  = '||p_target_ledger_id||
8189                      ' - p_language = '||p_language||
8190                      ' - p_currency_code = '||p_currency_code||
8191                      ' - p_sla_ledger_id = '||p_sla_ledger_id
8192       ,p_level    => C_LEVEL_STATEMENT
8193       ,p_module   => l_log_module);
8194 END IF;
8195 --
8196 -- initialze arrays
8197 --
8198 g_array_event.DELETE;
8199 l_rec_array_event := l_null_rec_array_event;
8200 --
8201 --------------------------------------
8202 -- 4262811 Initialze MPA Line Number
8203 --------------------------------------
8204 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
8205 
8206 --
8207 
8208 --
8209 OPEN header_cur;
8210 --
8211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8212    trace
8213    (p_msg      => 'SQL - FETCH header_cur'
8214    ,p_level    => C_LEVEL_STATEMENT
8215    ,p_module   => l_log_module);
8216 END IF;
8217 --
8218 LOOP
8219 FETCH header_cur BULK COLLECT INTO
8220         l_array_entity_id
8221       , l_array_legal_entity_id
8222       , l_array_entity_code
8223       , l_array_transaction_num
8224       , l_array_event_id
8225       , l_array_class_code
8226       , l_array_event_type
8227       , l_array_event_number
8228       , l_array_event_date
8229       , l_array_transaction_date
8230       , l_array_reference_num_1
8231       , l_array_reference_num_2
8232       , l_array_reference_num_3
8233       , l_array_reference_num_4
8234       , l_array_reference_char_1
8235       , l_array_reference_char_2
8236       , l_array_reference_char_3
8237       , l_array_reference_char_4
8238       , l_array_reference_date_1
8239       , l_array_reference_date_2
8240       , l_array_reference_date_3
8241       , l_array_reference_date_4
8242       , l_array_event_created_by
8243       , l_array_budgetary_control_flag 
8244       , l_array_source_5
8245       , l_array_source_9
8246       , l_array_source_9_meaning
8247       , l_array_source_13
8248       LIMIT l_rows;
8249 --
8250 IF (C_LEVEL_EVENT >= g_log_level) THEN
8251    trace
8252    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
8253    ,p_level    => C_LEVEL_EVENT
8254    ,p_module   => l_log_module);
8255 END IF;
8256 --
8257 EXIT WHEN l_array_entity_id.COUNT = 0;
8258 
8259 -- initialize arrays
8260 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
8261 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
8262 
8263 --
8264 -- Bug 4458708
8265 --
8266 XLA_AE_LINES_PKG.g_LineNumber := 0;
8267 
8268 
8269 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
8270 g_last_hdr_idx := l_array_event_id.LAST;
8271 --
8272 -- loop for the headers. Each iteration is for each header extract row
8273 -- fetched in header cursor
8274 --
8275 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
8276 
8277 --
8278 -- set event info as cache for other routines to refer event attributes
8279 --
8280 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
8281    (p_application_id           => p_application_id
8282    ,p_primary_ledger_id        => p_primary_ledger_id
8283    ,p_base_ledger_id           => p_base_ledger_id
8284    ,p_target_ledger_id         => p_target_ledger_id
8285    ,p_entity_id                => l_array_entity_id(hdr_idx)
8286    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
8287    ,p_entity_code              => l_array_entity_code(hdr_idx)
8288    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
8289    ,p_event_id                 => l_array_event_id(hdr_idx)
8290    ,p_event_class_code         => l_array_class_code(hdr_idx)
8291    ,p_event_type_code          => l_array_event_type(hdr_idx)
8292    ,p_event_number             => l_array_event_number(hdr_idx)
8293    ,p_event_date               => l_array_event_date(hdr_idx)
8294    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
8295    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
8296    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
8297    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
8298    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
8299    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
8300    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
8301    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
8302    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
8303    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
8307    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
8304    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
8305    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
8306    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
8308    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
8309 
8310 --
8311 -- set the status of entry to C_VALID (0)
8312 --
8313 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
8314 
8315 --
8316 -- initialize a row for ae header
8317 --
8318 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
8319 
8320 l_event_id := l_array_event_id(hdr_idx);
8321 
8322 --
8323 -- storing the hdr_idx for event. May be used by line cursor.
8324 --
8325 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
8326 
8327 --
8328 -- store sources from header extract. This can be improved to
8329 -- store only those sources from header extract that may be used in lines
8330 --
8331 
8332 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
8333 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
8334 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
8335 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
8336 
8337 --
8338 -- initilaize the status of ae headers for diffrent balance types
8339 -- the status is initialised to C_NOT_CREATED (2)
8340 --
8341 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
8342 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
8343 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
8344 
8345 --
8346 -- call api to validate and store accounting attributes for header
8347 --
8348 
8349 ------------------------------------------------------------
8350 -- Accrual Reversal : to get date for Standard Source (NONE)
8351 ------------------------------------------------------------
8352 l_acc_rev_gl_date_source := NULL;
8353 
8354      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
8355       l_rec_acct_attrs.array_date_value(1) := 
8356 xla_ae_sources_pkg.GetSystemSourceDate(
8357    p_source_code           => 'XLA_EVENT_DATE'
8358  , p_source_type_code      => 'Y'
8359  , p_source_application_id =>  602
8360 );
8361 
8362 
8363 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
8364 
8365 XLA_AE_HEADER_PKG.SetJeCategoryName;
8366 
8367 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
8368 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
8369 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
8370 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
8371 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
8372 
8373 
8374 
8375 
8376 --
8377 --accounting attribute enhancement, bug 3612931
8378 --
8379 l_trx_reversal_source := SUBSTR(NULL, 1,30);
8380 
8381 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
8382    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
8383 
8384    xla_accounting_err_pkg.build_message
8385       (p_appli_s_name            => 'XLA'
8386       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
8387       ,p_token_1                 => 'ACCT_ATTR_NAME'
8388       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
8389       ,p_token_2                 => 'PRODUCT_NAME'
8390       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
8391       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
8392       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
8393       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
8394 
8395 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
8396    --
8397    -- following sets the accounting attributes needed to reverse
8398    -- accounting for a distributeion
8399    --
8400    xla_ae_lines_pkg.SetTrxReversalAttrs
8401       (p_event_id              => l_event_id
8402       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
8403       ,p_trx_reversal_source   => l_trx_reversal_source);
8404 
8405 END IF;
8406 
8407 
8408 ----------------------------------------------------------------
8409 -- 4262811 -  update the header statuses to invalid in need be
8410 ----------------------------------------------------------------
8411 --
8412 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
8413 
8414 
8415   -----------------------------------------------
8416   -- No accrual reversal for the event class/type
8417   -----------------------------------------------
8418 ----------------------------------------------------------------
8419 
8420 --
8421 -- this ends the header loop iteration for one bulk fetch
8422 --
8423 END LOOP;
8424 
8425 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
8426 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
8427 
8428 --
8429 -- insert dummy rows into lines gt table that were created due to
8430 -- transaction reversals
8431 --
8432 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
8433    l_result := XLA_AE_LINES_PKG.InsertLines;
8434 END IF;
8435 
8436 --
8437 -- reset the temp_line_num for each set of events fetched from header
8438 -- cursor rather than doing it for each new event in line cursor
8442 
8439 -- Bug 3939231
8440 --
8441 xla_ae_lines_pkg.g_temp_line_num := 0;
8443 
8444 
8445 --
8446 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
8447 --
8448 --
8449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8450 
8451       trace
8452          (p_msg      => 'SQL - FETCH line_cur'
8453          ,p_level    => C_LEVEL_STATEMENT
8454          ,p_module   => l_log_module);
8455 
8456 END IF;
8457 --
8458 --
8459 LOOP
8460   --
8461   FETCH line_cur BULK COLLECT INTO
8462         l_array_entity_id
8463       , l_array_legal_entity_id
8464       , l_array_entity_code
8465       , l_array_transaction_num
8466       , l_array_event_id
8467       , l_array_class_code
8468       , l_array_event_type
8469       , l_array_event_number
8470       , l_array_event_date
8471       , l_array_transaction_date
8472       , l_array_reference_num_1
8473       , l_array_reference_num_2
8474       , l_array_reference_num_3
8475       , l_array_reference_num_4
8476       , l_array_reference_char_1
8477       , l_array_reference_char_2
8478       , l_array_reference_char_3
8479       , l_array_reference_char_4
8480       , l_array_reference_date_1
8481       , l_array_reference_date_2
8482       , l_array_reference_date_3
8483       , l_array_reference_date_4
8484       , l_array_event_created_by
8485       , l_array_budgetary_control_flag
8486       , l_array_extract_line_num 
8487       , l_array_source_1
8488       , l_array_source_2
8489       , l_array_source_3
8490       , l_array_source_4
8491       , l_array_source_6
8492       , l_array_source_7
8493       , l_array_source_8
8494       , l_array_source_10
8495       , l_array_source_11
8496       , l_array_source_14
8497       , l_array_source_15
8498       , l_array_source_16
8499       , l_array_source_17
8500       , l_array_source_18
8501       , l_array_source_19
8502       , l_array_source_20
8503       , l_array_source_21
8504       , l_array_source_22
8505       , l_array_source_23
8506       , l_array_source_24
8507       LIMIT l_rows;
8508 
8509   --
8510   IF (C_LEVEL_EVENT >= g_log_level) THEN
8511             trace
8512                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
8513                ,p_level    => C_LEVEL_EVENT
8514                ,p_module   => l_log_module);
8515   END IF;
8516   --
8517   EXIT WHEN l_array_entity_id.count = 0;
8518 
8519   XLA_AE_LINES_PKG.g_rec_lines := null;
8520 
8521 --
8522 -- Bug 4458708
8523 --
8524 XLA_AE_LINES_PKG.g_LineNumber := 0;
8525 --
8526 --
8527 
8528 FOR Idx IN 1..l_array_event_id.count LOOP
8529    --
8530    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
8531    --
8532    l_event_id := l_array_event_id(idx);  -- 5648433
8533 
8534    --
8535    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
8536    --
8537 
8538    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
8539              (g_array_event(l_event_id).array_value_num('header_index'))
8540          ,'N'
8541          ) <> 'Y'
8542    THEN
8543       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8544          trace
8545             (p_msg      => 'Trancaction revesal option is not Y '
8546             ,p_level    => C_LEVEL_STATEMENT
8547             ,p_module   => l_log_module);
8548       END IF;
8549 
8550 --
8551 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
8552 --
8553 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
8554 --
8555 -- set event info as cache for other routines to refer event attributes
8556 --
8557 
8558 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
8559    l_previous_event_id := l_event_id;
8560 
8561    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
8562       (p_application_id           => p_application_id
8563       ,p_primary_ledger_id        => p_primary_ledger_id
8564       ,p_base_ledger_id           => p_base_ledger_id
8565       ,p_target_ledger_id         => p_target_ledger_id
8566       ,p_entity_id                => l_array_entity_id(Idx)
8567       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
8568       ,p_entity_code              => l_array_entity_code(Idx)
8569       ,p_transaction_num          => l_array_transaction_num(Idx)
8570       ,p_event_id                 => l_array_event_id(Idx)
8571       ,p_event_class_code         => l_array_class_code(Idx)
8572       ,p_event_type_code          => l_array_event_type(Idx)
8573       ,p_event_number             => l_array_event_number(Idx)
8574       ,p_event_date               => l_array_event_date(Idx)
8575       ,p_transaction_date         => l_array_transaction_date(Idx)
8576       ,p_reference_num_1          => l_array_reference_num_1(Idx)
8577       ,p_reference_num_2          => l_array_reference_num_2(Idx)
8578       ,p_reference_num_3          => l_array_reference_num_3(Idx)
8579       ,p_reference_num_4          => l_array_reference_num_4(Idx)
8580       ,p_reference_char_1         => l_array_reference_char_1(Idx)
8581       ,p_reference_char_2         => l_array_reference_char_2(Idx)
8582       ,p_reference_char_3         => l_array_reference_char_3(Idx)
8583       ,p_reference_char_4         => l_array_reference_char_4(Idx)
8584       ,p_reference_date_1         => l_array_reference_date_1(Idx)
8585       ,p_reference_date_2         => l_array_reference_date_2(Idx)
8586       ,p_reference_date_3         => l_array_reference_date_3(Idx)
8587       ,p_reference_date_4         => l_array_reference_date_4(Idx)
8588       ,p_event_created_by         => l_array_event_created_by(Idx)
8589       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
8593 
8590        --
8591 END IF;
8592 
8594 
8595 --
8596 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
8597 
8598 l_acct_reversal_source := SUBSTR(NULL, 1,30);
8599 
8600 IF l_continue_with_lines THEN
8601    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
8602       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
8603 
8604       xla_accounting_err_pkg.build_message
8605          (p_appli_s_name            => 'XLA'
8606          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
8607          ,p_token_1                 => 'LINE_NUMBER'
8608          ,p_value_1                 => l_array_extract_line_num(Idx)
8609          ,p_token_2                 => 'PRODUCT_NAME'
8610          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
8611          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
8612          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
8613          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
8614 
8615    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
8616       --
8617       -- following sets the accounting attributes needed to reverse
8618       -- accounting for a distributeion
8619       --
8620 
8621       --
8622       -- 5217187
8623       --
8624       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
8625       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
8626                                        g_array_event(l_event_id).array_value_num('header_index'));
8627       --
8628       --
8629 
8630       -- No reversal code generated
8631 
8632       xla_ae_lines_pkg.SetAcctReversalAttrs
8633          (p_event_id             => l_event_id
8634          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
8635          ,p_calculate_acctd_flag => l_calculate_acctd_flag
8636          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
8637    END IF;
8638 
8639    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
8640        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
8641 
8642 --
8643 AcctLineType_9 (
8644  p_application_id  => p_application_id
8645  ,p_event_id     => l_event_id
8646  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8647  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8648  ,p_actual_flag => l_actual_flag
8649  ,p_balance_type_code => l_balance_type_code
8650  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8651  
8652  , p_source_1 => l_array_source_1(Idx)
8653  , p_source_2 => l_array_source_2(Idx)
8654  , p_source_3 => l_array_source_3(Idx)
8655  , p_source_4 => l_array_source_4(Idx)
8656  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
8657  , p_source_6 => l_array_source_6(Idx)
8658  , p_source_8 => l_array_source_8(Idx)
8659  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
8660  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
8661  , p_source_10 => l_array_source_10(Idx)
8662  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
8663  , p_source_14 => l_array_source_14(Idx)
8664  , p_source_15 => l_array_source_15(Idx)
8665  , p_source_16 => l_array_source_16(Idx)
8666  , p_source_17 => l_array_source_17(Idx)
8667  , p_source_18 => l_array_source_18(Idx)
8668  , p_source_19 => l_array_source_19(Idx)
8669  , p_source_20 => l_array_source_20(Idx)
8670  , p_source_21 => l_array_source_21(Idx)
8671  , p_source_22 => l_array_source_22(Idx)
8672  , p_source_23 => l_array_source_23(Idx)
8673  );
8674 If(l_balance_type_code = 'A') THEN
8675   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8676 END IF;
8677 
8678 --
8679 
8680 
8681 --
8682 AcctLineType_10 (
8683  p_application_id  => p_application_id
8684  ,p_event_id     => l_event_id
8685  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8686  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8687  ,p_actual_flag => l_actual_flag
8688  ,p_balance_type_code => l_balance_type_code
8689  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8690  
8691  , p_source_14 => l_array_source_14(Idx)
8692  , p_source_15 => l_array_source_15(Idx)
8693  , p_source_16 => l_array_source_16(Idx)
8694  , p_source_17 => l_array_source_17(Idx)
8695  , p_source_18 => l_array_source_18(Idx)
8696  , p_source_19 => l_array_source_19(Idx)
8697  , p_source_20 => l_array_source_20(Idx)
8698  , p_source_24 => l_array_source_24(Idx)
8699  );
8700 If(l_balance_type_code = 'A') THEN
8701   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8702 END IF;
8703 
8704 --
8705 
8706 
8707 --
8708 AcctLineType_11 (
8709  p_application_id  => p_application_id
8710  ,p_event_id     => l_event_id
8711  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8712  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8713  ,p_actual_flag => l_actual_flag
8714  ,p_balance_type_code => l_balance_type_code
8715  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8716  
8717  , p_source_1 => l_array_source_1(Idx)
8718  , p_source_2 => l_array_source_2(Idx)
8719  , p_source_3 => l_array_source_3(Idx)
8720  , p_source_7 => l_array_source_7(Idx)
8721  , p_source_8 => l_array_source_8(Idx)
8722  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
8723  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
8724  , p_source_10 => l_array_source_10(Idx)
8725  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
8726  , p_source_14 => l_array_source_14(Idx)
8727  , p_source_15 => l_array_source_15(Idx)
8728  , p_source_16 => l_array_source_16(Idx)
8729  , p_source_17 => l_array_source_17(Idx)
8733  , p_source_21 => l_array_source_21(Idx)
8730  , p_source_18 => l_array_source_18(Idx)
8731  , p_source_19 => l_array_source_19(Idx)
8732  , p_source_20 => l_array_source_20(Idx)
8734  , p_source_22 => l_array_source_22(Idx)
8735  , p_source_23 => l_array_source_23(Idx)
8736  );
8737 If(l_balance_type_code = 'A') THEN
8738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8739 END IF;
8740 
8741 --
8742 
8743 
8744 --
8745 AcctLineType_12 (
8746  p_application_id  => p_application_id
8747  ,p_event_id     => l_event_id
8748  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8749  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8750  ,p_actual_flag => l_actual_flag
8751  ,p_balance_type_code => l_balance_type_code
8752  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8753  
8754  , p_source_14 => l_array_source_14(Idx)
8755  , p_source_15 => l_array_source_15(Idx)
8756  , p_source_16 => l_array_source_16(Idx)
8757  , p_source_17 => l_array_source_17(Idx)
8758  , p_source_18 => l_array_source_18(Idx)
8759  , p_source_19 => l_array_source_19(Idx)
8760  , p_source_20 => l_array_source_20(Idx)
8761  , p_source_24 => l_array_source_24(Idx)
8762  );
8763 If(l_balance_type_code = 'A') THEN
8764   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8765 END IF;
8766 
8767 --
8768 
8769 
8770 --
8771 AcctLineType_13 (
8772  p_application_id  => p_application_id
8773  ,p_event_id     => l_event_id
8774  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8775  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8776  ,p_actual_flag => l_actual_flag
8777  ,p_balance_type_code => l_balance_type_code
8778  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8779  
8780  , p_source_1 => l_array_source_1(Idx)
8781  , p_source_2 => l_array_source_2(Idx)
8782  , p_source_3 => l_array_source_3(Idx)
8783  , p_source_8 => l_array_source_8(Idx)
8784  , p_source_11 => l_array_source_11(Idx)
8785  , p_source_14 => l_array_source_14(Idx)
8786  , p_source_15 => l_array_source_15(Idx)
8787  , p_source_16 => l_array_source_16(Idx)
8788  , p_source_17 => l_array_source_17(Idx)
8789  , p_source_18 => l_array_source_18(Idx)
8790  , p_source_19 => l_array_source_19(Idx)
8791  , p_source_20 => l_array_source_20(Idx)
8792  , p_source_21 => l_array_source_21(Idx)
8793  , p_source_22 => l_array_source_22(Idx)
8794  , p_source_23 => l_array_source_23(Idx)
8795  );
8796 If(l_balance_type_code = 'A') THEN
8797   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8798 END IF;
8799 
8800 --
8801 
8802 
8803 --
8804 AcctLineType_14 (
8805  p_application_id  => p_application_id
8806  ,p_event_id     => l_event_id
8807  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8808  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8809  ,p_actual_flag => l_actual_flag
8810  ,p_balance_type_code => l_balance_type_code
8811  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8812  
8813  , p_source_14 => l_array_source_14(Idx)
8814  , p_source_15 => l_array_source_15(Idx)
8815  , p_source_16 => l_array_source_16(Idx)
8816  , p_source_17 => l_array_source_17(Idx)
8817  , p_source_18 => l_array_source_18(Idx)
8818  , p_source_19 => l_array_source_19(Idx)
8819  , p_source_20 => l_array_source_20(Idx)
8820  , p_source_24 => l_array_source_24(Idx)
8821  );
8822 If(l_balance_type_code = 'A') THEN
8823   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8824 END IF;
8825 
8826 --
8827 
8828 
8829 --
8830 AcctLineType_15 (
8831  p_application_id  => p_application_id
8832  ,p_event_id     => l_event_id
8833  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8834  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8835  ,p_actual_flag => l_actual_flag
8836  ,p_balance_type_code => l_balance_type_code
8837  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8838  
8839  , p_source_1 => l_array_source_1(Idx)
8840  , p_source_2 => l_array_source_2(Idx)
8841  , p_source_3 => l_array_source_3(Idx)
8842  , p_source_8 => l_array_source_8(Idx)
8843  , p_source_11 => l_array_source_11(Idx)
8844  , p_source_14 => l_array_source_14(Idx)
8845  , p_source_15 => l_array_source_15(Idx)
8846  , p_source_16 => l_array_source_16(Idx)
8847  , p_source_17 => l_array_source_17(Idx)
8848  , p_source_18 => l_array_source_18(Idx)
8849  , p_source_19 => l_array_source_19(Idx)
8850  , p_source_20 => l_array_source_20(Idx)
8851  , p_source_21 => l_array_source_21(Idx)
8852  , p_source_22 => l_array_source_22(Idx)
8853  , p_source_23 => l_array_source_23(Idx)
8854  );
8855 If(l_balance_type_code = 'A') THEN
8856   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8857 END IF;
8858 
8859 --
8860 
8861 
8862 --
8863 AcctLineType_16 (
8864  p_application_id  => p_application_id
8865  ,p_event_id     => l_event_id
8866  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8867  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8868  ,p_actual_flag => l_actual_flag
8869  ,p_balance_type_code => l_balance_type_code
8870  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8871  
8872  , p_source_14 => l_array_source_14(Idx)
8873  , p_source_15 => l_array_source_15(Idx)
8874  , p_source_16 => l_array_source_16(Idx)
8875  , p_source_17 => l_array_source_17(Idx)
8876  , p_source_18 => l_array_source_18(Idx)
8877  , p_source_19 => l_array_source_19(Idx)
8878  , p_source_20 => l_array_source_20(Idx)
8879  , p_source_24 => l_array_source_24(Idx)
8880  );
8881 If(l_balance_type_code = 'A') THEN
8882   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8883 END IF;
8884 
8885 --
8886 
8887       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
8888       -- or secondary ledger that has different currency with primary
8892 
8889       -- or alc that is calculated by sla
8890       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
8891             (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'))
8893 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
8894 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
8895           AND (l_actual_flag = 'A')) THEN
8896         XLA_AE_LINES_PKG.CreateGainOrLossLines(
8897           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
8898          ,p_application_id   => p_application_id
8899          ,p_amb_context_code => 'DEFAULT'
8900          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
8901          ,p_event_class_code => C_EVENT_CLASS_CODE
8902          ,p_event_type_code  => C_EVENT_TYPE_CODE
8903          
8904          ,p_gain_ccid        => -1
8905          ,p_loss_ccid        => -1
8906 
8907          ,p_actual_flag      => l_actual_flag
8908          ,p_enc_flag         => null
8909          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
8910          ,p_enc_g_l_ref      => null
8911          );
8912       END IF;
8913    END IF;
8914 END IF;
8915 
8916    ELSE
8917       --
8918       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
8919       --
8920       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8921          trace
8922             (p_msg      => 'Trancaction revesal option is Y'
8923             ,p_level    => C_LEVEL_STATEMENT
8924             ,p_module   => l_log_module);
8925       END IF;
8926    END IF;
8927 
8928 END LOOP;
8929 l_result := XLA_AE_LINES_PKG.InsertLines ;
8930 end loop;
8931 close line_cur;
8932 
8933 
8934 --
8935 -- insert headers into xla_ae_headers_gt table
8936 --
8937 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
8938 
8939 -- insert into errors table here.
8940 
8941 END LOOP;
8942 
8943 --
8944 -- 4865292
8945 --
8946 -- Compare g_hdr_extract_count with event count in
8947 -- CreateHeadersAndLines.
8948 --
8949 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
8950 
8951 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8952    trace (p_msg     => '# rows extracted from header extract objects '
8953                     || ' (running total): '
8954                     || g_hdr_extract_count
8955          ,p_level   => C_LEVEL_STATEMENT
8956          ,p_module  => l_log_module);
8957 END IF;
8958 
8959 CLOSE header_cur;
8960 --
8961 
8962 --
8963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8964    trace
8965       (p_msg      => 'END of EventClass_19'
8966       ,p_level    => C_LEVEL_PROCEDURE
8967       ,p_module   => l_log_module);
8968 END IF;
8969 --
8970 RETURN l_result;
8971 EXCEPTION
8972 WHEN xla_exceptions_pkg.application_exception THEN
8973    
8974 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
8975 
8976    
8977 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
8978 
8979    RAISE;
8980 WHEN OTHERS THEN
8981    xla_exceptions_pkg.raise_message
8982       (p_location => 'XLA_08901_AAD_S_000002_PKG.EventClass_19');
8983 END EventClass_19;
8984 --
8985 
8986 --
8987 --+============================================+
8988 --|                                            |
8989 --|  PRIVATE FUNCTION                          |
8990 --|                                            |
8991 --+============================================+
8992 --
8993 FUNCTION CreateHeadersAndLines
8994        (p_application_id         IN NUMBER
8995        ,p_base_ledger_id         IN NUMBER
8996        ,p_target_ledger_id       IN NUMBER
8997        ,p_pad_start_date         IN DATE
8998        ,p_pad_end_date           IN DATE
8999        ,p_primary_ledger_id      IN NUMBER)
9000 RETURN BOOLEAN IS
9001 l_created                   BOOLEAN:=FALSE;
9002 l_event_id                  NUMBER;
9003 l_event_date                DATE;
9004 l_language                  VARCHAR2(30);
9005 l_currency_code             VARCHAR2(30);
9006 l_sla_ledger_id             NUMBER;
9007 l_log_module                VARCHAR2(240);
9008 
9009 BEGIN
9010 --
9011 IF g_log_enabled THEN
9012    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
9013 END IF;
9014 --
9015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9016    trace
9017       (p_msg      => 'BEGIN of CreateHeadersAndLines'
9018       ,p_level    => C_LEVEL_PROCEDURE
9019       ,p_module   => l_log_module);
9020 END IF;
9021 
9022 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
9023 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
9024 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
9025 
9026 --
9027 -- initialize array of lines with NULL
9028 --
9029 xla_ae_lines_pkg.SetNullLine;
9030 
9031 --
9032 -- initialize header extract count -- Bug 4865292
9033 --
9034 g_hdr_extract_count:= 0;
9035 
9036 
9037 l_created := EventClass_17(
9038    p_application_id         => p_application_id
9039  , p_base_ledger_id         => p_base_ledger_id
9040  , p_target_ledger_id       => p_target_ledger_id
9041  , p_language               => l_language
9042  , p_currency_code          => l_currency_code
9043  , p_sla_ledger_id          => l_sla_ledger_id
9044  , p_pad_start_date         => p_pad_start_date
9048 
9045  , p_pad_end_date           => p_pad_end_date
9046  , p_primary_ledger_id      => p_primary_ledger_id
9047 );
9049 
9050 
9051      IF ( g_diagnostics_mode ='Y' ) THEN
9052 
9053          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9054           trace
9055               (p_msg      => 'CALL Transaction Objects Diagnostics'
9056               ,p_level    => C_LEVEL_STATEMENT
9057               ,p_module   => l_log_module);
9058 
9059          END IF;
9060 
9061          insert_sources_17(
9062                           p_target_ledger_id => p_target_ledger_id
9063                         , p_language         => l_language
9064                         , p_sla_ledger_id    => l_sla_ledger_id
9065                         , p_pad_start_date   => p_pad_start_date
9066                         , p_pad_end_date     => p_pad_end_date
9067                           );
9068 
9069      END IF;
9070 
9071 l_created := EventClass_18(
9072    p_application_id         => p_application_id
9073  , p_base_ledger_id         => p_base_ledger_id
9074  , p_target_ledger_id       => p_target_ledger_id
9075  , p_language               => l_language
9076  , p_currency_code          => l_currency_code
9077  , p_sla_ledger_id          => l_sla_ledger_id
9078  , p_pad_start_date         => p_pad_start_date
9079  , p_pad_end_date           => p_pad_end_date
9080  , p_primary_ledger_id      => p_primary_ledger_id
9081 );
9082 
9083 
9084 
9085      IF ( g_diagnostics_mode ='Y' ) THEN
9086 
9087          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9088           trace
9089               (p_msg      => 'CALL Transaction Objects Diagnostics'
9090               ,p_level    => C_LEVEL_STATEMENT
9091               ,p_module   => l_log_module);
9092 
9093          END IF;
9094 
9095          insert_sources_18(
9096                           p_target_ledger_id => p_target_ledger_id
9097                         , p_language         => l_language
9098                         , p_sla_ledger_id    => l_sla_ledger_id
9099                         , p_pad_start_date   => p_pad_start_date
9100                         , p_pad_end_date     => p_pad_end_date
9101                           );
9102 
9103      END IF;
9104 
9105 l_created := EventClass_19(
9106    p_application_id         => p_application_id
9107  , p_base_ledger_id         => p_base_ledger_id
9108  , p_target_ledger_id       => p_target_ledger_id
9109  , p_language               => l_language
9110  , p_currency_code          => l_currency_code
9111  , p_sla_ledger_id          => l_sla_ledger_id
9112  , p_pad_start_date         => p_pad_start_date
9113  , p_pad_end_date           => p_pad_end_date
9114  , p_primary_ledger_id      => p_primary_ledger_id
9115 );
9116 
9117 
9118 
9119      IF ( g_diagnostics_mode ='Y' ) THEN
9120 
9121          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9122           trace
9123               (p_msg      => 'CALL Transaction Objects Diagnostics'
9124               ,p_level    => C_LEVEL_STATEMENT
9125               ,p_module   => l_log_module);
9126 
9127          END IF;
9128 
9129          insert_sources_19(
9130                           p_target_ledger_id => p_target_ledger_id
9131                         , p_language         => l_language
9132                         , p_sla_ledger_id    => l_sla_ledger_id
9133                         , p_pad_start_date   => p_pad_start_date
9134                         , p_pad_end_date     => p_pad_end_date
9135                           );
9136 
9137      END IF;
9138 
9139 
9140  --
9141  -- Bug 4865292
9142  -- When the number of events and that of header extract do not match,
9143  -- set the no header extract flag to indicate there are some issues
9144  -- in header extract.
9145  --
9146  -- Event count context is set in xla_accounting_pkg.unit_processor.
9147  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
9148  -- to report it as a general error.
9149  --
9150  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
9151  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
9152 
9153      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9154         trace
9155           (p_msg      => '# of extracted headers and events does not match'
9156           ,p_level    => C_LEVEL_STATEMENT
9157           ,p_module   => l_log_module);
9158 
9159         trace
9160           (p_msg      => '# of extracted headers: '
9161                          ||g_hdr_extract_count
9162           ,p_level    => C_LEVEL_STATEMENT
9163           ,p_module   => l_log_module);
9164 
9165         trace
9166           (p_msg      => '# of events in xla_events_gt: '
9167                          ||xla_context_pkg.get_event_count_context
9168           ,p_level    => C_LEVEL_STATEMENT
9169           ,p_module   => l_log_module);
9170 
9171         trace
9172           (p_msg      => 'Event No Header Extract Context: '
9173                          ||xla_context_pkg.get_event_nohdr_context
9174           ,p_level    => C_LEVEL_STATEMENT
9175           ,p_module   => l_log_module);
9176 
9177      END IF;
9178 
9179 
9180      xla_context_pkg.set_event_nohdr_context
9181        (p_nohdr_extract_flag => 'Y'
9182        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
9183 
9184      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9185         trace
9186           (p_msg      => 'No Header Extract Flag is set to Y'
9187           ,p_level    => C_LEVEL_STATEMENT
9188           ,p_module   => l_log_module);
9189      END IF;
9190 
9191  END IF;
9192 
9196       ,p_level    => C_LEVEL_PROCEDURE
9193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9194    trace
9195       (p_msg      => 'END of CreateHeadersAndLines'
9197       ,p_module   => l_log_module);
9198 END IF;
9199 
9200 RETURN l_created;
9201 EXCEPTION
9202 WHEN xla_exceptions_pkg.application_exception THEN
9203    RAISE;
9204 WHEN OTHERS THEN
9205    xla_exceptions_pkg.raise_message
9206       (p_location => 'XLA_08901_AAD_S_000002_PKG.CreateHeadersAndLines');
9207 END CreateHeadersAndLines;
9208 --
9209 --
9210 
9211 --
9212 --+============================================+
9213 --|                                            |
9214 --|  PUBLIC FUNCTION                           |
9215 --|                                            |
9216 --+============================================+
9217 --
9218 FUNCTION CreateJournalEntries
9219        (p_application_id         IN NUMBER
9220        ,p_base_ledger_id         IN NUMBER
9221        ,p_pad_start_date         IN DATE
9222        ,p_pad_end_date           IN DATE
9223        ,p_primary_ledger_id      IN NUMBER)
9224 RETURN NUMBER IS
9225 l_log_module                   VARCHAR2(240);
9226 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
9227 l_temp_result                  BOOLEAN;
9228 l_result                       NUMBER;
9229 BEGIN
9230 --
9231 IF g_log_enabled THEN
9232    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
9233 END IF;
9234 --
9235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9236    trace
9237       (p_msg      => 'BEGIN of CreateJournalEntries'||
9238                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
9239       ,p_level    => C_LEVEL_PROCEDURE
9240       ,p_module   => l_log_module);
9241 
9242 END IF;
9243 
9244 --
9245 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
9246 
9247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9248    trace
9249       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
9250       ,p_level    => C_LEVEL_STATEMENT
9251       ,p_module   => l_log_module);
9252 END IF;
9253 --
9254 xla_ae_journal_entry_pkg.SetProductAcctDefinition
9255    (p_product_rule_code      => 'FV_STANDARD_AAD'
9256    ,p_product_rule_type_code => 'S'
9257    ,p_product_rule_version   => ''
9258    ,p_product_rule_name      => 'Federal Financials AAD'
9259    ,p_amb_context_code       => 'DEFAULT'
9260    );
9261 
9262 l_array_ledgers :=
9263    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
9264       (p_base_ledger_id  => p_base_ledger_id);
9265 
9266 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
9267    l_temp_result :=
9268       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
9269          (p_application_id           => p_application_id
9270          ,p_base_ledger_id           => p_base_ledger_id
9271          ,p_target_ledger_id         => l_array_ledgers(Idx)
9272          ,p_primary_ledger_id        => p_primary_ledger_id
9273          ,p_pad_start_date           => p_pad_start_date
9274          ,p_pad_end_date             => p_pad_end_date);
9275 
9276    l_temp_result :=
9277       l_temp_result AND
9278       CreateHeadersAndLines
9279          (p_application_id             => p_application_id
9280          ,p_base_ledger_id             => p_base_ledger_id
9281          ,p_target_ledger_id           => l_array_ledgers(Idx)
9282          ,p_pad_start_date             => p_pad_start_date
9283          ,p_pad_end_date               => p_pad_end_date
9284          ,p_primary_ledger_id          => p_primary_ledger_id
9285          );
9286 END LOOP;
9287 
9288 
9289 IF (g_diagnostics_mode = 'Y' AND
9290     C_LEVEL_UNEXPECTED >= g_log_level AND
9291     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
9292 
9293    xla_accounting_dump_pkg.acctg_event_extract_log(
9294     p_application_id  => p_application_id
9295     ,p_request_id     => xla_environment_pkg.g_Req_Id
9296    );
9297 
9298 END IF;
9299 
9300 CASE l_temp_result
9301   WHEN TRUE THEN l_result := 0;
9302   ELSE l_result := 2;
9303 END CASE;
9304 
9305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9306    trace
9307       (p_msg      => 'return value. = '||TO_CHAR(l_result)
9308       ,p_level    => C_LEVEL_PROCEDURE
9309       ,p_module   => l_log_module);
9310    trace
9311       (p_msg      => 'END of CreateJournalEntries '
9312       ,p_level    => C_LEVEL_PROCEDURE
9313       ,p_module   => l_log_module);
9314 END IF;
9315 
9316 RETURN l_result;
9317 EXCEPTION
9318 WHEN xla_exceptions_pkg.application_exception THEN
9319    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9320    trace
9321       (p_msg      => 'ERROR. = '||sqlerrm
9322       ,p_level    => C_LEVEL_PROCEDURE
9323       ,p_module   => l_log_module);
9324    END IF;
9325    RAISE;
9326 WHEN OTHERS THEN
9327    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9328    trace
9329       (p_msg      => 'ERROR. = '||sqlerrm
9330       ,p_level    => C_LEVEL_PROCEDURE
9331       ,p_module   => l_log_module);
9332    END IF;
9333    xla_exceptions_pkg.raise_message
9334       (p_location => 'XLA_08901_AAD_S_000002_PKG.CreateJournalEntries');
9335 END CreateJournalEntries;
9336 --
9337 --=============================================================================
9338 --
9339 --
9340 --
9341 --
9342 --
9343 --
9344 --
9345 --
9346 --
9347 --
9348 --
9349 --
9350 --
9351 --
9352 --
9353 --
9354 --
9355 --
9356 --
9357 --
9358 --
9359 --
9360 --=============================================================================
9361 --=============================================================================
9362 --          *********** Initialization routine **********
9363 --=============================================================================
9364 
9365 BEGIN
9366    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9367    g_log_enabled    := fnd_log.test
9368                           (log_level  => g_log_level
9369                           ,module     => C_DEFAULT_MODULE);
9370 
9371    IF NOT g_log_enabled  THEN
9372       g_log_level := C_LEVEL_LOG_DISABLED;
9373    END IF;
9374 --
9375 END XLA_08901_AAD_S_000002_PKG;
9376 --