DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00260_AAD_S_000001_PKG

Source


1 PACKAGE BODY XLA_00260_AAD_S_000001_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_00260_AAD_S_000001_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Cash Management Standard Accounting                    |
14 |      Code    : CE_STANDARD_ACCOUNTING                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 03-01-2007 at 11:01:19 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_00260_AAD_S_000001_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
110 
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00260_AAD_S_000001_PKG.trace');
109 END trace;
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 
186                 ,p_level    => C_LEVEL_ERROR
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
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_00260_AAD_S_000001_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_00260_AAD_S_000001_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 --Cashflow Reference Text
241  , p_source_1            IN VARCHAR2
242 )
243 RETURN VARCHAR2
244 IS
245 l_component_type        VARCHAR2(80)   ;
246 l_component_code        VARCHAR2(30)   ;
247 l_component_type_code   VARCHAR2(1)    ;
248 l_component_appl_id     INTEGER        ;
249 l_amb_context_code      VARCHAR2(30)   ;
250 l_ledger_language       VARCHAR2(30)   ;
251 l_source                VARCHAR2(1996) ;
252 l_description           VARCHAR2(2000) ;
253 l_log_module            VARCHAR2(240)  ;
254 BEGIN
255 IF g_log_enabled THEN
256       l_log_module := C_DEFAULT_MODULE||'.Description_1';
257 END IF;
258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259       trace
260          (p_msg      => 'BEGIN of Description_1'
261          ,p_level    => C_LEVEL_PROCEDURE
262          ,p_module   => l_log_module);
263 END IF;
264 
265 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
266 l_component_type        := 'AMB_DESCRIPTION';
267 l_component_code        := 'BSL_HEADER_DESCRIPTION';
268 l_component_type_code   := 'S';
269 l_component_appl_id     :=  260;
270 l_amb_context_code      := 'DEFAULT';
271 l_source                := NULL;
272 l_description           := NULL;
273 
274 
275   
276   l_source := SUBSTR(p_source_1,1,1996);
277   IF l_source IS NOT NULL THEN
278     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
279     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
280   END IF; 
281  l_description := SUBSTR(l_description,1,1996);
282   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283         trace
284            (p_msg      => 'END of Description_1'
285            ,p_level    => C_LEVEL_PROCEDURE
286            ,p_module   => l_log_module);
287 
288   END IF;
289   RETURN l_description;
290 
291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
292       trace
293          (p_msg      => 'END of Description_1'
294          ,p_level    => C_LEVEL_PROCEDURE
295          ,p_module   => l_log_module);
296 END IF;
297 RETURN NULL;
298 EXCEPTION
299   WHEN VALUE_ERROR THEN
300      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
304                ,p_module   => l_log_module);
301             trace
302                (p_msg      => 'ERROR: '||sqlerrm
303                ,p_level    => C_LEVEL_EXCEPTION
305      END IF;
306      RAISE;
307  WHEN xla_exceptions_pkg.application_exception THEN
308       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
309       trace
310          (p_msg      => 'ERROR: '||sqlerrm
311          ,p_level    => C_LEVEL_EXCEPTION
312          ,p_module   => l_log_module);
313       END IF;
314       RAISE;
315  WHEN OTHERS THEN
316        xla_exceptions_pkg.raise_message
317            (p_location => 'XLA_00260_AAD_S_000001_PKG.Description_1');
318 END Description_1;
319 
320 ---------------------------------------
321 --
322 -- PRIVATE FUNCTION
323 --         Description_2
324 --
325 ---------------------------------------
326 FUNCTION Description_2 (
327   p_application_id      IN NUMBER
328 , p_ae_header_id        IN NUMBER DEFAULT NULL 
329 --Cashflow Description
333 IS
330  , p_source_2            IN VARCHAR2
331 )
332 RETURN VARCHAR2
334 l_component_type        VARCHAR2(80)   ;
335 l_component_code        VARCHAR2(30)   ;
336 l_component_type_code   VARCHAR2(1)    ;
337 l_component_appl_id     INTEGER        ;
338 l_amb_context_code      VARCHAR2(30)   ;
339 l_ledger_language       VARCHAR2(30)   ;
340 l_source                VARCHAR2(1996) ;
341 l_description           VARCHAR2(2000) ;
342 l_log_module            VARCHAR2(240)  ;
343 BEGIN
344 IF g_log_enabled THEN
345       l_log_module := C_DEFAULT_MODULE||'.Description_2';
346 END IF;
347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
348       trace
349          (p_msg      => 'BEGIN of Description_2'
350          ,p_level    => C_LEVEL_PROCEDURE
351          ,p_module   => l_log_module);
352 END IF;
353 
354 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
355 l_component_type        := 'AMB_DESCRIPTION';
356 l_component_code        := 'BSL_LINE_DESCRIPTION';
357 l_component_type_code   := 'S';
358 l_component_appl_id     :=  260;
359 l_amb_context_code      := 'DEFAULT';
360 l_source                := NULL;
361 l_description           := NULL;
362 
363 
364   
365   l_source := SUBSTR(p_source_2,1,1996);
366   IF l_source IS NOT NULL THEN
367     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
368     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
369   END IF; 
370  l_description := SUBSTR(l_description,1,1996);
371   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372         trace
373            (p_msg      => 'END of Description_2'
374            ,p_level    => C_LEVEL_PROCEDURE
375            ,p_module   => l_log_module);
376 
377   END IF;
378   RETURN l_description;
379 
380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
381       trace
385 END IF;
382          (p_msg      => 'END of Description_2'
383          ,p_level    => C_LEVEL_PROCEDURE
384          ,p_module   => l_log_module);
386 RETURN NULL;
387 EXCEPTION
388   WHEN VALUE_ERROR THEN
389      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
390             trace
391                (p_msg      => 'ERROR: '||sqlerrm
392                ,p_level    => C_LEVEL_EXCEPTION
393                ,p_module   => l_log_module);
394      END IF;
395      RAISE;
396  WHEN xla_exceptions_pkg.application_exception THEN
397       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
398       trace
399          (p_msg      => 'ERROR: '||sqlerrm
400          ,p_level    => C_LEVEL_EXCEPTION
401          ,p_module   => l_log_module);
402       END IF;
403       RAISE;
404  WHEN OTHERS THEN
405        xla_exceptions_pkg.raise_message
406            (p_location => 'XLA_00260_AAD_S_000001_PKG.Description_2');
407 END Description_2;
408 
409 ---------------------------------------
410 --
411 -- PRIVATE FUNCTION
412 --         AcctDerRule_3
413 --
414 ---------------------------------------
415 FUNCTION AcctDerRule_3 (
416   p_application_id              IN NUMBER
417 , p_ae_header_id                IN NUMBER
418 , p_side                        IN VARCHAR2 
419 --Cashflow Bank Account Bank Charges Account
420  , p_source_3            IN NUMBER
421 , x_transaction_coa_id         OUT NOCOPY NUMBER
422 , x_accounting_coa_id          OUT NOCOPY NUMBER
423 , x_value_type_code            OUT NOCOPY VARCHAR2
424 )
425 RETURN NUMBER
426 IS
427 l_component_type       VARCHAR2(80)  ;
428 l_component_code       VARCHAR2(30)  ;
429 l_component_type_code  VARCHAR2(1)   ;
430 l_component_appl_id    INTEGER       ;
431 l_amb_context_code     VARCHAR2(30)  ;
432 l_log_module           VARCHAR2(240) ;
433 l_output_value         NUMBER        ;
434 BEGIN
435 IF g_log_enabled THEN
436       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
437 END IF;
438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
439       trace
440          (p_msg      => 'BEGIN of AcctDerRule_3'
441          ,p_level    => C_LEVEL_PROCEDURE
442          ,p_module   => l_log_module);
443 END IF;
444 --
445 l_component_type         := 'AMB_ADR';
446 l_component_code         := 'CE_BANK_CHARGES';
447 l_component_type_code    := 'S';
448 l_component_appl_id      :=  260;
449 l_amb_context_code       := 'DEFAULT';
450 x_transaction_coa_id     :=  null;
451 x_accounting_coa_id      :=  null;
452 --
453 
454  --
455   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
456       trace
460   END IF;
457          (p_msg      => 'END of AcctDerRule_3'
458          ,p_level    => C_LEVEL_PROCEDURE
459          ,p_module   => l_log_module);
461   x_value_type_code := 'S';
462   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_3));
463   RETURN l_output_value;
464 
465 --
466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
467       trace
468          (p_msg      => 'END of AcctDerRule_3(invalid)'
469          ,p_level    => C_LEVEL_PROCEDURE
470          ,p_module   => l_log_module);
471 END IF;
472 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
473 x_value_type_code := null;
474 l_output_value    := null;
475 xla_accounting_err_pkg.build_message
476                  (p_appli_s_name            => 'XLA'
477                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
478                  ,p_token_1                 => 'COMPONENT_NAME'
479                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
480                                                             l_component_type
481                                                           , l_component_code
482                                                           , l_component_type_code
483                                                           , l_component_appl_id
484                                                           , l_amb_context_code
485                                                           )
486                  ,p_token_2                 => 'OWNER'
487                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
491                  ,p_token_3                 => 'PAD_NAME'
488                                                         'XLA_OWNER_TYPE'
489                                                         ,l_component_type_code
490                                                         )
495                                                         'XLA_OWNER_TYPE'
492                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
493                  ,p_token_4                 => 'PAD_OWNER'
494                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
496                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
497                                                         )
498                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
499                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
500                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
501                  ,p_ae_header_id            => NULL
502 );
503 RETURN l_output_value;
504 EXCEPTION
505   WHEN xla_exceptions_pkg.application_exception THEN
506       RAISE;
507   WHEN OTHERS THEN
508        xla_exceptions_pkg.raise_message
509            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_3');
510 END AcctDerRule_3;
511 --
512 
513 ---------------------------------------
514 --
515 -- PRIVATE FUNCTION
516 --         AcctDerRule_4
517 --
518 ---------------------------------------
519 FUNCTION AcctDerRule_4 (
520   p_application_id              IN NUMBER
521 , p_ae_header_id                IN NUMBER
522 , p_side                        IN VARCHAR2 
523 --Cashflow Bank Account Bank Errors Account
524  , p_source_4            IN NUMBER
525 , x_transaction_coa_id         OUT NOCOPY NUMBER
526 , x_accounting_coa_id          OUT NOCOPY NUMBER
527 , x_value_type_code            OUT NOCOPY VARCHAR2
528 )
529 RETURN NUMBER
530 IS
531 l_component_type       VARCHAR2(80)  ;
532 l_component_code       VARCHAR2(30)  ;
533 l_component_type_code  VARCHAR2(1)   ;
534 l_component_appl_id    INTEGER       ;
535 l_amb_context_code     VARCHAR2(30)  ;
536 l_log_module           VARCHAR2(240) ;
537 l_output_value         NUMBER        ;
538 BEGIN
539 IF g_log_enabled THEN
540       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
541 END IF;
542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
543       trace
544          (p_msg      => 'BEGIN of AcctDerRule_4'
545          ,p_level    => C_LEVEL_PROCEDURE
546          ,p_module   => l_log_module);
547 END IF;
548 --
549 l_component_type         := 'AMB_ADR';
550 l_component_code         := 'CE_BANK_ERRORS';
551 l_component_type_code    := 'S';
552 l_component_appl_id      :=  260;
553 l_amb_context_code       := 'DEFAULT';
554 x_transaction_coa_id     :=  null;
555 x_accounting_coa_id      :=  null;
556 --
557 
558  --
559   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
560       trace
561          (p_msg      => 'END of AcctDerRule_4'
562          ,p_level    => C_LEVEL_PROCEDURE
563          ,p_module   => l_log_module);
564   END IF;
565   x_value_type_code := 'S';
566   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_4));
567   RETURN l_output_value;
568 
569 --
570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
571       trace
572          (p_msg      => 'END of AcctDerRule_4(invalid)'
573          ,p_level    => C_LEVEL_PROCEDURE
574          ,p_module   => l_log_module);
575 END IF;
576 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
577 x_value_type_code := null;
578 l_output_value    := null;
579 xla_accounting_err_pkg.build_message
580                  (p_appli_s_name            => 'XLA'
581                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
582                  ,p_token_1                 => 'COMPONENT_NAME'
583                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
584                                                             l_component_type
585                                                           , l_component_code
586                                                           , l_component_type_code
587                                                           , l_component_appl_id
588                                                           , l_amb_context_code
589                                                           )
590                  ,p_token_2                 => 'OWNER'
591                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
592                                                         'XLA_OWNER_TYPE'
593                                                         ,l_component_type_code
594                                                         )
595                  ,p_token_3                 => 'PAD_NAME'
596                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
597                  ,p_token_4                 => 'PAD_OWNER'
598                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
599                                                         'XLA_OWNER_TYPE'
600                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
601                                                         )
602                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
603                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
604                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
605                  ,p_ae_header_id            => NULL
606 );
607 RETURN l_output_value;
608 EXCEPTION
609   WHEN xla_exceptions_pkg.application_exception THEN
610       RAISE;
611   WHEN OTHERS THEN
612        xla_exceptions_pkg.raise_message
613            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_4');
614 END AcctDerRule_4;
615 --
616 
617 ---------------------------------------
618 --
622 ---------------------------------------
619 -- PRIVATE FUNCTION
620 --         AcctDerRule_5
621 --
623 FUNCTION AcctDerRule_5 (
624   p_application_id              IN NUMBER
625 , p_ae_header_id                IN NUMBER
626 , p_side                        IN VARCHAR2 
627 --Cashflow Bank Account Cash Account
628  , p_source_5            IN NUMBER
629 , x_transaction_coa_id         OUT NOCOPY NUMBER
630 , x_accounting_coa_id          OUT NOCOPY NUMBER
631 , x_value_type_code            OUT NOCOPY VARCHAR2
632 )
633 RETURN NUMBER
634 IS
635 l_component_type       VARCHAR2(80)  ;
636 l_component_code       VARCHAR2(30)  ;
637 l_component_type_code  VARCHAR2(1)   ;
638 l_component_appl_id    INTEGER       ;
639 l_amb_context_code     VARCHAR2(30)  ;
640 l_log_module           VARCHAR2(240) ;
641 l_output_value         NUMBER        ;
642 BEGIN
643 IF g_log_enabled THEN
644       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
645 END IF;
646 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
647       trace
648          (p_msg      => 'BEGIN of AcctDerRule_5'
649          ,p_level    => C_LEVEL_PROCEDURE
650          ,p_module   => l_log_module);
651 END IF;
652 --
653 l_component_type         := 'AMB_ADR';
654 l_component_code         := 'CE_CASH';
655 l_component_type_code    := 'S';
656 l_component_appl_id      :=  260;
657 l_amb_context_code       := 'DEFAULT';
658 x_transaction_coa_id     :=  null;
659 x_accounting_coa_id      :=  null;
660 --
661 
662  --
663   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
664       trace
665          (p_msg      => 'END of AcctDerRule_5'
666          ,p_level    => C_LEVEL_PROCEDURE
667          ,p_module   => l_log_module);
668   END IF;
669   x_value_type_code := 'S';
670   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_5));
671   RETURN l_output_value;
672 
673 --
674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
675       trace
676          (p_msg      => 'END of AcctDerRule_5(invalid)'
677          ,p_level    => C_LEVEL_PROCEDURE
678          ,p_module   => l_log_module);
679 END IF;
680 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
681 x_value_type_code := null;
682 l_output_value    := null;
683 xla_accounting_err_pkg.build_message
684                  (p_appli_s_name            => 'XLA'
685                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
686                  ,p_token_1                 => 'COMPONENT_NAME'
687                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
688                                                             l_component_type
689                                                           , l_component_code
690                                                           , l_component_type_code
691                                                           , l_component_appl_id
692                                                           , l_amb_context_code
693                                                           )
694                  ,p_token_2                 => 'OWNER'
695                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
696                                                         'XLA_OWNER_TYPE'
697                                                         ,l_component_type_code
698                                                         )
699                  ,p_token_3                 => 'PAD_NAME'
700                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
701                  ,p_token_4                 => 'PAD_OWNER'
702                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
703                                                         'XLA_OWNER_TYPE'
704                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
705                                                         )
706                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
707                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
708                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
709                  ,p_ae_header_id            => NULL
710 );
711 RETURN l_output_value;
712 EXCEPTION
713   WHEN xla_exceptions_pkg.application_exception THEN
714       RAISE;
715   WHEN OTHERS THEN
716        xla_exceptions_pkg.raise_message
717            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_5');
718 END AcctDerRule_5;
719 --
720 
721 ---------------------------------------
722 --
723 -- PRIVATE FUNCTION
724 --         AcctDerRule_6
725 --
726 ---------------------------------------
727 FUNCTION AcctDerRule_6 (
728   p_application_id              IN NUMBER
729 , p_ae_header_id                IN NUMBER
730 , p_side                        IN VARCHAR2 
731 --Cashflow Bank Account FX Charges Account
732  , p_source_6            IN NUMBER
733 , x_transaction_coa_id         OUT NOCOPY NUMBER
734 , x_accounting_coa_id          OUT NOCOPY NUMBER
735 , x_value_type_code            OUT NOCOPY VARCHAR2
736 )
737 RETURN NUMBER
738 IS
739 l_component_type       VARCHAR2(80)  ;
740 l_component_code       VARCHAR2(30)  ;
741 l_component_type_code  VARCHAR2(1)   ;
742 l_component_appl_id    INTEGER       ;
743 l_amb_context_code     VARCHAR2(30)  ;
744 l_log_module           VARCHAR2(240) ;
745 l_output_value         NUMBER        ;
746 BEGIN
747 IF g_log_enabled THEN
748       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
749 END IF;
750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
751       trace
752          (p_msg      => 'BEGIN of AcctDerRule_6'
753          ,p_level    => C_LEVEL_PROCEDURE
757 l_component_type         := 'AMB_ADR';
754          ,p_module   => l_log_module);
755 END IF;
756 --
758 l_component_code         := 'CE_FX_CHARGES';
759 l_component_type_code    := 'S';
760 l_component_appl_id      :=  260;
761 l_amb_context_code       := 'DEFAULT';
762 x_transaction_coa_id     :=  null;
763 x_accounting_coa_id      :=  null;
764 --
765 
766  --
767   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
768       trace
769          (p_msg      => 'END of AcctDerRule_6'
770          ,p_level    => C_LEVEL_PROCEDURE
771          ,p_module   => l_log_module);
772   END IF;
773   x_value_type_code := 'S';
774   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_6));
775   RETURN l_output_value;
776 
777 --
778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
779       trace
780          (p_msg      => 'END of AcctDerRule_6(invalid)'
781          ,p_level    => C_LEVEL_PROCEDURE
782          ,p_module   => l_log_module);
783 END IF;
784 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
785 x_value_type_code := null;
786 l_output_value    := null;
787 xla_accounting_err_pkg.build_message
788                  (p_appli_s_name            => 'XLA'
789                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
790                  ,p_token_1                 => 'COMPONENT_NAME'
791                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
792                                                             l_component_type
793                                                           , l_component_code
794                                                           , l_component_type_code
795                                                           , l_component_appl_id
796                                                           , l_amb_context_code
797                                                           )
798                  ,p_token_2                 => 'OWNER'
799                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
800                                                         'XLA_OWNER_TYPE'
801                                                         ,l_component_type_code
802                                                         )
803                  ,p_token_3                 => 'PAD_NAME'
804                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
805                  ,p_token_4                 => 'PAD_OWNER'
806                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
807                                                         'XLA_OWNER_TYPE'
808                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
809                                                         )
810                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
811                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
812                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
813                  ,p_ae_header_id            => NULL
814 );
815 RETURN l_output_value;
816 EXCEPTION
817   WHEN xla_exceptions_pkg.application_exception THEN
818       RAISE;
819   WHEN OTHERS THEN
820        xla_exceptions_pkg.raise_message
821            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctDerRule_6');
822 END AcctDerRule_6;
823 --
824 
825 ---------------------------------------
826 --
827 -- PRIVATE FUNCTION
828 --         AcctDerRule_7
829 --
830 ---------------------------------------
831 FUNCTION AcctDerRule_7 (
832   p_application_id              IN NUMBER
833 , p_ae_header_id                IN NUMBER
834 , p_side                        IN VARCHAR2 
835 --Cashflow Offset Account
836  , p_source_7            IN NUMBER
837 , x_transaction_coa_id         OUT NOCOPY NUMBER
838 , x_accounting_coa_id          OUT NOCOPY NUMBER
839 , x_value_type_code            OUT NOCOPY VARCHAR2
840 )
841 RETURN NUMBER
842 IS
843 l_component_type       VARCHAR2(80)  ;
844 l_component_code       VARCHAR2(30)  ;
845 l_component_type_code  VARCHAR2(1)   ;
846 l_component_appl_id    INTEGER       ;
847 l_amb_context_code     VARCHAR2(30)  ;
848 l_log_module           VARCHAR2(240) ;
849 l_output_value         NUMBER        ;
850 BEGIN
851 IF g_log_enabled THEN
852       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
853 END IF;
854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
855       trace
856          (p_msg      => 'BEGIN of AcctDerRule_7'
857          ,p_level    => C_LEVEL_PROCEDURE
858          ,p_module   => l_log_module);
859 END IF;
860 --
861 l_component_type         := 'AMB_ADR';
862 l_component_code         := 'CE_OFFSET';
863 l_component_type_code    := 'S';
864 l_component_appl_id      :=  260;
865 l_amb_context_code       := 'DEFAULT';
866 x_transaction_coa_id     :=  null;
867 x_accounting_coa_id      :=  null;
868 --
869 
870  --
871   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
872       trace
873          (p_msg      => 'END of AcctDerRule_7'
874          ,p_level    => C_LEVEL_PROCEDURE
875          ,p_module   => l_log_module);
876   END IF;
877   x_value_type_code := 'S';
878   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_7));
879   RETURN l_output_value;
880 
881 --
882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
883       trace
884          (p_msg      => 'END of AcctDerRule_7(invalid)'
885          ,p_level    => C_LEVEL_PROCEDURE
886          ,p_module   => l_log_module);
887 END IF;
888 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
889 x_value_type_code := null;
890 l_output_value    := null;
894                  ,p_token_1                 => 'COMPONENT_NAME'
891 xla_accounting_err_pkg.build_message
892                  (p_appli_s_name            => 'XLA'
893                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
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(
911                                                         'XLA_OWNER_TYPE'
912                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
913                                                         )
914                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
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_00260_AAD_S_000001_PKG.AcctDerRule_7');
926 END AcctDerRule_7;
927 --
928 
929 ---------------------------------------
930 --
931 -- PRIVATE FUNCTION
932 --         AcctLineType_8
933 --
934 ---------------------------------------
935 PROCEDURE AcctLineType_8 (
936   p_application_id        IN NUMBER
937  ,p_event_id              IN NUMBER
938  ,p_calculate_acctd_flag  IN VARCHAR2
939  ,p_calculate_g_l_flag    IN VARCHAR2
940  ,p_actual_flag           IN OUT VARCHAR2
941  ,p_balance_type_code     OUT VARCHAR2
942  ,p_gain_or_loss_ref      OUT VARCHAR2
943  
944 --Cashflow Bank Account Bank Charges Account
945  , p_source_3            IN NUMBER
946 --Cashflow Cleared Bank Charge Amount
947  , p_source_8            IN NUMBER
948 --Reversal Indicator
949  , p_source_9            IN VARCHAR2
950 --Cashflow Number
951  , p_source_10            IN NUMBER
952 --Cashflow History Identifier
953  , p_source_11            IN VARCHAR2
954 --Distribution Link Type
955  , p_source_12            IN VARCHAR2
956 --Cashflow Bank Account Currency
957  , p_source_13            IN VARCHAR2
958 --Cashflow Cleared Exchange Rate Date
959  , p_source_14            IN DATE
960 --Cashflow Cleared Exchange Rate
961  , p_source_15            IN NUMBER
962 --Cashflow Cleared Exchange Rate Type
963  , p_source_16            IN VARCHAR2
964 --Reversal First Distribution Identifier
965  , p_source_17            IN NUMBER
966 --Reversal Second Distribution Identifier
967  , p_source_18            IN VARCHAR2
968 --Reversal Distribution Link Type
969  , p_source_19            IN VARCHAR2
970 )
971 IS
972 
973 l_component_type              VARCHAR2(80);
974 l_component_code              VARCHAR2(30);
975 l_component_type_code         VARCHAR2(1);
976 l_component_appl_id           INTEGER;
977 l_amb_context_code            VARCHAR2(30);
978 l_entity_code                 VARCHAR2(30);
979 l_event_class_code            VARCHAR2(30);
980 l_ae_header_id                NUMBER;
981 l_event_type_code             VARCHAR2(30);
982 l_line_definition_code        VARCHAR2(30);
983 l_line_definition_owner_code  VARCHAR2(1);
984 --
985 -- adr variables
986 l_segment                     VARCHAR2(30);
987 l_ccid                        NUMBER;
988 l_adr_transaction_coa_id      NUMBER;
989 l_adr_accounting_coa_id       NUMBER;
990 l_adr_flexfield_segment_code  VARCHAR2(30);
991 l_adr_flex_value_set_id       NUMBER;
992 l_adr_value_type_code         VARCHAR2(30);
993 l_adr_value_combination_id    NUMBER;
994 l_adr_value_segment_code      VARCHAR2(30);
995 
996 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
997 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
998 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
999 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1000 
1001 -- 4262811 Variables ------------------------------------------------------------------------------------------
1002 l_entered_amt_idx             NUMBER;
1003 l_accted_amt_idx              NUMBER;
1004 l_acc_rev_flag                VARCHAR2(1);
1005 l_accrual_line_num            NUMBER;
1006 l_tmp_amt                     NUMBER;
1007 l_acc_rev_natural_side_code   VARCHAR2(1);
1008 
1009 l_num_entries                 NUMBER;
1010 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1011 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1012 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1013 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1017 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1014 l_recog_line_1                NUMBER;
1015 l_recog_line_2                NUMBER;
1016 
1018 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1019 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1020 
1021 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1022 
1023 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1024 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1025 
1026 ---------------------------------------------------------------------------------------------------------------
1027 
1028 
1029 --
1030 -- bulk performance
1031 --
1032 l_balance_type_code           VARCHAR2(1);
1033 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1034 l_log_module                  VARCHAR2(240);
1035 
1036 --
1037 -- Upgrade strategy
1038 --
1039 l_actual_upg_option           VARCHAR2(1);
1040 l_enc_upg_option           VARCHAR2(1);
1041 
1042 --
1043 BEGIN
1044 --
1045 IF g_log_enabled THEN
1046       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
1047 END IF;
1048 --
1049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1050 
1051       trace
1052          (p_msg      => 'BEGIN of AcctLineType_8'
1053          ,p_level    => C_LEVEL_PROCEDURE
1054          ,p_module   => l_log_module);
1055 
1056 END IF;
1057 --
1058 l_component_type             := 'AMB_JLT';
1059 l_component_code             := 'BAT_BANK_CHARGES_CLEAR';
1060 l_component_type_code        := 'S';
1061 l_component_appl_id          :=  260;
1062 l_amb_context_code           := 'DEFAULT';
1063 l_entity_code                := 'CE_CASHFLOWS';
1064 l_event_class_code           := 'BAT_CLASS';
1065 l_event_type_code            := 'CE_BAT_UNCLEARED';
1066 l_line_definition_owner_code := 'S';
1067 l_line_definition_code       := 'BAT_UNCLR_DEFN';
1068 --
1069 l_balance_type_code          := 'A';
1070 l_segment                     := NULL;
1071 l_ccid                        := NULL;
1072 l_adr_transaction_coa_id      := NULL;
1073 l_adr_accounting_coa_id       := NULL;
1074 l_adr_flexfield_segment_code  := NULL;
1075 l_adr_flex_value_set_id       := NULL;
1076 l_adr_value_type_code         := NULL;
1077 l_adr_value_combination_id    := NULL;
1078 l_adr_value_segment_code      := NULL;
1079 
1080 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1081 l_bflow_class_code           := '';    -- 4219869 Business Flow
1082 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1083 l_budgetary_control_flag     := 'N';
1084 
1085 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1086 l_bflow_applied_to_amt       := NULL; -- 5132302
1087 l_entered_amt_idx            := NULL;          -- 4262811
1088 l_accted_amt_idx             := NULL;          -- 4262811
1089 l_acc_rev_flag               := NULL;          -- 4262811
1090 l_accrual_line_num           := NULL;          -- 4262811
1091 l_tmp_amt                    := NULL;          -- 4262811
1092 --
1093  
1094 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1095     l_balance_type_code <> 'B' THEN
1096 IF p_source_8  IS NOT NULL 
1097  THEN 
1098 
1099    --
1100    XLA_AE_LINES_PKG.SetNewLine;
1101 
1102    p_balance_type_code          := l_balance_type_code;
1103    -- set the flag so later we will know whether the gain loss line needs to be created
1104    
1105    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1106      p_actual_flag :='A';
1107    END IF;
1108 
1109    --
1110    -- bulk performance
1111    --
1112    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1113                                       p_header_num   => 0); -- 4262811
1114    --
1115    -- set accounting line options
1116    --
1117    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1118            p_natural_side_code          => 'D'
1119          , p_gain_or_loss_flag          => 'N'
1120          , p_gl_transfer_mode_code      => 'D'
1121          , p_acct_entry_type_code       => 'A'
1122          , p_switch_side_flag           => 'Y'
1123          , p_merge_duplicate_code       => 'N'
1124          );
1125    --
1126    l_acc_rev_natural_side_code := 'C';  -- 4262811
1127    -- 
1128    --
1129    -- set accounting line type info
1130    --
1131    xla_ae_lines_pkg.SetAcctLineType
1132       (p_component_type             => l_component_type
1133       ,p_event_type_code            => l_event_type_code
1134       ,p_line_definition_owner_code => l_line_definition_owner_code
1135       ,p_line_definition_code       => l_line_definition_code
1136       ,p_accounting_line_code       => l_component_code
1137       ,p_accounting_line_type_code  => l_component_type_code
1138       ,p_accounting_line_appl_id    => l_component_appl_id
1139       ,p_amb_context_code           => l_amb_context_code
1140       ,p_entity_code                => l_entity_code
1141       ,p_event_class_code           => l_event_class_code);
1142    --
1143    -- set accounting class
1144    --
1145    xla_ae_lines_pkg.SetAcctClass(
1146            p_accounting_class_code  => 'BANK_CHG'
1147          , p_ae_header_id           => l_ae_header_id
1148          );
1149 
1150    --
1151    -- set rounding class
1152    --
1153    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1154                       'BANK_CHG';
1155 
1156    --
1157    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1161    --
1158    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1159    --
1160    -- bulk performance
1162    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1163 
1164    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1165       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1166 
1167    -- 4955764
1168    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1169       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1170 
1171    -- 4458381 Public Sector Enh
1172    
1173    --
1174    -- set accounting attributes for the line type
1175    --
1176    l_entered_amt_idx := 5;
1177    l_accted_amt_idx  := NULL;
1178    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1179    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1180    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
1181    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1182    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
1183    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
1184    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
1185    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
1186    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
1187    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
1188    l_rec_acct_attrs.array_num_value(5)  := p_source_8;
1189    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
1190    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
1191    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
1192    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
1193    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
1194    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
1195    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
1196    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
1197    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
1198    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
1199    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
1200    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
1201    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
1202    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
1203 
1204    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1205    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1206 
1207    ---------------------------------------------------------------------------------------------------------------
1208    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1209    ---------------------------------------------------------------------------------------------------------------
1210    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1211 
1212    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1213    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1214 
1215    IF xla_accounting_cache_pkg.GetValueChar
1216          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1217          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1218    AND l_bflow_method_code = 'PRIOR_ENTRY'
1219 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1220    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1221          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1222        )
1223    THEN
1224          xla_ae_lines_pkg.BflowUpgEntry
1225            (p_business_method_code    => l_bflow_method_code
1226            ,p_business_class_code     => l_bflow_class_code
1227            ,p_balance_type            => l_balance_type_code);
1228    ELSE
1229       NULL;
1230 -- No business flow processing for business flow method of NONE.
1231    END IF;
1232 
1233    --
1234    -- call description
1235    --
1236    -- No description or it is inherited.
1237    --
1238    -- call ADRs
1239    -- Bug 4922099
1240    --
1241    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1242         (NVL(l_actual_upg_option, 'N') = 'O') OR
1243         (NVL(l_enc_upg_option, 'N') = 'O')
1244       )
1245    THEN
1246    NULL;
1247    --
1248    --
1249    
1250   l_ccid := AcctDerRule_3(
1251            p_application_id           => p_application_id
1252          , p_ae_header_id             => l_ae_header_id 
1253 , p_source_3 => p_source_3
1254          , x_transaction_coa_id       => l_adr_transaction_coa_id
1255          , x_accounting_coa_id        => l_adr_accounting_coa_id
1256          , x_value_type_code          => l_adr_value_type_code
1257          , p_side                     => 'NA'
1258    );
1259 
1260    xla_ae_lines_pkg.set_ccid(
1261     p_code_combination_id          => l_ccid
1262   , p_value_type_code              => l_adr_value_type_code
1263   , p_transaction_coa_id           => l_adr_transaction_coa_id
1264   , p_accounting_coa_id            => l_adr_accounting_coa_id
1265   , p_adr_code                     => 'CE_BANK_CHARGES'
1266   , p_adr_type_code                => 'S'
1267   , p_component_type               => l_component_type
1268   , p_component_code               => l_component_code
1269   , p_component_type_code          => l_component_type_code
1270   , p_component_appl_id            => l_component_appl_id
1271   , p_amb_context_code             => l_amb_context_code
1272   , p_side                         => 'NA'
1273   );
1274 
1275 
1276    --
1277    --
1278    END IF;
1279    --
1283         ) AND
1280    -- Bug 4922099
1281    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1282           (NVL(l_enc_upg_option, 'N') = 'O')
1284         (l_bflow_method_code = 'PRIOR_ENTRY')
1285       )
1286    THEN
1287       IF
1288       --
1289       1 = 2
1290       --
1291       THEN
1292       xla_accounting_err_pkg.build_message
1293                                     (p_appli_s_name            => 'XLA'
1294                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1295                                     ,p_token_1                 => 'LINE_NUMBER'
1296                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1297                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1298                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1299                                                                              l_component_type
1300                                                                             ,l_component_code
1301                                                                             ,l_component_type_code
1302                                                                             ,l_component_appl_id
1303                                                                             ,l_amb_context_code
1304                                                                             ,l_entity_code
1305                                                                             ,l_event_class_code
1306                                                                            )
1307                                     ,p_token_3                 => 'OWNER'
1308                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1309                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1310                                                                           ,p_lookup_code    => l_component_type_code
1311                                                                          )
1312                                     ,p_token_4                 => 'PRODUCT_NAME'
1313                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1314                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1315                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1316                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1317                                     ,p_ae_header_id            =>  NULL
1318                                        );
1319 
1320         IF (C_LEVEL_ERROR>= g_log_level) THEN
1321                  trace
1322                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1323                       ,p_level    => C_LEVEL_ERROR
1324                       ,p_module   => l_log_module);
1325         END IF;
1326       END IF;
1327    END IF;
1328    --
1329    --
1330    ------------------------------------------------------------------------------------------------
1331    -- 4219869 Business Flow
1332    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1333    -- Prior Entry.  Currently, the following code is always generated.
1334    ------------------------------------------------------------------------------------------------
1335    XLA_AE_LINES_PKG.ValidateCurrentLine;
1336 
1337    ------------------------------------------------------------------------------------
1338    -- 4219869 Business Flow
1339    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1340    ------------------------------------------------------------------------------------
1341    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1342 
1343    ----------------------------------------------------------------------------------
1344    -- 4219869 Business Flow
1345    -- Update journal entry status -- Need to generate this within IF <condition>
1346    ----------------------------------------------------------------------------------
1347    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1348          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1349          ,p_balance_type_code => l_balance_type_code
1350          );
1351 
1352    -------------------------------------------------------------------------------------------
1353    -- 4262811 - Generate the Accrual Reversal lines
1354    -------------------------------------------------------------------------------------------
1355    BEGIN
1356       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1357                               (g_array_event(p_event_id).array_value_num('header_index'));
1358       IF l_acc_rev_flag IS NULL THEN
1359          l_acc_rev_flag := 'N';
1360       END IF;
1361    EXCEPTION
1362       WHEN OTHERS THEN
1363          l_acc_rev_flag := 'N';
1364    END;
1365    --
1366    IF (l_acc_rev_flag = 'Y') THEN
1367 
1368        -- 4645092  ------------------------------------------------------------------------------
1369        -- To allow MPA report to determine if it should generate report process
1370        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1371        ------------------------------------------------------------------------------------------
1372 
1373        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1374        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1375 
1376        --
1377        -- Update the line information that should be overwritten
1378        --
1379        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1380                                          p_header_num   => 1);
1381        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1382 
1386           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1383        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1384 
1385        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1387        END IF;
1388 
1389       --
1390       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1391       --
1392       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1393           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1394       ELSE
1395           ---------------------------------------------------------------------------------------------------
1396           -- 4262811a Switch Sign
1397           ---------------------------------------------------------------------------------------------------
1398           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1399           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1400                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1401           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1402                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1403           -- 5132302
1404           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1405                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1406 
1407       END IF;
1408 
1409       -- 4955764
1410       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1411       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1412 
1413 
1414       XLA_AE_LINES_PKG.ValidateCurrentLine;
1415       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1416 
1417       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1418                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1419                ,p_balance_type_code => l_balance_type_code);
1420 
1421    END IF;
1422 
1423    -----------------------------------------------------------------------------------------
1424    -- 4262811 Multiperiod Accounting
1425    -----------------------------------------------------------------------------------------
1426      -- No MPA option is assigned.
1427 
1428 
1429 END IF;
1430 END IF;
1431 --
1432 
1433 --
1434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1435    trace
1436       (p_msg      => 'END of AcctLineType_8'
1437       ,p_level    => C_LEVEL_PROCEDURE
1438       ,p_module   => l_log_module);
1439 END IF;
1440 --
1441 EXCEPTION
1442   WHEN xla_exceptions_pkg.application_exception THEN
1443       RAISE;
1444   WHEN OTHERS THEN
1445        xla_exceptions_pkg.raise_message
1446            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_8');
1447 END AcctLineType_8;
1448 --
1449 
1450 ---------------------------------------
1451 --
1452 -- PRIVATE FUNCTION
1453 --         AcctLineType_9
1454 --
1455 ---------------------------------------
1456 PROCEDURE AcctLineType_9 (
1457   p_application_id        IN NUMBER
1458  ,p_event_id              IN NUMBER
1459  ,p_calculate_acctd_flag  IN VARCHAR2
1460  ,p_calculate_g_l_flag    IN VARCHAR2
1461  ,p_actual_flag           IN OUT VARCHAR2
1462  ,p_balance_type_code     OUT VARCHAR2
1463  ,p_gain_or_loss_ref      OUT VARCHAR2
1464  
1465 --Cashflow Bank Account Bank Charges Account
1466  , p_source_3            IN NUMBER
1467 --Cashflow Cleared Bank Charge Amount
1468  , p_source_8            IN NUMBER
1469 --Reversal Indicator
1470  , p_source_9            IN VARCHAR2
1471 --Cashflow Number
1472  , p_source_10            IN NUMBER
1473 --Cashflow History Identifier
1474  , p_source_11            IN VARCHAR2
1475 --Distribution Link Type
1476  , p_source_12            IN VARCHAR2
1477 --Cashflow Bank Account Currency
1478  , p_source_13            IN VARCHAR2
1479 --Cashflow Cleared Exchange Rate Date
1480  , p_source_14            IN DATE
1481 --Cashflow Cleared Exchange Rate
1482  , p_source_15            IN NUMBER
1483 --Cashflow Cleared Exchange Rate Type
1484  , p_source_16            IN VARCHAR2
1485 --Reversal First Distribution Identifier
1486  , p_source_17            IN NUMBER
1487 --Reversal Second Distribution Identifier
1488  , p_source_18            IN VARCHAR2
1489 --Reversal Distribution Link Type
1490  , p_source_19            IN VARCHAR2
1491 )
1492 IS
1493 
1494 l_component_type              VARCHAR2(80);
1495 l_component_code              VARCHAR2(30);
1496 l_component_type_code         VARCHAR2(1);
1497 l_component_appl_id           INTEGER;
1498 l_amb_context_code            VARCHAR2(30);
1499 l_entity_code                 VARCHAR2(30);
1500 l_event_class_code            VARCHAR2(30);
1501 l_ae_header_id                NUMBER;
1502 l_event_type_code             VARCHAR2(30);
1503 l_line_definition_code        VARCHAR2(30);
1504 l_line_definition_owner_code  VARCHAR2(1);
1505 --
1506 -- adr variables
1507 l_segment                     VARCHAR2(30);
1508 l_ccid                        NUMBER;
1509 l_adr_transaction_coa_id      NUMBER;
1510 l_adr_accounting_coa_id       NUMBER;
1511 l_adr_flexfield_segment_code  VARCHAR2(30);
1512 l_adr_flex_value_set_id       NUMBER;
1513 l_adr_value_type_code         VARCHAR2(30);
1514 l_adr_value_combination_id    NUMBER;
1515 l_adr_value_segment_code      VARCHAR2(30);
1516 
1517 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1521 
1518 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1519 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1520 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1522 -- 4262811 Variables ------------------------------------------------------------------------------------------
1523 l_entered_amt_idx             NUMBER;
1524 l_accted_amt_idx              NUMBER;
1525 l_acc_rev_flag                VARCHAR2(1);
1526 l_accrual_line_num            NUMBER;
1527 l_tmp_amt                     NUMBER;
1528 l_acc_rev_natural_side_code   VARCHAR2(1);
1529 
1530 l_num_entries                 NUMBER;
1531 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1532 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1533 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1534 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1535 l_recog_line_1                NUMBER;
1536 l_recog_line_2                NUMBER;
1537 
1538 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1539 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1540 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1541 
1542 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1543 
1544 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1545 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1546 
1547 ---------------------------------------------------------------------------------------------------------------
1548 
1549 
1550 --
1551 -- bulk performance
1552 --
1553 l_balance_type_code           VARCHAR2(1);
1554 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1555 l_log_module                  VARCHAR2(240);
1556 
1557 --
1558 -- Upgrade strategy
1559 --
1560 l_actual_upg_option           VARCHAR2(1);
1561 l_enc_upg_option           VARCHAR2(1);
1562 
1563 --
1564 BEGIN
1565 --
1566 IF g_log_enabled THEN
1567       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
1568 END IF;
1569 --
1570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1571 
1572       trace
1573          (p_msg      => 'BEGIN of AcctLineType_9'
1574          ,p_level    => C_LEVEL_PROCEDURE
1575          ,p_module   => l_log_module);
1576 
1577 END IF;
1578 --
1579 l_component_type             := 'AMB_JLT';
1580 l_component_code             := 'BAT_BANK_CHARGES_CLEAR';
1581 l_component_type_code        := 'S';
1582 l_component_appl_id          :=  260;
1583 l_amb_context_code           := 'DEFAULT';
1584 l_entity_code                := 'CE_CASHFLOWS';
1585 l_event_class_code           := 'BAT_CLASS';
1586 l_event_type_code            := 'CE_BAT_CLEARED';
1587 l_line_definition_owner_code := 'S';
1588 l_line_definition_code       := 'BAT_CLR_DFN';
1589 --
1590 l_balance_type_code          := 'A';
1591 l_segment                     := NULL;
1592 l_ccid                        := NULL;
1593 l_adr_transaction_coa_id      := NULL;
1594 l_adr_accounting_coa_id       := NULL;
1595 l_adr_flexfield_segment_code  := NULL;
1596 l_adr_flex_value_set_id       := NULL;
1597 l_adr_value_type_code         := NULL;
1598 l_adr_value_combination_id    := NULL;
1599 l_adr_value_segment_code      := NULL;
1600 
1601 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1602 l_bflow_class_code           := '';    -- 4219869 Business Flow
1603 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1604 l_budgetary_control_flag     := 'N';
1605 
1606 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1607 l_bflow_applied_to_amt       := NULL; -- 5132302
1608 l_entered_amt_idx            := NULL;          -- 4262811
1609 l_accted_amt_idx             := NULL;          -- 4262811
1610 l_acc_rev_flag               := NULL;          -- 4262811
1611 l_accrual_line_num           := NULL;          -- 4262811
1612 l_tmp_amt                    := NULL;          -- 4262811
1613 --
1614  
1615 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1616     l_balance_type_code <> 'B' THEN
1617 IF p_source_8  IS NOT NULL 
1618  THEN 
1619 
1620    --
1621    XLA_AE_LINES_PKG.SetNewLine;
1622 
1623    p_balance_type_code          := l_balance_type_code;
1624    -- set the flag so later we will know whether the gain loss line needs to be created
1625    
1626    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1627      p_actual_flag :='A';
1628    END IF;
1629 
1630    --
1631    -- bulk performance
1632    --
1633    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1634                                       p_header_num   => 0); -- 4262811
1635    --
1636    -- set accounting line options
1637    --
1638    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1639            p_natural_side_code          => 'D'
1640          , p_gain_or_loss_flag          => 'N'
1641          , p_gl_transfer_mode_code      => 'D'
1642          , p_acct_entry_type_code       => 'A'
1643          , p_switch_side_flag           => 'Y'
1644          , p_merge_duplicate_code       => 'N'
1645          );
1646    --
1647    l_acc_rev_natural_side_code := 'C';  -- 4262811
1648    -- 
1649    --
1650    -- set accounting line type info
1651    --
1652    xla_ae_lines_pkg.SetAcctLineType
1653       (p_component_type             => l_component_type
1654       ,p_event_type_code            => l_event_type_code
1655       ,p_line_definition_owner_code => l_line_definition_owner_code
1656       ,p_line_definition_code       => l_line_definition_code
1657       ,p_accounting_line_code       => l_component_code
1661       ,p_entity_code                => l_entity_code
1658       ,p_accounting_line_type_code  => l_component_type_code
1659       ,p_accounting_line_appl_id    => l_component_appl_id
1660       ,p_amb_context_code           => l_amb_context_code
1662       ,p_event_class_code           => l_event_class_code);
1663    --
1664    -- set accounting class
1665    --
1666    xla_ae_lines_pkg.SetAcctClass(
1667            p_accounting_class_code  => 'BANK_CHG'
1668          , p_ae_header_id           => l_ae_header_id
1669          );
1670 
1671    --
1672    -- set rounding class
1673    --
1674    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1675                       'BANK_CHG';
1676 
1677    --
1678    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1679    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1680    --
1681    -- bulk performance
1682    --
1683    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1684 
1685    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1686       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1687 
1688    -- 4955764
1689    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1690       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1691 
1692    -- 4458381 Public Sector Enh
1693    
1694    --
1695    -- set accounting attributes for the line type
1696    --
1697    l_entered_amt_idx := 5;
1698    l_accted_amt_idx  := NULL;
1699    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1700    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1701    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
1702    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1703    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
1704    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
1705    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
1706    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
1707    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
1708    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
1709    l_rec_acct_attrs.array_num_value(5)  := p_source_8;
1710    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
1711    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
1712    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
1713    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
1714    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
1715    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
1716    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
1717    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
1718    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
1719    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
1720    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
1721    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
1722    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
1723    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
1724 
1725    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1726    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1727 
1728    ---------------------------------------------------------------------------------------------------------------
1729    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1730    ---------------------------------------------------------------------------------------------------------------
1731    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1732 
1733    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1734    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1735 
1736    IF xla_accounting_cache_pkg.GetValueChar
1737          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1738          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1739    AND l_bflow_method_code = 'PRIOR_ENTRY'
1740 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1741    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1742          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1743        )
1744    THEN
1745          xla_ae_lines_pkg.BflowUpgEntry
1746            (p_business_method_code    => l_bflow_method_code
1747            ,p_business_class_code     => l_bflow_class_code
1748            ,p_balance_type            => l_balance_type_code);
1749    ELSE
1750       NULL;
1751 -- No business flow processing for business flow method of NONE.
1752    END IF;
1753 
1754    --
1755    -- call description
1756    --
1757    -- No description or it is inherited.
1758    --
1759    -- call ADRs
1760    -- Bug 4922099
1761    --
1762    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1763         (NVL(l_actual_upg_option, 'N') = 'O') OR
1764         (NVL(l_enc_upg_option, 'N') = 'O')
1765       )
1766    THEN
1767    NULL;
1768    --
1769    --
1770    
1771   l_ccid := AcctDerRule_3(
1772            p_application_id           => p_application_id
1773          , p_ae_header_id             => l_ae_header_id 
1774 , p_source_3 => p_source_3
1775          , x_transaction_coa_id       => l_adr_transaction_coa_id
1776          , x_accounting_coa_id        => l_adr_accounting_coa_id
1777          , x_value_type_code          => l_adr_value_type_code
1781    xla_ae_lines_pkg.set_ccid(
1778          , p_side                     => 'NA'
1779    );
1780 
1782     p_code_combination_id          => l_ccid
1783   , p_value_type_code              => l_adr_value_type_code
1784   , p_transaction_coa_id           => l_adr_transaction_coa_id
1785   , p_accounting_coa_id            => l_adr_accounting_coa_id
1786   , p_adr_code                     => 'CE_BANK_CHARGES'
1787   , p_adr_type_code                => 'S'
1788   , p_component_type               => l_component_type
1789   , p_component_code               => l_component_code
1790   , p_component_type_code          => l_component_type_code
1791   , p_component_appl_id            => l_component_appl_id
1792   , p_amb_context_code             => l_amb_context_code
1793   , p_side                         => 'NA'
1794   );
1795 
1796 
1797    --
1798    --
1799    END IF;
1800    --
1801    -- Bug 4922099
1802    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1803           (NVL(l_enc_upg_option, 'N') = 'O')
1804         ) AND
1805         (l_bflow_method_code = 'PRIOR_ENTRY')
1806       )
1807    THEN
1808       IF
1809       --
1810       1 = 2
1811       --
1812       THEN
1813       xla_accounting_err_pkg.build_message
1814                                     (p_appli_s_name            => 'XLA'
1815                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1816                                     ,p_token_1                 => 'LINE_NUMBER'
1817                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1818                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1819                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1820                                                                              l_component_type
1821                                                                             ,l_component_code
1822                                                                             ,l_component_type_code
1823                                                                             ,l_component_appl_id
1824                                                                             ,l_amb_context_code
1825                                                                             ,l_entity_code
1826                                                                             ,l_event_class_code
1827                                                                            )
1828                                     ,p_token_3                 => 'OWNER'
1829                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1830                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1831                                                                           ,p_lookup_code    => l_component_type_code
1832                                                                          )
1833                                     ,p_token_4                 => 'PRODUCT_NAME'
1834                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1835                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1836                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1837                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1838                                     ,p_ae_header_id            =>  NULL
1839                                        );
1840 
1841         IF (C_LEVEL_ERROR>= g_log_level) THEN
1842                  trace
1843                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1844                       ,p_level    => C_LEVEL_ERROR
1845                       ,p_module   => l_log_module);
1846         END IF;
1847       END IF;
1848    END IF;
1849    --
1850    --
1851    ------------------------------------------------------------------------------------------------
1852    -- 4219869 Business Flow
1853    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1854    -- Prior Entry.  Currently, the following code is always generated.
1855    ------------------------------------------------------------------------------------------------
1856    XLA_AE_LINES_PKG.ValidateCurrentLine;
1857 
1858    ------------------------------------------------------------------------------------
1859    -- 4219869 Business Flow
1860    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1861    ------------------------------------------------------------------------------------
1862    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1863 
1864    ----------------------------------------------------------------------------------
1865    -- 4219869 Business Flow
1866    -- Update journal entry status -- Need to generate this within IF <condition>
1867    ----------------------------------------------------------------------------------
1868    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1869          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1870          ,p_balance_type_code => l_balance_type_code
1871          );
1872 
1873    -------------------------------------------------------------------------------------------
1874    -- 4262811 - Generate the Accrual Reversal lines
1875    -------------------------------------------------------------------------------------------
1876    BEGIN
1877       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1878                               (g_array_event(p_event_id).array_value_num('header_index'));
1879       IF l_acc_rev_flag IS NULL THEN
1880          l_acc_rev_flag := 'N';
1881       END IF;
1882    EXCEPTION
1883       WHEN OTHERS THEN
1884          l_acc_rev_flag := 'N';
1885    END;
1886    --
1890        -- To allow MPA report to determine if it should generate report process
1887    IF (l_acc_rev_flag = 'Y') THEN
1888 
1889        -- 4645092  ------------------------------------------------------------------------------
1891        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1892        ------------------------------------------------------------------------------------------
1893 
1894        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1895        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1896 
1897        --
1898        -- Update the line information that should be overwritten
1899        --
1900        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1901                                          p_header_num   => 1);
1902        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1903 
1904        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1905 
1906        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1907           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1908        END IF;
1909 
1910       --
1911       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1912       --
1913       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1914           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1915       ELSE
1916           ---------------------------------------------------------------------------------------------------
1917           -- 4262811a Switch Sign
1918           ---------------------------------------------------------------------------------------------------
1919           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1920           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1921                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1922           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1923                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1924           -- 5132302
1925           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1926                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1927 
1928       END IF;
1929 
1930       -- 4955764
1931       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1932       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1933 
1934 
1935       XLA_AE_LINES_PKG.ValidateCurrentLine;
1936       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1937 
1938       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1939                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1940                ,p_balance_type_code => l_balance_type_code);
1941 
1942    END IF;
1943 
1944    -----------------------------------------------------------------------------------------
1945    -- 4262811 Multiperiod Accounting
1946    -----------------------------------------------------------------------------------------
1947      -- No MPA option is assigned.
1948 
1949 
1950 END IF;
1951 END IF;
1952 --
1953 
1954 --
1955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1956    trace
1957       (p_msg      => 'END of AcctLineType_9'
1958       ,p_level    => C_LEVEL_PROCEDURE
1959       ,p_module   => l_log_module);
1960 END IF;
1961 --
1962 EXCEPTION
1963   WHEN xla_exceptions_pkg.application_exception THEN
1964       RAISE;
1965   WHEN OTHERS THEN
1966        xla_exceptions_pkg.raise_message
1967            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_9');
1968 END AcctLineType_9;
1969 --
1970 
1971 ---------------------------------------
1972 --
1973 -- PRIVATE FUNCTION
1974 --         AcctLineType_10
1975 --
1976 ---------------------------------------
1977 PROCEDURE AcctLineType_10 (
1978   p_application_id        IN NUMBER
1979  ,p_event_id              IN NUMBER
1980  ,p_calculate_acctd_flag  IN VARCHAR2
1981  ,p_calculate_g_l_flag    IN VARCHAR2
1982  ,p_actual_flag           IN OUT VARCHAR2
1983  ,p_balance_type_code     OUT VARCHAR2
1984  ,p_gain_or_loss_ref      OUT VARCHAR2
1985  
1986 --Cashflow Bank Account Bank Errors Account
1987  , p_source_4            IN NUMBER
1988 --Reversal Indicator
1989  , p_source_9            IN VARCHAR2
1990 --Cashflow Number
1991  , p_source_10            IN NUMBER
1992 --Cashflow History Identifier
1993  , p_source_11            IN VARCHAR2
1994 --Distribution Link Type
1995  , p_source_12            IN VARCHAR2
1996 --Cashflow Bank Account Currency
1997  , p_source_13            IN VARCHAR2
1998 --Cashflow Cleared Exchange Rate Date
1999  , p_source_14            IN DATE
2000 --Cashflow Cleared Exchange Rate
2001  , p_source_15            IN NUMBER
2002 --Cashflow Cleared Exchange Rate Type
2003  , p_source_16            IN VARCHAR2
2004 --Reversal First Distribution Identifier
2005  , p_source_17            IN NUMBER
2006 --Reversal Second Distribution Identifier
2007  , p_source_18            IN VARCHAR2
2008 --Reversal Distribution Link Type
2009  , p_source_19            IN VARCHAR2
2010 --Cashflow Cleared Bank Error Amount
2011  , p_source_20            IN NUMBER
2012 )
2013 IS
2014 
2015 l_component_type              VARCHAR2(80);
2016 l_component_code              VARCHAR2(30);
2017 l_component_type_code         VARCHAR2(1);
2018 l_component_appl_id           INTEGER;
2019 l_amb_context_code            VARCHAR2(30);
2023 l_event_type_code             VARCHAR2(30);
2020 l_entity_code                 VARCHAR2(30);
2021 l_event_class_code            VARCHAR2(30);
2022 l_ae_header_id                NUMBER;
2024 l_line_definition_code        VARCHAR2(30);
2025 l_line_definition_owner_code  VARCHAR2(1);
2026 --
2027 -- adr variables
2028 l_segment                     VARCHAR2(30);
2029 l_ccid                        NUMBER;
2030 l_adr_transaction_coa_id      NUMBER;
2031 l_adr_accounting_coa_id       NUMBER;
2032 l_adr_flexfield_segment_code  VARCHAR2(30);
2033 l_adr_flex_value_set_id       NUMBER;
2034 l_adr_value_type_code         VARCHAR2(30);
2035 l_adr_value_combination_id    NUMBER;
2036 l_adr_value_segment_code      VARCHAR2(30);
2037 
2038 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2039 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2040 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2041 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2042 
2043 -- 4262811 Variables ------------------------------------------------------------------------------------------
2044 l_entered_amt_idx             NUMBER;
2045 l_accted_amt_idx              NUMBER;
2046 l_acc_rev_flag                VARCHAR2(1);
2047 l_accrual_line_num            NUMBER;
2048 l_tmp_amt                     NUMBER;
2049 l_acc_rev_natural_side_code   VARCHAR2(1);
2050 
2051 l_num_entries                 NUMBER;
2052 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2053 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2054 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2055 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2056 l_recog_line_1                NUMBER;
2057 l_recog_line_2                NUMBER;
2058 
2059 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2060 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2061 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2062 
2063 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2064 
2065 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2066 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2067 
2068 ---------------------------------------------------------------------------------------------------------------
2069 
2070 
2071 --
2072 -- bulk performance
2073 --
2074 l_balance_type_code           VARCHAR2(1);
2075 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2076 l_log_module                  VARCHAR2(240);
2077 
2078 --
2079 -- Upgrade strategy
2080 --
2081 l_actual_upg_option           VARCHAR2(1);
2082 l_enc_upg_option           VARCHAR2(1);
2083 
2084 --
2085 BEGIN
2086 --
2087 IF g_log_enabled THEN
2088       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
2089 END IF;
2090 --
2091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2092 
2093       trace
2094          (p_msg      => 'BEGIN of AcctLineType_10'
2095          ,p_level    => C_LEVEL_PROCEDURE
2096          ,p_module   => l_log_module);
2097 
2098 END IF;
2099 --
2100 l_component_type             := 'AMB_JLT';
2101 l_component_code             := 'BAT_BANK_ERRORS_CLEAR';
2102 l_component_type_code        := 'S';
2103 l_component_appl_id          :=  260;
2104 l_amb_context_code           := 'DEFAULT';
2105 l_entity_code                := 'CE_CASHFLOWS';
2106 l_event_class_code           := 'BAT_CLASS';
2107 l_event_type_code            := 'CE_BAT_UNCLEARED';
2108 l_line_definition_owner_code := 'S';
2109 l_line_definition_code       := 'BAT_UNCLR_DEFN';
2110 --
2111 l_balance_type_code          := 'A';
2112 l_segment                     := NULL;
2113 l_ccid                        := NULL;
2114 l_adr_transaction_coa_id      := NULL;
2115 l_adr_accounting_coa_id       := NULL;
2116 l_adr_flexfield_segment_code  := NULL;
2117 l_adr_flex_value_set_id       := NULL;
2118 l_adr_value_type_code         := NULL;
2119 l_adr_value_combination_id    := NULL;
2120 l_adr_value_segment_code      := NULL;
2121 
2122 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2123 l_bflow_class_code           := '';    -- 4219869 Business Flow
2124 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2125 l_budgetary_control_flag     := 'N';
2126 
2127 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2128 l_bflow_applied_to_amt       := NULL; -- 5132302
2129 l_entered_amt_idx            := NULL;          -- 4262811
2130 l_accted_amt_idx             := NULL;          -- 4262811
2131 l_acc_rev_flag               := NULL;          -- 4262811
2132 l_accrual_line_num           := NULL;          -- 4262811
2133 l_tmp_amt                    := NULL;          -- 4262811
2134 --
2135  
2136 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2137     l_balance_type_code <> 'B' THEN
2138 IF p_source_20  IS NOT NULL 
2139  THEN 
2140 
2141    --
2142    XLA_AE_LINES_PKG.SetNewLine;
2143 
2144    p_balance_type_code          := l_balance_type_code;
2145    -- set the flag so later we will know whether the gain loss line needs to be created
2146    
2147    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2148      p_actual_flag :='A';
2149    END IF;
2150 
2151    --
2152    -- bulk performance
2153    --
2154    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2155                                       p_header_num   => 0); -- 4262811
2156    --
2157    -- set accounting line options
2158    --
2159    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2160            p_natural_side_code          => 'D'
2164          , p_switch_side_flag           => 'Y'
2161          , p_gain_or_loss_flag          => 'N'
2162          , p_gl_transfer_mode_code      => 'D'
2163          , p_acct_entry_type_code       => 'A'
2165          , p_merge_duplicate_code       => 'N'
2166          );
2167    --
2168    l_acc_rev_natural_side_code := 'C';  -- 4262811
2169    -- 
2170    --
2171    -- set accounting line type info
2172    --
2173    xla_ae_lines_pkg.SetAcctLineType
2174       (p_component_type             => l_component_type
2175       ,p_event_type_code            => l_event_type_code
2176       ,p_line_definition_owner_code => l_line_definition_owner_code
2177       ,p_line_definition_code       => l_line_definition_code
2178       ,p_accounting_line_code       => l_component_code
2179       ,p_accounting_line_type_code  => l_component_type_code
2180       ,p_accounting_line_appl_id    => l_component_appl_id
2181       ,p_amb_context_code           => l_amb_context_code
2182       ,p_entity_code                => l_entity_code
2183       ,p_event_class_code           => l_event_class_code);
2184    --
2185    -- set accounting class
2186    --
2187    xla_ae_lines_pkg.SetAcctClass(
2188            p_accounting_class_code  => 'BANK_ERROR'
2189          , p_ae_header_id           => l_ae_header_id
2190          );
2191 
2192    --
2193    -- set rounding class
2194    --
2195    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2196                       'BANK_ERROR';
2197 
2198    --
2199    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2200    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2201    --
2202    -- bulk performance
2203    --
2204    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2205 
2206    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2207       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2208 
2209    -- 4955764
2210    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2211       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2212 
2213    -- 4458381 Public Sector Enh
2214    
2215    --
2216    -- set accounting attributes for the line type
2217    --
2218    l_entered_amt_idx := 5;
2219    l_accted_amt_idx  := NULL;
2220    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2221    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2222    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
2223    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
2224    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
2225    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
2226    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
2227    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
2228    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
2229    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
2230    l_rec_acct_attrs.array_num_value(5)  := p_source_20;
2231    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
2232    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
2233    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
2234    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
2235    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
2236    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
2237    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
2238    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
2239    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
2240    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
2241    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
2242    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
2243    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
2244    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
2245 
2246    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2247    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2248 
2249    ---------------------------------------------------------------------------------------------------------------
2250    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2251    ---------------------------------------------------------------------------------------------------------------
2252    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2253 
2254    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2255    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2256 
2257    IF xla_accounting_cache_pkg.GetValueChar
2258          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2259          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2260    AND l_bflow_method_code = 'PRIOR_ENTRY'
2261 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2262    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2263          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2264        )
2265    THEN
2266          xla_ae_lines_pkg.BflowUpgEntry
2267            (p_business_method_code    => l_bflow_method_code
2268            ,p_business_class_code     => l_bflow_class_code
2269            ,p_balance_type            => l_balance_type_code);
2270    ELSE
2271       NULL;
2272 -- No business flow processing for business flow method of NONE.
2273    END IF;
2274 
2275    --
2276    -- call description
2277    --
2281    -- Bug 4922099
2278    -- No description or it is inherited.
2279    --
2280    -- call ADRs
2282    --
2283    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2284         (NVL(l_actual_upg_option, 'N') = 'O') OR
2285         (NVL(l_enc_upg_option, 'N') = 'O')
2286       )
2287    THEN
2288    NULL;
2289    --
2290    --
2291    
2292   l_ccid := AcctDerRule_4(
2293            p_application_id           => p_application_id
2294          , p_ae_header_id             => l_ae_header_id 
2295 , p_source_4 => p_source_4
2296          , x_transaction_coa_id       => l_adr_transaction_coa_id
2297          , x_accounting_coa_id        => l_adr_accounting_coa_id
2298          , x_value_type_code          => l_adr_value_type_code
2299          , p_side                     => 'NA'
2300    );
2301 
2302    xla_ae_lines_pkg.set_ccid(
2303     p_code_combination_id          => l_ccid
2304   , p_value_type_code              => l_adr_value_type_code
2305   , p_transaction_coa_id           => l_adr_transaction_coa_id
2306   , p_accounting_coa_id            => l_adr_accounting_coa_id
2307   , p_adr_code                     => 'CE_BANK_ERRORS'
2308   , p_adr_type_code                => 'S'
2309   , p_component_type               => l_component_type
2310   , p_component_code               => l_component_code
2311   , p_component_type_code          => l_component_type_code
2312   , p_component_appl_id            => l_component_appl_id
2313   , p_amb_context_code             => l_amb_context_code
2314   , p_side                         => 'NA'
2315   );
2316 
2317 
2318    --
2319    --
2320    END IF;
2321    --
2322    -- Bug 4922099
2323    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2324           (NVL(l_enc_upg_option, 'N') = 'O')
2325         ) AND
2326         (l_bflow_method_code = 'PRIOR_ENTRY')
2327       )
2328    THEN
2329       IF
2330       --
2331       1 = 2
2332       --
2333       THEN
2334       xla_accounting_err_pkg.build_message
2335                                     (p_appli_s_name            => 'XLA'
2336                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2337                                     ,p_token_1                 => 'LINE_NUMBER'
2338                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2339                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2340                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2341                                                                              l_component_type
2342                                                                             ,l_component_code
2343                                                                             ,l_component_type_code
2344                                                                             ,l_component_appl_id
2345                                                                             ,l_amb_context_code
2346                                                                             ,l_entity_code
2347                                                                             ,l_event_class_code
2348                                                                            )
2349                                     ,p_token_3                 => 'OWNER'
2350                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2351                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2352                                                                           ,p_lookup_code    => l_component_type_code
2353                                                                          )
2354                                     ,p_token_4                 => 'PRODUCT_NAME'
2355                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2356                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2357                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2358                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2359                                     ,p_ae_header_id            =>  NULL
2360                                        );
2361 
2362         IF (C_LEVEL_ERROR>= g_log_level) THEN
2363                  trace
2364                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2365                       ,p_level    => C_LEVEL_ERROR
2366                       ,p_module   => l_log_module);
2367         END IF;
2368       END IF;
2369    END IF;
2370    --
2371    --
2372    ------------------------------------------------------------------------------------------------
2373    -- 4219869 Business Flow
2374    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2375    -- Prior Entry.  Currently, the following code is always generated.
2376    ------------------------------------------------------------------------------------------------
2377    XLA_AE_LINES_PKG.ValidateCurrentLine;
2378 
2379    ------------------------------------------------------------------------------------
2380    -- 4219869 Business Flow
2381    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2382    ------------------------------------------------------------------------------------
2383    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2384 
2385    ----------------------------------------------------------------------------------
2386    -- 4219869 Business Flow
2387    -- Update journal entry status -- Need to generate this within IF <condition>
2388    ----------------------------------------------------------------------------------
2389    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2393 
2390          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2391          ,p_balance_type_code => l_balance_type_code
2392          );
2394    -------------------------------------------------------------------------------------------
2395    -- 4262811 - Generate the Accrual Reversal lines
2396    -------------------------------------------------------------------------------------------
2397    BEGIN
2398       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2399                               (g_array_event(p_event_id).array_value_num('header_index'));
2400       IF l_acc_rev_flag IS NULL THEN
2401          l_acc_rev_flag := 'N';
2402       END IF;
2403    EXCEPTION
2404       WHEN OTHERS THEN
2405          l_acc_rev_flag := 'N';
2406    END;
2407    --
2408    IF (l_acc_rev_flag = 'Y') THEN
2409 
2410        -- 4645092  ------------------------------------------------------------------------------
2411        -- To allow MPA report to determine if it should generate report process
2412        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2413        ------------------------------------------------------------------------------------------
2414 
2415        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2416        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2417 
2418        --
2419        -- Update the line information that should be overwritten
2420        --
2421        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2422                                          p_header_num   => 1);
2423        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2424 
2425        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2426 
2427        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2428           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2429        END IF;
2430 
2431       --
2432       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2433       --
2434       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2435           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2436       ELSE
2437           ---------------------------------------------------------------------------------------------------
2438           -- 4262811a Switch Sign
2439           ---------------------------------------------------------------------------------------------------
2440           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2441           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2442                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2443           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2444                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2445           -- 5132302
2446           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2447                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2448 
2449       END IF;
2450 
2451       -- 4955764
2452       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2453       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2454 
2455 
2456       XLA_AE_LINES_PKG.ValidateCurrentLine;
2457       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2458 
2459       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2460                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2461                ,p_balance_type_code => l_balance_type_code);
2462 
2463    END IF;
2464 
2465    -----------------------------------------------------------------------------------------
2466    -- 4262811 Multiperiod Accounting
2467    -----------------------------------------------------------------------------------------
2468      -- No MPA option is assigned.
2469 
2470 
2471 END IF;
2472 END IF;
2473 --
2474 
2475 --
2476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2477    trace
2478       (p_msg      => 'END of AcctLineType_10'
2479       ,p_level    => C_LEVEL_PROCEDURE
2480       ,p_module   => l_log_module);
2481 END IF;
2482 --
2483 EXCEPTION
2484   WHEN xla_exceptions_pkg.application_exception THEN
2485       RAISE;
2486   WHEN OTHERS THEN
2487        xla_exceptions_pkg.raise_message
2488            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_10');
2489 END AcctLineType_10;
2490 --
2491 
2492 ---------------------------------------
2493 --
2494 -- PRIVATE FUNCTION
2495 --         AcctLineType_11
2496 --
2497 ---------------------------------------
2498 PROCEDURE AcctLineType_11 (
2499   p_application_id        IN NUMBER
2500  ,p_event_id              IN NUMBER
2501  ,p_calculate_acctd_flag  IN VARCHAR2
2502  ,p_calculate_g_l_flag    IN VARCHAR2
2503  ,p_actual_flag           IN OUT VARCHAR2
2504  ,p_balance_type_code     OUT VARCHAR2
2505  ,p_gain_or_loss_ref      OUT VARCHAR2
2506  
2507 --Cashflow Bank Account Bank Errors Account
2508  , p_source_4            IN NUMBER
2509 --Reversal Indicator
2510  , p_source_9            IN VARCHAR2
2511 --Cashflow Number
2512  , p_source_10            IN NUMBER
2513 --Cashflow History Identifier
2514  , p_source_11            IN VARCHAR2
2515 --Distribution Link Type
2516  , p_source_12            IN VARCHAR2
2517 --Cashflow Bank Account Currency
2518  , p_source_13            IN VARCHAR2
2519 --Cashflow Cleared Exchange Rate Date
2523 --Cashflow Cleared Exchange Rate Type
2520  , p_source_14            IN DATE
2521 --Cashflow Cleared Exchange Rate
2522  , p_source_15            IN NUMBER
2524  , p_source_16            IN VARCHAR2
2525 --Reversal First Distribution Identifier
2526  , p_source_17            IN NUMBER
2527 --Reversal Second Distribution Identifier
2528  , p_source_18            IN VARCHAR2
2529 --Reversal Distribution Link Type
2530  , p_source_19            IN VARCHAR2
2531 --Cashflow Cleared Bank Error Amount
2532  , p_source_20            IN NUMBER
2533 )
2534 IS
2535 
2536 l_component_type              VARCHAR2(80);
2537 l_component_code              VARCHAR2(30);
2538 l_component_type_code         VARCHAR2(1);
2539 l_component_appl_id           INTEGER;
2540 l_amb_context_code            VARCHAR2(30);
2541 l_entity_code                 VARCHAR2(30);
2542 l_event_class_code            VARCHAR2(30);
2543 l_ae_header_id                NUMBER;
2544 l_event_type_code             VARCHAR2(30);
2545 l_line_definition_code        VARCHAR2(30);
2546 l_line_definition_owner_code  VARCHAR2(1);
2547 --
2548 -- adr variables
2549 l_segment                     VARCHAR2(30);
2550 l_ccid                        NUMBER;
2551 l_adr_transaction_coa_id      NUMBER;
2552 l_adr_accounting_coa_id       NUMBER;
2553 l_adr_flexfield_segment_code  VARCHAR2(30);
2554 l_adr_flex_value_set_id       NUMBER;
2555 l_adr_value_type_code         VARCHAR2(30);
2556 l_adr_value_combination_id    NUMBER;
2557 l_adr_value_segment_code      VARCHAR2(30);
2558 
2559 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2560 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2561 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2562 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2563 
2564 -- 4262811 Variables ------------------------------------------------------------------------------------------
2565 l_entered_amt_idx             NUMBER;
2566 l_accted_amt_idx              NUMBER;
2567 l_acc_rev_flag                VARCHAR2(1);
2568 l_accrual_line_num            NUMBER;
2569 l_tmp_amt                     NUMBER;
2570 l_acc_rev_natural_side_code   VARCHAR2(1);
2571 
2572 l_num_entries                 NUMBER;
2573 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2574 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2575 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2576 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2577 l_recog_line_1                NUMBER;
2578 l_recog_line_2                NUMBER;
2579 
2580 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2581 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2582 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2583 
2584 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2585 
2586 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2587 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2588 
2589 ---------------------------------------------------------------------------------------------------------------
2590 
2591 
2592 --
2593 -- bulk performance
2594 --
2595 l_balance_type_code           VARCHAR2(1);
2596 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2597 l_log_module                  VARCHAR2(240);
2598 
2599 --
2600 -- Upgrade strategy
2601 --
2602 l_actual_upg_option           VARCHAR2(1);
2603 l_enc_upg_option           VARCHAR2(1);
2604 
2605 --
2606 BEGIN
2607 --
2608 IF g_log_enabled THEN
2609       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
2610 END IF;
2611 --
2612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2613 
2614       trace
2615          (p_msg      => 'BEGIN of AcctLineType_11'
2616          ,p_level    => C_LEVEL_PROCEDURE
2617          ,p_module   => l_log_module);
2618 
2619 END IF;
2620 --
2621 l_component_type             := 'AMB_JLT';
2622 l_component_code             := 'BAT_BANK_ERRORS_CLEAR';
2623 l_component_type_code        := 'S';
2624 l_component_appl_id          :=  260;
2625 l_amb_context_code           := 'DEFAULT';
2626 l_entity_code                := 'CE_CASHFLOWS';
2627 l_event_class_code           := 'BAT_CLASS';
2628 l_event_type_code            := 'CE_BAT_CLEARED';
2629 l_line_definition_owner_code := 'S';
2630 l_line_definition_code       := 'BAT_CLR_DFN';
2631 --
2632 l_balance_type_code          := 'A';
2633 l_segment                     := NULL;
2634 l_ccid                        := NULL;
2635 l_adr_transaction_coa_id      := NULL;
2636 l_adr_accounting_coa_id       := NULL;
2637 l_adr_flexfield_segment_code  := NULL;
2638 l_adr_flex_value_set_id       := NULL;
2639 l_adr_value_type_code         := NULL;
2640 l_adr_value_combination_id    := NULL;
2641 l_adr_value_segment_code      := NULL;
2642 
2643 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2644 l_bflow_class_code           := '';    -- 4219869 Business Flow
2645 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2646 l_budgetary_control_flag     := 'N';
2647 
2648 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2649 l_bflow_applied_to_amt       := NULL; -- 5132302
2650 l_entered_amt_idx            := NULL;          -- 4262811
2651 l_accted_amt_idx             := NULL;          -- 4262811
2652 l_acc_rev_flag               := NULL;          -- 4262811
2653 l_accrual_line_num           := NULL;          -- 4262811
2654 l_tmp_amt                    := NULL;          -- 4262811
2655 --
2656  
2657 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2661 
2658     l_balance_type_code <> 'B' THEN
2659 IF p_source_20  IS NOT NULL 
2660  THEN 
2662    --
2663    XLA_AE_LINES_PKG.SetNewLine;
2664 
2665    p_balance_type_code          := l_balance_type_code;
2666    -- set the flag so later we will know whether the gain loss line needs to be created
2667    
2668    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2669      p_actual_flag :='A';
2670    END IF;
2671 
2672    --
2673    -- bulk performance
2674    --
2675    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2676                                       p_header_num   => 0); -- 4262811
2677    --
2678    -- set accounting line options
2679    --
2680    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2681            p_natural_side_code          => 'D'
2682          , p_gain_or_loss_flag          => 'N'
2683          , p_gl_transfer_mode_code      => 'D'
2684          , p_acct_entry_type_code       => 'A'
2685          , p_switch_side_flag           => 'Y'
2686          , p_merge_duplicate_code       => 'N'
2687          );
2688    --
2689    l_acc_rev_natural_side_code := 'C';  -- 4262811
2690    -- 
2691    --
2692    -- set accounting line type info
2693    --
2694    xla_ae_lines_pkg.SetAcctLineType
2695       (p_component_type             => l_component_type
2696       ,p_event_type_code            => l_event_type_code
2697       ,p_line_definition_owner_code => l_line_definition_owner_code
2698       ,p_line_definition_code       => l_line_definition_code
2699       ,p_accounting_line_code       => l_component_code
2700       ,p_accounting_line_type_code  => l_component_type_code
2701       ,p_accounting_line_appl_id    => l_component_appl_id
2702       ,p_amb_context_code           => l_amb_context_code
2703       ,p_entity_code                => l_entity_code
2704       ,p_event_class_code           => l_event_class_code);
2705    --
2706    -- set accounting class
2707    --
2708    xla_ae_lines_pkg.SetAcctClass(
2709            p_accounting_class_code  => 'BANK_ERROR'
2710          , p_ae_header_id           => l_ae_header_id
2711          );
2712 
2713    --
2714    -- set rounding class
2715    --
2716    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2717                       'BANK_ERROR';
2718 
2719    --
2720    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2721    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2722    --
2723    -- bulk performance
2724    --
2725    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2726 
2727    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2728       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2729 
2730    -- 4955764
2731    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2733 
2734    -- 4458381 Public Sector Enh
2735    
2736    --
2737    -- set accounting attributes for the line type
2738    --
2739    l_entered_amt_idx := 5;
2740    l_accted_amt_idx  := NULL;
2741    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2742    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2743    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
2744    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
2745    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
2746    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
2747    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
2748    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
2749    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
2750    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
2751    l_rec_acct_attrs.array_num_value(5)  := p_source_20;
2752    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
2753    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
2754    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
2755    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
2756    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
2757    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
2758    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
2759    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
2760    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
2761    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
2762    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
2763    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
2764    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
2765    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
2766 
2767    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2768    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2769 
2770    ---------------------------------------------------------------------------------------------------------------
2771    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2772    ---------------------------------------------------------------------------------------------------------------
2773    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2774 
2775    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2776    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2777 
2778    IF xla_accounting_cache_pkg.GetValueChar
2782 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2779          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2780          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2781    AND l_bflow_method_code = 'PRIOR_ENTRY'
2783    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2784          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2785        )
2786    THEN
2787          xla_ae_lines_pkg.BflowUpgEntry
2788            (p_business_method_code    => l_bflow_method_code
2789            ,p_business_class_code     => l_bflow_class_code
2790            ,p_balance_type            => l_balance_type_code);
2791    ELSE
2792       NULL;
2793 -- No business flow processing for business flow method of NONE.
2794    END IF;
2795 
2796    --
2797    -- call description
2798    --
2799    -- No description or it is inherited.
2800    --
2801    -- call ADRs
2802    -- Bug 4922099
2803    --
2804    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2805         (NVL(l_actual_upg_option, 'N') = 'O') OR
2806         (NVL(l_enc_upg_option, 'N') = 'O')
2807       )
2808    THEN
2809    NULL;
2810    --
2811    --
2812    
2813   l_ccid := AcctDerRule_4(
2814            p_application_id           => p_application_id
2815          , p_ae_header_id             => l_ae_header_id 
2816 , p_source_4 => p_source_4
2817          , x_transaction_coa_id       => l_adr_transaction_coa_id
2818          , x_accounting_coa_id        => l_adr_accounting_coa_id
2819          , x_value_type_code          => l_adr_value_type_code
2820          , p_side                     => 'NA'
2821    );
2822 
2823    xla_ae_lines_pkg.set_ccid(
2824     p_code_combination_id          => l_ccid
2825   , p_value_type_code              => l_adr_value_type_code
2826   , p_transaction_coa_id           => l_adr_transaction_coa_id
2827   , p_accounting_coa_id            => l_adr_accounting_coa_id
2828   , p_adr_code                     => 'CE_BANK_ERRORS'
2829   , p_adr_type_code                => 'S'
2830   , p_component_type               => l_component_type
2831   , p_component_code               => l_component_code
2832   , p_component_type_code          => l_component_type_code
2833   , p_component_appl_id            => l_component_appl_id
2834   , p_amb_context_code             => l_amb_context_code
2835   , p_side                         => 'NA'
2836   );
2837 
2838 
2839    --
2840    --
2841    END IF;
2842    --
2843    -- Bug 4922099
2844    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2845           (NVL(l_enc_upg_option, 'N') = 'O')
2846         ) AND
2847         (l_bflow_method_code = 'PRIOR_ENTRY')
2848       )
2849    THEN
2850       IF
2851       --
2852       1 = 2
2853       --
2854       THEN
2855       xla_accounting_err_pkg.build_message
2856                                     (p_appli_s_name            => 'XLA'
2857                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2858                                     ,p_token_1                 => 'LINE_NUMBER'
2859                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2860                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2861                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2862                                                                              l_component_type
2863                                                                             ,l_component_code
2864                                                                             ,l_component_type_code
2865                                                                             ,l_component_appl_id
2866                                                                             ,l_amb_context_code
2867                                                                             ,l_entity_code
2868                                                                             ,l_event_class_code
2869                                                                            )
2870                                     ,p_token_3                 => 'OWNER'
2871                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2872                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2873                                                                           ,p_lookup_code    => l_component_type_code
2874                                                                          )
2875                                     ,p_token_4                 => 'PRODUCT_NAME'
2876                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2877                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2878                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2879                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2880                                     ,p_ae_header_id            =>  NULL
2881                                        );
2882 
2883         IF (C_LEVEL_ERROR>= g_log_level) THEN
2884                  trace
2885                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2886                       ,p_level    => C_LEVEL_ERROR
2887                       ,p_module   => l_log_module);
2888         END IF;
2889       END IF;
2890    END IF;
2891    --
2892    --
2893    ------------------------------------------------------------------------------------------------
2894    -- 4219869 Business Flow
2895    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2896    -- Prior Entry.  Currently, the following code is always generated.
2900    ------------------------------------------------------------------------------------
2897    ------------------------------------------------------------------------------------------------
2898    XLA_AE_LINES_PKG.ValidateCurrentLine;
2899 
2901    -- 4219869 Business Flow
2902    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2903    ------------------------------------------------------------------------------------
2904    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2905 
2906    ----------------------------------------------------------------------------------
2907    -- 4219869 Business Flow
2908    -- Update journal entry status -- Need to generate this within IF <condition>
2909    ----------------------------------------------------------------------------------
2910    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2911          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2912          ,p_balance_type_code => l_balance_type_code
2913          );
2914 
2915    -------------------------------------------------------------------------------------------
2916    -- 4262811 - Generate the Accrual Reversal lines
2917    -------------------------------------------------------------------------------------------
2918    BEGIN
2919       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2920                               (g_array_event(p_event_id).array_value_num('header_index'));
2921       IF l_acc_rev_flag IS NULL THEN
2922          l_acc_rev_flag := 'N';
2923       END IF;
2924    EXCEPTION
2925       WHEN OTHERS THEN
2926          l_acc_rev_flag := 'N';
2927    END;
2928    --
2929    IF (l_acc_rev_flag = 'Y') THEN
2930 
2931        -- 4645092  ------------------------------------------------------------------------------
2932        -- To allow MPA report to determine if it should generate report process
2933        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2934        ------------------------------------------------------------------------------------------
2935 
2936        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2937        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2938 
2939        --
2940        -- Update the line information that should be overwritten
2941        --
2942        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2943                                          p_header_num   => 1);
2944        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2945 
2946        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2947 
2948        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2949           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2950        END IF;
2951 
2952       --
2953       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2954       --
2955       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2956           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2957       ELSE
2958           ---------------------------------------------------------------------------------------------------
2959           -- 4262811a Switch Sign
2960           ---------------------------------------------------------------------------------------------------
2961           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2962           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2963                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2964           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2965                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2966           -- 5132302
2967           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2968                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2969 
2970       END IF;
2971 
2972       -- 4955764
2973       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2975 
2976 
2977       XLA_AE_LINES_PKG.ValidateCurrentLine;
2978       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2979 
2980       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2981                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2982                ,p_balance_type_code => l_balance_type_code);
2983 
2984    END IF;
2985 
2986    -----------------------------------------------------------------------------------------
2987    -- 4262811 Multiperiod Accounting
2988    -----------------------------------------------------------------------------------------
2989      -- No MPA option is assigned.
2990 
2991 
2992 END IF;
2993 END IF;
2994 --
2995 
2996 --
2997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2998    trace
2999       (p_msg      => 'END of AcctLineType_11'
3000       ,p_level    => C_LEVEL_PROCEDURE
3001       ,p_module   => l_log_module);
3002 END IF;
3003 --
3004 EXCEPTION
3005   WHEN xla_exceptions_pkg.application_exception THEN
3006       RAISE;
3007   WHEN OTHERS THEN
3008        xla_exceptions_pkg.raise_message
3009            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_11');
3010 END AcctLineType_11;
3011 --
3012 
3013 ---------------------------------------
3014 --
3015 -- PRIVATE FUNCTION
3016 --         AcctLineType_12
3017 --
3018 ---------------------------------------
3022  ,p_calculate_acctd_flag  IN VARCHAR2
3019 PROCEDURE AcctLineType_12 (
3020   p_application_id        IN NUMBER
3021  ,p_event_id              IN NUMBER
3023  ,p_calculate_g_l_flag    IN VARCHAR2
3024  ,p_actual_flag           IN OUT VARCHAR2
3025  ,p_balance_type_code     OUT VARCHAR2
3026  ,p_gain_or_loss_ref      OUT VARCHAR2
3027  
3028 --Cashflow Bank Account FX Charges Account
3029  , p_source_6            IN NUMBER
3030 --Reversal Indicator
3031  , p_source_9            IN VARCHAR2
3032 --Cashflow Number
3033  , p_source_10            IN NUMBER
3034 --Cashflow History Identifier
3035  , p_source_11            IN VARCHAR2
3036 --Distribution Link Type
3037  , p_source_12            IN VARCHAR2
3038 --Cashflow Bank Account Currency
3039  , p_source_13            IN VARCHAR2
3040 --Cashflow Cleared Exchange Rate Date
3041  , p_source_14            IN DATE
3042 --Cashflow Cleared Exchange Rate
3043  , p_source_15            IN NUMBER
3044 --Cashflow Cleared Exchange Rate Type
3045  , p_source_16            IN VARCHAR2
3046 --Reversal First Distribution Identifier
3047  , p_source_17            IN NUMBER
3048 --Reversal Second Distribution Identifier
3049  , p_source_18            IN VARCHAR2
3050 --Reversal Distribution Link Type
3051  , p_source_19            IN VARCHAR2
3052 --Cashflow Cleared FX Charge Amount
3053  , p_source_21            IN NUMBER
3054 )
3055 IS
3056 
3057 l_component_type              VARCHAR2(80);
3058 l_component_code              VARCHAR2(30);
3059 l_component_type_code         VARCHAR2(1);
3060 l_component_appl_id           INTEGER;
3061 l_amb_context_code            VARCHAR2(30);
3062 l_entity_code                 VARCHAR2(30);
3063 l_event_class_code            VARCHAR2(30);
3064 l_ae_header_id                NUMBER;
3065 l_event_type_code             VARCHAR2(30);
3066 l_line_definition_code        VARCHAR2(30);
3067 l_line_definition_owner_code  VARCHAR2(1);
3068 --
3069 -- adr variables
3070 l_segment                     VARCHAR2(30);
3071 l_ccid                        NUMBER;
3072 l_adr_transaction_coa_id      NUMBER;
3073 l_adr_accounting_coa_id       NUMBER;
3074 l_adr_flexfield_segment_code  VARCHAR2(30);
3075 l_adr_flex_value_set_id       NUMBER;
3076 l_adr_value_type_code         VARCHAR2(30);
3077 l_adr_value_combination_id    NUMBER;
3078 l_adr_value_segment_code      VARCHAR2(30);
3079 
3080 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3081 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3082 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3083 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3084 
3085 -- 4262811 Variables ------------------------------------------------------------------------------------------
3086 l_entered_amt_idx             NUMBER;
3087 l_accted_amt_idx              NUMBER;
3088 l_acc_rev_flag                VARCHAR2(1);
3089 l_accrual_line_num            NUMBER;
3090 l_tmp_amt                     NUMBER;
3091 l_acc_rev_natural_side_code   VARCHAR2(1);
3092 
3093 l_num_entries                 NUMBER;
3094 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3095 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3096 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3097 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3098 l_recog_line_1                NUMBER;
3099 l_recog_line_2                NUMBER;
3100 
3101 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3102 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3103 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3104 
3105 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3106 
3107 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3108 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3109 
3110 ---------------------------------------------------------------------------------------------------------------
3111 
3112 
3113 --
3114 -- bulk performance
3115 --
3116 l_balance_type_code           VARCHAR2(1);
3117 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3118 l_log_module                  VARCHAR2(240);
3119 
3120 --
3121 -- Upgrade strategy
3122 --
3123 l_actual_upg_option           VARCHAR2(1);
3124 l_enc_upg_option           VARCHAR2(1);
3125 
3126 --
3127 BEGIN
3128 --
3129 IF g_log_enabled THEN
3130       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
3131 END IF;
3132 --
3133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3134 
3135       trace
3136          (p_msg      => 'BEGIN of AcctLineType_12'
3137          ,p_level    => C_LEVEL_PROCEDURE
3138          ,p_module   => l_log_module);
3139 
3140 END IF;
3141 --
3142 l_component_type             := 'AMB_JLT';
3143 l_component_code             := 'BAT_FX_CHARGES_CLEAR';
3144 l_component_type_code        := 'S';
3145 l_component_appl_id          :=  260;
3146 l_amb_context_code           := 'DEFAULT';
3147 l_entity_code                := 'CE_CASHFLOWS';
3148 l_event_class_code           := 'BAT_CLASS';
3149 l_event_type_code            := 'CE_BAT_UNCLEARED';
3150 l_line_definition_owner_code := 'S';
3151 l_line_definition_code       := 'BAT_UNCLR_DEFN';
3152 --
3153 l_balance_type_code          := 'A';
3154 l_segment                     := NULL;
3155 l_ccid                        := NULL;
3156 l_adr_transaction_coa_id      := NULL;
3157 l_adr_accounting_coa_id       := NULL;
3158 l_adr_flexfield_segment_code  := NULL;
3159 l_adr_flex_value_set_id       := NULL;
3160 l_adr_value_type_code         := NULL;
3161 l_adr_value_combination_id    := NULL;
3165 l_bflow_class_code           := '';    -- 4219869 Business Flow
3162 l_adr_value_segment_code      := NULL;
3163 
3164 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3166 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3167 l_budgetary_control_flag     := 'N';
3168 
3169 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3170 l_bflow_applied_to_amt       := NULL; -- 5132302
3171 l_entered_amt_idx            := NULL;          -- 4262811
3172 l_accted_amt_idx             := NULL;          -- 4262811
3173 l_acc_rev_flag               := NULL;          -- 4262811
3174 l_accrual_line_num           := NULL;          -- 4262811
3175 l_tmp_amt                    := NULL;          -- 4262811
3176 --
3177  
3178 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3179     l_balance_type_code <> 'B' THEN
3180 IF p_source_21  IS NOT NULL 
3181  THEN 
3182 
3183    --
3184    XLA_AE_LINES_PKG.SetNewLine;
3185 
3186    p_balance_type_code          := l_balance_type_code;
3187    -- set the flag so later we will know whether the gain loss line needs to be created
3188    
3189    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3190      p_actual_flag :='A';
3191    END IF;
3192 
3193    --
3194    -- bulk performance
3195    --
3196    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3197                                       p_header_num   => 0); -- 4262811
3198    --
3199    -- set accounting line options
3200    --
3201    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3202            p_natural_side_code          => 'D'
3203          , p_gain_or_loss_flag          => 'N'
3204          , p_gl_transfer_mode_code      => 'D'
3205          , p_acct_entry_type_code       => 'A'
3206          , p_switch_side_flag           => 'Y'
3207          , p_merge_duplicate_code       => 'N'
3208          );
3209    --
3210    l_acc_rev_natural_side_code := 'C';  -- 4262811
3211    -- 
3212    --
3213    -- set accounting line type info
3214    --
3215    xla_ae_lines_pkg.SetAcctLineType
3216       (p_component_type             => l_component_type
3217       ,p_event_type_code            => l_event_type_code
3218       ,p_line_definition_owner_code => l_line_definition_owner_code
3219       ,p_line_definition_code       => l_line_definition_code
3220       ,p_accounting_line_code       => l_component_code
3221       ,p_accounting_line_type_code  => l_component_type_code
3222       ,p_accounting_line_appl_id    => l_component_appl_id
3223       ,p_amb_context_code           => l_amb_context_code
3224       ,p_entity_code                => l_entity_code
3225       ,p_event_class_code           => l_event_class_code);
3226    --
3227    -- set accounting class
3228    --
3229    xla_ae_lines_pkg.SetAcctClass(
3230            p_accounting_class_code  => 'BANK_ERROR'
3231          , p_ae_header_id           => l_ae_header_id
3232          );
3233 
3234    --
3235    -- set rounding class
3236    --
3237    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3238                       'BANK_ERROR';
3239 
3240    --
3241    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3242    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3243    --
3244    -- bulk performance
3245    --
3246    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3247 
3248    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3249       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3250 
3251    -- 4955764
3252    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3253       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3254 
3255    -- 4458381 Public Sector Enh
3256    
3257    --
3258    -- set accounting attributes for the line type
3259    --
3260    l_entered_amt_idx := 5;
3261    l_accted_amt_idx  := NULL;
3262    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3263    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3264    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
3265    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
3266    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
3267    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
3268    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
3269    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3270    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
3271    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
3272    l_rec_acct_attrs.array_num_value(5)  := p_source_21;
3273    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
3274    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
3275    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
3276    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
3277    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
3278    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
3279    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
3280    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
3281    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
3282    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
3283    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
3284    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
3285    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3286    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
3287 
3288    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3292    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3289    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3290 
3291    ---------------------------------------------------------------------------------------------------------------
3293    ---------------------------------------------------------------------------------------------------------------
3294    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3295 
3296    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3297    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3298 
3299    IF xla_accounting_cache_pkg.GetValueChar
3300          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3301          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3302    AND l_bflow_method_code = 'PRIOR_ENTRY'
3303 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3304    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3305          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3306        )
3307    THEN
3308          xla_ae_lines_pkg.BflowUpgEntry
3309            (p_business_method_code    => l_bflow_method_code
3310            ,p_business_class_code     => l_bflow_class_code
3311            ,p_balance_type            => l_balance_type_code);
3312    ELSE
3313       NULL;
3314 -- No business flow processing for business flow method of NONE.
3315    END IF;
3316 
3317    --
3318    -- call description
3319    --
3320    -- No description or it is inherited.
3321    --
3322    -- call ADRs
3323    -- Bug 4922099
3324    --
3325    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3326         (NVL(l_actual_upg_option, 'N') = 'O') OR
3327         (NVL(l_enc_upg_option, 'N') = 'O')
3328       )
3329    THEN
3330    NULL;
3331    --
3332    --
3333    
3334   l_ccid := AcctDerRule_6(
3335            p_application_id           => p_application_id
3336          , p_ae_header_id             => l_ae_header_id 
3337 , p_source_6 => p_source_6
3338          , x_transaction_coa_id       => l_adr_transaction_coa_id
3339          , x_accounting_coa_id        => l_adr_accounting_coa_id
3340          , x_value_type_code          => l_adr_value_type_code
3341          , p_side                     => 'NA'
3342    );
3343 
3344    xla_ae_lines_pkg.set_ccid(
3345     p_code_combination_id          => l_ccid
3346   , p_value_type_code              => l_adr_value_type_code
3347   , p_transaction_coa_id           => l_adr_transaction_coa_id
3348   , p_accounting_coa_id            => l_adr_accounting_coa_id
3349   , p_adr_code                     => 'CE_FX_CHARGES'
3350   , p_adr_type_code                => 'S'
3351   , p_component_type               => l_component_type
3352   , p_component_code               => l_component_code
3353   , p_component_type_code          => l_component_type_code
3354   , p_component_appl_id            => l_component_appl_id
3355   , p_amb_context_code             => l_amb_context_code
3356   , p_side                         => 'NA'
3357   );
3358 
3359 
3360    --
3361    --
3362    END IF;
3363    --
3364    -- Bug 4922099
3365    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3366           (NVL(l_enc_upg_option, 'N') = 'O')
3367         ) AND
3368         (l_bflow_method_code = 'PRIOR_ENTRY')
3369       )
3370    THEN
3371       IF
3372       --
3373       1 = 2
3374       --
3375       THEN
3376       xla_accounting_err_pkg.build_message
3377                                     (p_appli_s_name            => 'XLA'
3378                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3379                                     ,p_token_1                 => 'LINE_NUMBER'
3380                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3381                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3382                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3383                                                                              l_component_type
3384                                                                             ,l_component_code
3385                                                                             ,l_component_type_code
3386                                                                             ,l_component_appl_id
3387                                                                             ,l_amb_context_code
3388                                                                             ,l_entity_code
3389                                                                             ,l_event_class_code
3390                                                                            )
3391                                     ,p_token_3                 => 'OWNER'
3392                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3393                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3394                                                                           ,p_lookup_code    => l_component_type_code
3395                                                                          )
3396                                     ,p_token_4                 => 'PRODUCT_NAME'
3397                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3398                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3399                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3400                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3404         IF (C_LEVEL_ERROR>= g_log_level) THEN
3401                                     ,p_ae_header_id            =>  NULL
3402                                        );
3403 
3405                  trace
3406                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3407                       ,p_level    => C_LEVEL_ERROR
3408                       ,p_module   => l_log_module);
3409         END IF;
3410       END IF;
3411    END IF;
3412    --
3413    --
3414    ------------------------------------------------------------------------------------------------
3415    -- 4219869 Business Flow
3416    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3417    -- Prior Entry.  Currently, the following code is always generated.
3418    ------------------------------------------------------------------------------------------------
3419    XLA_AE_LINES_PKG.ValidateCurrentLine;
3420 
3421    ------------------------------------------------------------------------------------
3422    -- 4219869 Business Flow
3423    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3424    ------------------------------------------------------------------------------------
3425    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3426 
3427    ----------------------------------------------------------------------------------
3428    -- 4219869 Business Flow
3429    -- Update journal entry status -- Need to generate this within IF <condition>
3430    ----------------------------------------------------------------------------------
3431    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3432          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3433          ,p_balance_type_code => l_balance_type_code
3434          );
3435 
3436    -------------------------------------------------------------------------------------------
3437    -- 4262811 - Generate the Accrual Reversal lines
3438    -------------------------------------------------------------------------------------------
3439    BEGIN
3440       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3441                               (g_array_event(p_event_id).array_value_num('header_index'));
3442       IF l_acc_rev_flag IS NULL THEN
3443          l_acc_rev_flag := 'N';
3444       END IF;
3445    EXCEPTION
3446       WHEN OTHERS THEN
3447          l_acc_rev_flag := 'N';
3448    END;
3449    --
3450    IF (l_acc_rev_flag = 'Y') THEN
3451 
3452        -- 4645092  ------------------------------------------------------------------------------
3453        -- To allow MPA report to determine if it should generate report process
3454        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3455        ------------------------------------------------------------------------------------------
3456 
3457        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3458        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3459 
3460        --
3461        -- Update the line information that should be overwritten
3462        --
3463        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3464                                          p_header_num   => 1);
3465        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3466 
3467        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3468 
3469        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3470           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3471        END IF;
3472 
3473       --
3474       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3475       --
3476       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3477           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3478       ELSE
3479           ---------------------------------------------------------------------------------------------------
3480           -- 4262811a Switch Sign
3481           ---------------------------------------------------------------------------------------------------
3482           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3483           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3484                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3485           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3486                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3487           -- 5132302
3488           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3489                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3490 
3491       END IF;
3492 
3493       -- 4955764
3494       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3495       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3496 
3497 
3498       XLA_AE_LINES_PKG.ValidateCurrentLine;
3499       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3500 
3501       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3502                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3503                ,p_balance_type_code => l_balance_type_code);
3504 
3505    END IF;
3506 
3507    -----------------------------------------------------------------------------------------
3508    -- 4262811 Multiperiod Accounting
3509    -----------------------------------------------------------------------------------------
3510      -- No MPA option is assigned.
3511 
3512 
3513 END IF;
3514 END IF;
3518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3515 --
3516 
3517 --
3519    trace
3520       (p_msg      => 'END of AcctLineType_12'
3521       ,p_level    => C_LEVEL_PROCEDURE
3522       ,p_module   => l_log_module);
3523 END IF;
3524 --
3525 EXCEPTION
3526   WHEN xla_exceptions_pkg.application_exception THEN
3527       RAISE;
3528   WHEN OTHERS THEN
3529        xla_exceptions_pkg.raise_message
3530            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_12');
3531 END AcctLineType_12;
3532 --
3533 
3534 ---------------------------------------
3535 --
3536 -- PRIVATE FUNCTION
3537 --         AcctLineType_13
3538 --
3539 ---------------------------------------
3540 PROCEDURE AcctLineType_13 (
3541   p_application_id        IN NUMBER
3542  ,p_event_id              IN NUMBER
3543  ,p_calculate_acctd_flag  IN VARCHAR2
3544  ,p_calculate_g_l_flag    IN VARCHAR2
3545  ,p_actual_flag           IN OUT VARCHAR2
3546  ,p_balance_type_code     OUT VARCHAR2
3547  ,p_gain_or_loss_ref      OUT VARCHAR2
3548  
3549 --Cashflow Bank Account FX Charges Account
3550  , p_source_6            IN NUMBER
3551 --Reversal Indicator
3552  , p_source_9            IN VARCHAR2
3553 --Cashflow Number
3554  , p_source_10            IN NUMBER
3555 --Cashflow History Identifier
3556  , p_source_11            IN VARCHAR2
3557 --Distribution Link Type
3558  , p_source_12            IN VARCHAR2
3559 --Cashflow Bank Account Currency
3560  , p_source_13            IN VARCHAR2
3561 --Cashflow Cleared Exchange Rate Date
3562  , p_source_14            IN DATE
3563 --Cashflow Cleared Exchange Rate
3564  , p_source_15            IN NUMBER
3565 --Cashflow Cleared Exchange Rate Type
3566  , p_source_16            IN VARCHAR2
3567 --Reversal First Distribution Identifier
3568  , p_source_17            IN NUMBER
3569 --Reversal Second Distribution Identifier
3570  , p_source_18            IN VARCHAR2
3571 --Reversal Distribution Link Type
3572  , p_source_19            IN VARCHAR2
3573 --Cashflow Cleared FX Charge Amount
3574  , p_source_21            IN NUMBER
3575 )
3576 IS
3577 
3578 l_component_type              VARCHAR2(80);
3579 l_component_code              VARCHAR2(30);
3580 l_component_type_code         VARCHAR2(1);
3581 l_component_appl_id           INTEGER;
3582 l_amb_context_code            VARCHAR2(30);
3583 l_entity_code                 VARCHAR2(30);
3584 l_event_class_code            VARCHAR2(30);
3585 l_ae_header_id                NUMBER;
3586 l_event_type_code             VARCHAR2(30);
3587 l_line_definition_code        VARCHAR2(30);
3588 l_line_definition_owner_code  VARCHAR2(1);
3589 --
3590 -- adr variables
3591 l_segment                     VARCHAR2(30);
3592 l_ccid                        NUMBER;
3593 l_adr_transaction_coa_id      NUMBER;
3594 l_adr_accounting_coa_id       NUMBER;
3595 l_adr_flexfield_segment_code  VARCHAR2(30);
3596 l_adr_flex_value_set_id       NUMBER;
3597 l_adr_value_type_code         VARCHAR2(30);
3598 l_adr_value_combination_id    NUMBER;
3599 l_adr_value_segment_code      VARCHAR2(30);
3600 
3601 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3602 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3603 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3604 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3605 
3606 -- 4262811 Variables ------------------------------------------------------------------------------------------
3607 l_entered_amt_idx             NUMBER;
3608 l_accted_amt_idx              NUMBER;
3609 l_acc_rev_flag                VARCHAR2(1);
3610 l_accrual_line_num            NUMBER;
3611 l_tmp_amt                     NUMBER;
3612 l_acc_rev_natural_side_code   VARCHAR2(1);
3613 
3614 l_num_entries                 NUMBER;
3615 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3616 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3617 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3618 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3619 l_recog_line_1                NUMBER;
3620 l_recog_line_2                NUMBER;
3621 
3622 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3623 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3624 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3625 
3626 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3627 
3628 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3629 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3630 
3631 ---------------------------------------------------------------------------------------------------------------
3632 
3633 
3634 --
3635 -- bulk performance
3636 --
3637 l_balance_type_code           VARCHAR2(1);
3638 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3639 l_log_module                  VARCHAR2(240);
3640 
3641 --
3642 -- Upgrade strategy
3643 --
3644 l_actual_upg_option           VARCHAR2(1);
3645 l_enc_upg_option           VARCHAR2(1);
3646 
3647 --
3648 BEGIN
3649 --
3650 IF g_log_enabled THEN
3651       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
3652 END IF;
3653 --
3654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3655 
3656       trace
3657          (p_msg      => 'BEGIN of AcctLineType_13'
3658          ,p_level    => C_LEVEL_PROCEDURE
3659          ,p_module   => l_log_module);
3660 
3661 END IF;
3662 --
3663 l_component_type             := 'AMB_JLT';
3664 l_component_code             := 'BAT_FX_CHARGES_CLEAR';
3665 l_component_type_code        := 'S';
3669 l_event_class_code           := 'BAT_CLASS';
3666 l_component_appl_id          :=  260;
3667 l_amb_context_code           := 'DEFAULT';
3668 l_entity_code                := 'CE_CASHFLOWS';
3670 l_event_type_code            := 'CE_BAT_CLEARED';
3671 l_line_definition_owner_code := 'S';
3672 l_line_definition_code       := 'BAT_CLR_DFN';
3673 --
3674 l_balance_type_code          := 'A';
3675 l_segment                     := NULL;
3676 l_ccid                        := NULL;
3677 l_adr_transaction_coa_id      := NULL;
3678 l_adr_accounting_coa_id       := NULL;
3679 l_adr_flexfield_segment_code  := NULL;
3680 l_adr_flex_value_set_id       := NULL;
3681 l_adr_value_type_code         := NULL;
3682 l_adr_value_combination_id    := NULL;
3683 l_adr_value_segment_code      := NULL;
3684 
3685 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3686 l_bflow_class_code           := '';    -- 4219869 Business Flow
3687 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3688 l_budgetary_control_flag     := 'N';
3689 
3690 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3691 l_bflow_applied_to_amt       := NULL; -- 5132302
3692 l_entered_amt_idx            := NULL;          -- 4262811
3693 l_accted_amt_idx             := NULL;          -- 4262811
3694 l_acc_rev_flag               := NULL;          -- 4262811
3695 l_accrual_line_num           := NULL;          -- 4262811
3696 l_tmp_amt                    := NULL;          -- 4262811
3697 --
3698  
3699 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3700     l_balance_type_code <> 'B' THEN
3701 IF p_source_21  IS NOT NULL 
3702  THEN 
3703 
3704    --
3705    XLA_AE_LINES_PKG.SetNewLine;
3706 
3707    p_balance_type_code          := l_balance_type_code;
3708    -- set the flag so later we will know whether the gain loss line needs to be created
3709    
3710    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3711      p_actual_flag :='A';
3712    END IF;
3713 
3714    --
3715    -- bulk performance
3716    --
3717    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3718                                       p_header_num   => 0); -- 4262811
3719    --
3720    -- set accounting line options
3721    --
3722    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3723            p_natural_side_code          => 'D'
3724          , p_gain_or_loss_flag          => 'N'
3725          , p_gl_transfer_mode_code      => 'D'
3726          , p_acct_entry_type_code       => 'A'
3727          , p_switch_side_flag           => 'Y'
3728          , p_merge_duplicate_code       => 'N'
3729          );
3730    --
3731    l_acc_rev_natural_side_code := 'C';  -- 4262811
3732    -- 
3733    --
3734    -- set accounting line type info
3735    --
3736    xla_ae_lines_pkg.SetAcctLineType
3737       (p_component_type             => l_component_type
3738       ,p_event_type_code            => l_event_type_code
3739       ,p_line_definition_owner_code => l_line_definition_owner_code
3740       ,p_line_definition_code       => l_line_definition_code
3741       ,p_accounting_line_code       => l_component_code
3742       ,p_accounting_line_type_code  => l_component_type_code
3743       ,p_accounting_line_appl_id    => l_component_appl_id
3744       ,p_amb_context_code           => l_amb_context_code
3745       ,p_entity_code                => l_entity_code
3746       ,p_event_class_code           => l_event_class_code);
3747    --
3748    -- set accounting class
3749    --
3750    xla_ae_lines_pkg.SetAcctClass(
3751            p_accounting_class_code  => 'BANK_ERROR'
3752          , p_ae_header_id           => l_ae_header_id
3753          );
3754 
3755    --
3756    -- set rounding class
3757    --
3758    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3759                       'BANK_ERROR';
3760 
3761    --
3762    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3763    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3764    --
3765    -- bulk performance
3766    --
3767    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3768 
3769    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3770       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3771 
3772    -- 4955764
3773    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3774       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3775 
3776    -- 4458381 Public Sector Enh
3777    
3778    --
3779    -- set accounting attributes for the line type
3780    --
3781    l_entered_amt_idx := 5;
3782    l_accted_amt_idx  := NULL;
3783    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3784    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3785    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
3786    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
3787    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
3788    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
3789    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
3790    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3791    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
3792    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
3793    l_rec_acct_attrs.array_num_value(5)  := p_source_21;
3794    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
3795    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
3796    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
3800    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
3797    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
3798    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
3799    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
3801    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
3802    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
3803    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
3804    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
3805    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
3806    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3807    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
3808 
3809    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3810    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3811 
3812    ---------------------------------------------------------------------------------------------------------------
3813    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3814    ---------------------------------------------------------------------------------------------------------------
3815    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3816 
3817    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3818    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3819 
3820    IF xla_accounting_cache_pkg.GetValueChar
3821          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3822          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3823    AND l_bflow_method_code = 'PRIOR_ENTRY'
3824 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3825    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3826          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3827        )
3828    THEN
3829          xla_ae_lines_pkg.BflowUpgEntry
3830            (p_business_method_code    => l_bflow_method_code
3831            ,p_business_class_code     => l_bflow_class_code
3832            ,p_balance_type            => l_balance_type_code);
3833    ELSE
3834       NULL;
3835 -- No business flow processing for business flow method of NONE.
3836    END IF;
3837 
3838    --
3839    -- call description
3840    --
3841    -- No description or it is inherited.
3842    --
3843    -- call ADRs
3844    -- Bug 4922099
3845    --
3846    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3847         (NVL(l_actual_upg_option, 'N') = 'O') OR
3848         (NVL(l_enc_upg_option, 'N') = 'O')
3849       )
3850    THEN
3851    NULL;
3852    --
3853    --
3854    
3855   l_ccid := AcctDerRule_6(
3856            p_application_id           => p_application_id
3857          , p_ae_header_id             => l_ae_header_id 
3858 , p_source_6 => p_source_6
3859          , x_transaction_coa_id       => l_adr_transaction_coa_id
3860          , x_accounting_coa_id        => l_adr_accounting_coa_id
3861          , x_value_type_code          => l_adr_value_type_code
3862          , p_side                     => 'NA'
3863    );
3864 
3865    xla_ae_lines_pkg.set_ccid(
3866     p_code_combination_id          => l_ccid
3867   , p_value_type_code              => l_adr_value_type_code
3868   , p_transaction_coa_id           => l_adr_transaction_coa_id
3869   , p_accounting_coa_id            => l_adr_accounting_coa_id
3870   , p_adr_code                     => 'CE_FX_CHARGES'
3871   , p_adr_type_code                => 'S'
3872   , p_component_type               => l_component_type
3873   , p_component_code               => l_component_code
3874   , p_component_type_code          => l_component_type_code
3875   , p_component_appl_id            => l_component_appl_id
3876   , p_amb_context_code             => l_amb_context_code
3877   , p_side                         => 'NA'
3878   );
3879 
3880 
3881    --
3882    --
3883    END IF;
3884    --
3885    -- Bug 4922099
3886    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3887           (NVL(l_enc_upg_option, 'N') = 'O')
3888         ) AND
3889         (l_bflow_method_code = 'PRIOR_ENTRY')
3890       )
3891    THEN
3892       IF
3893       --
3894       1 = 2
3895       --
3896       THEN
3897       xla_accounting_err_pkg.build_message
3898                                     (p_appli_s_name            => 'XLA'
3899                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3900                                     ,p_token_1                 => 'LINE_NUMBER'
3901                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3902                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3903                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3904                                                                              l_component_type
3905                                                                             ,l_component_code
3906                                                                             ,l_component_type_code
3907                                                                             ,l_component_appl_id
3908                                                                             ,l_amb_context_code
3909                                                                             ,l_entity_code
3910                                                                             ,l_event_class_code
3911                                                                            )
3912                                     ,p_token_3                 => 'OWNER'
3913                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3917                                     ,p_token_4                 => 'PRODUCT_NAME'
3914                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3915                                                                           ,p_lookup_code    => l_component_type_code
3916                                                                          )
3918                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3919                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3920                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3921                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3922                                     ,p_ae_header_id            =>  NULL
3923                                        );
3924 
3925         IF (C_LEVEL_ERROR>= g_log_level) THEN
3926                  trace
3927                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3928                       ,p_level    => C_LEVEL_ERROR
3929                       ,p_module   => l_log_module);
3930         END IF;
3931       END IF;
3932    END IF;
3933    --
3934    --
3935    ------------------------------------------------------------------------------------------------
3936    -- 4219869 Business Flow
3937    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3938    -- Prior Entry.  Currently, the following code is always generated.
3939    ------------------------------------------------------------------------------------------------
3940    XLA_AE_LINES_PKG.ValidateCurrentLine;
3941 
3942    ------------------------------------------------------------------------------------
3943    -- 4219869 Business Flow
3944    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3945    ------------------------------------------------------------------------------------
3946    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3947 
3948    ----------------------------------------------------------------------------------
3949    -- 4219869 Business Flow
3950    -- Update journal entry status -- Need to generate this within IF <condition>
3951    ----------------------------------------------------------------------------------
3952    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3953          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3954          ,p_balance_type_code => l_balance_type_code
3955          );
3956 
3957    -------------------------------------------------------------------------------------------
3958    -- 4262811 - Generate the Accrual Reversal lines
3959    -------------------------------------------------------------------------------------------
3960    BEGIN
3961       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3962                               (g_array_event(p_event_id).array_value_num('header_index'));
3963       IF l_acc_rev_flag IS NULL THEN
3964          l_acc_rev_flag := 'N';
3965       END IF;
3966    EXCEPTION
3967       WHEN OTHERS THEN
3968          l_acc_rev_flag := 'N';
3969    END;
3970    --
3971    IF (l_acc_rev_flag = 'Y') THEN
3972 
3973        -- 4645092  ------------------------------------------------------------------------------
3974        -- To allow MPA report to determine if it should generate report process
3975        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3976        ------------------------------------------------------------------------------------------
3977 
3978        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3979        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3980 
3981        --
3982        -- Update the line information that should be overwritten
3983        --
3984        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3985                                          p_header_num   => 1);
3986        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3987 
3988        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3989 
3990        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3991           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3992        END IF;
3993 
3994       --
3995       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3996       --
3997       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3998           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3999       ELSE
4000           ---------------------------------------------------------------------------------------------------
4001           -- 4262811a Switch Sign
4002           ---------------------------------------------------------------------------------------------------
4003           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4004           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4005                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4006           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4007                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4008           -- 5132302
4009           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4010                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4011 
4012       END IF;
4013 
4014       -- 4955764
4015       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4019       XLA_AE_LINES_PKG.ValidateCurrentLine;
4016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4017 
4018 
4020       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4021 
4022       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4023                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4024                ,p_balance_type_code => l_balance_type_code);
4025 
4026    END IF;
4027 
4028    -----------------------------------------------------------------------------------------
4029    -- 4262811 Multiperiod Accounting
4030    -----------------------------------------------------------------------------------------
4031      -- No MPA option is assigned.
4032 
4033 
4034 END IF;
4035 END IF;
4036 --
4037 
4038 --
4039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4040    trace
4041       (p_msg      => 'END of AcctLineType_13'
4042       ,p_level    => C_LEVEL_PROCEDURE
4043       ,p_module   => l_log_module);
4044 END IF;
4045 --
4046 EXCEPTION
4047   WHEN xla_exceptions_pkg.application_exception THEN
4048       RAISE;
4049   WHEN OTHERS THEN
4050        xla_exceptions_pkg.raise_message
4051            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_13');
4052 END AcctLineType_13;
4053 --
4054 
4055 ---------------------------------------
4056 --
4057 -- PRIVATE FUNCTION
4058 --         AcctLineType_14
4059 --
4060 ---------------------------------------
4061 PROCEDURE AcctLineType_14 (
4062   p_application_id        IN NUMBER
4063  ,p_event_id              IN NUMBER
4064  ,p_calculate_acctd_flag  IN VARCHAR2
4065  ,p_calculate_g_l_flag    IN VARCHAR2
4066  ,p_actual_flag           IN OUT VARCHAR2
4067  ,p_balance_type_code     OUT VARCHAR2
4068  ,p_gain_or_loss_ref      OUT VARCHAR2
4069  
4070 --Cashflow Bank Account Cash Account
4071  , p_source_5            IN NUMBER
4072 --Reversal Indicator
4073  , p_source_9            IN VARCHAR2
4074 --Cashflow Number
4075  , p_source_10            IN NUMBER
4076 --Cashflow History Identifier
4077  , p_source_11            IN VARCHAR2
4078 --Distribution Link Type
4079  , p_source_12            IN VARCHAR2
4080 --Cashflow Bank Account Currency
4081  , p_source_13            IN VARCHAR2
4082 --Cashflow Cleared Exchange Rate Date
4083  , p_source_14            IN DATE
4084 --Cashflow Cleared Exchange Rate
4085  , p_source_15            IN NUMBER
4086 --Cashflow Cleared Exchange Rate Type
4087  , p_source_16            IN VARCHAR2
4088 --Reversal First Distribution Identifier
4089  , p_source_17            IN NUMBER
4090 --Reversal Second Distribution Identifier
4091  , p_source_18            IN VARCHAR2
4092 --Reversal Distribution Link Type
4093  , p_source_19            IN VARCHAR2
4094 --Cashflow Direction
4095  , p_source_22            IN VARCHAR2
4096  , p_source_22_meaning    IN VARCHAR2
4097 --Cashflow Cleared Amount
4098  , p_source_23            IN NUMBER
4099 )
4100 IS
4101 
4102 l_component_type              VARCHAR2(80);
4103 l_component_code              VARCHAR2(30);
4104 l_component_type_code         VARCHAR2(1);
4105 l_component_appl_id           INTEGER;
4106 l_amb_context_code            VARCHAR2(30);
4107 l_entity_code                 VARCHAR2(30);
4108 l_event_class_code            VARCHAR2(30);
4109 l_ae_header_id                NUMBER;
4110 l_event_type_code             VARCHAR2(30);
4111 l_line_definition_code        VARCHAR2(30);
4112 l_line_definition_owner_code  VARCHAR2(1);
4113 --
4114 -- adr variables
4115 l_segment                     VARCHAR2(30);
4116 l_ccid                        NUMBER;
4117 l_adr_transaction_coa_id      NUMBER;
4118 l_adr_accounting_coa_id       NUMBER;
4119 l_adr_flexfield_segment_code  VARCHAR2(30);
4120 l_adr_flex_value_set_id       NUMBER;
4121 l_adr_value_type_code         VARCHAR2(30);
4122 l_adr_value_combination_id    NUMBER;
4123 l_adr_value_segment_code      VARCHAR2(30);
4124 
4125 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4126 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4127 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4128 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4129 
4130 -- 4262811 Variables ------------------------------------------------------------------------------------------
4131 l_entered_amt_idx             NUMBER;
4132 l_accted_amt_idx              NUMBER;
4133 l_acc_rev_flag                VARCHAR2(1);
4134 l_accrual_line_num            NUMBER;
4135 l_tmp_amt                     NUMBER;
4136 l_acc_rev_natural_side_code   VARCHAR2(1);
4137 
4138 l_num_entries                 NUMBER;
4139 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4140 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4141 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4142 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4143 l_recog_line_1                NUMBER;
4144 l_recog_line_2                NUMBER;
4145 
4146 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4147 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4148 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4149 
4150 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4151 
4152 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4153 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4154 
4155 ---------------------------------------------------------------------------------------------------------------
4156 
4157 
4158 --
4159 -- bulk performance
4163 l_log_module                  VARCHAR2(240);
4160 --
4161 l_balance_type_code           VARCHAR2(1);
4162 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4164 
4165 --
4166 -- Upgrade strategy
4167 --
4168 l_actual_upg_option           VARCHAR2(1);
4169 l_enc_upg_option           VARCHAR2(1);
4170 
4171 --
4172 BEGIN
4173 --
4174 IF g_log_enabled THEN
4175       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
4176 END IF;
4177 --
4178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4179 
4180       trace
4181          (p_msg      => 'BEGIN of AcctLineType_14'
4182          ,p_level    => C_LEVEL_PROCEDURE
4183          ,p_module   => l_log_module);
4184 
4185 END IF;
4186 --
4187 l_component_type             := 'AMB_JLT';
4188 l_component_code             := 'BAT_PAYMENT_CASH_CR';
4189 l_component_type_code        := 'S';
4190 l_component_appl_id          :=  260;
4191 l_amb_context_code           := 'DEFAULT';
4192 l_entity_code                := 'CE_CASHFLOWS';
4193 l_event_class_code           := 'BAT_CLASS';
4194 l_event_type_code            := 'CE_BAT_UNCLEARED';
4195 l_line_definition_owner_code := 'S';
4196 l_line_definition_code       := 'BAT_UNCLR_DEFN';
4197 --
4198 l_balance_type_code          := 'A';
4199 l_segment                     := NULL;
4200 l_ccid                        := NULL;
4201 l_adr_transaction_coa_id      := NULL;
4202 l_adr_accounting_coa_id       := NULL;
4203 l_adr_flexfield_segment_code  := NULL;
4204 l_adr_flex_value_set_id       := NULL;
4205 l_adr_value_type_code         := NULL;
4206 l_adr_value_combination_id    := NULL;
4207 l_adr_value_segment_code      := NULL;
4208 
4209 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4210 l_bflow_class_code           := '';    -- 4219869 Business Flow
4211 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4212 l_budgetary_control_flag     := 'N';
4213 
4214 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4215 l_bflow_applied_to_amt       := NULL; -- 5132302
4216 l_entered_amt_idx            := NULL;          -- 4262811
4217 l_accted_amt_idx             := NULL;          -- 4262811
4218 l_acc_rev_flag               := NULL;          -- 4262811
4219 l_accrual_line_num           := NULL;          -- 4262811
4220 l_tmp_amt                    := NULL;          -- 4262811
4221 --
4222  
4223 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4224     l_balance_type_code <> 'B' THEN
4225 IF NVL(p_source_22,'
4226 ')  =  'PAYMENT'
4227  THEN 
4228 
4229    --
4230    XLA_AE_LINES_PKG.SetNewLine;
4231 
4232    p_balance_type_code          := l_balance_type_code;
4233    -- set the flag so later we will know whether the gain loss line needs to be created
4234    
4235    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4236      p_actual_flag :='A';
4237    END IF;
4238 
4239    --
4240    -- bulk performance
4241    --
4242    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4243                                       p_header_num   => 0); -- 4262811
4244    --
4245    -- set accounting line options
4246    --
4247    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4248            p_natural_side_code          => 'C'
4249          , p_gain_or_loss_flag          => 'N'
4250          , p_gl_transfer_mode_code      => 'D'
4251          , p_acct_entry_type_code       => 'A'
4252          , p_switch_side_flag           => 'Y'
4253          , p_merge_duplicate_code       => 'N'
4254          );
4255    --
4256    l_acc_rev_natural_side_code := 'D';  -- 4262811
4257    -- 
4258    --
4259    -- set accounting line type info
4260    --
4261    xla_ae_lines_pkg.SetAcctLineType
4262       (p_component_type             => l_component_type
4263       ,p_event_type_code            => l_event_type_code
4264       ,p_line_definition_owner_code => l_line_definition_owner_code
4265       ,p_line_definition_code       => l_line_definition_code
4266       ,p_accounting_line_code       => l_component_code
4267       ,p_accounting_line_type_code  => l_component_type_code
4268       ,p_accounting_line_appl_id    => l_component_appl_id
4269       ,p_amb_context_code           => l_amb_context_code
4270       ,p_entity_code                => l_entity_code
4271       ,p_event_class_code           => l_event_class_code);
4272    --
4273    -- set accounting class
4274    --
4275    xla_ae_lines_pkg.SetAcctClass(
4276            p_accounting_class_code  => 'CASH'
4277          , p_ae_header_id           => l_ae_header_id
4278          );
4279 
4280    --
4281    -- set rounding class
4282    --
4283    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4284                       'CASH';
4285 
4286    --
4287    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4288    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4289    --
4290    -- bulk performance
4291    --
4292    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4293 
4294    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4295       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4296 
4297    -- 4955764
4298    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4300 
4301    -- 4458381 Public Sector Enh
4302    
4303    --
4304    -- set accounting attributes for the line type
4305    --
4306    l_entered_amt_idx := 5;
4307    l_accted_amt_idx  := NULL;
4311    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
4308    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4309    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4310    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
4312    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
4313    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
4314    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
4315    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
4316    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
4317    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
4318    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
4319    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
4320    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
4321    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
4322    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
4323    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
4324    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
4325    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
4326    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
4327    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
4328    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
4329    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
4330    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
4331    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
4332    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
4333 
4334    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4335    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4336 
4337    ---------------------------------------------------------------------------------------------------------------
4338    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4339    ---------------------------------------------------------------------------------------------------------------
4340    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4341 
4342    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4343    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4344 
4345    IF xla_accounting_cache_pkg.GetValueChar
4346          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4347          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4348    AND l_bflow_method_code = 'PRIOR_ENTRY'
4349 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4350    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4351          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4352        )
4353    THEN
4354          xla_ae_lines_pkg.BflowUpgEntry
4355            (p_business_method_code    => l_bflow_method_code
4356            ,p_business_class_code     => l_bflow_class_code
4357            ,p_balance_type            => l_balance_type_code);
4358    ELSE
4359       NULL;
4360 -- No business flow processing for business flow method of NONE.
4361    END IF;
4362 
4363    --
4364    -- call description
4365    --
4366    -- No description or it is inherited.
4367    --
4368    -- call ADRs
4369    -- Bug 4922099
4370    --
4371    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4372         (NVL(l_actual_upg_option, 'N') = 'O') OR
4373         (NVL(l_enc_upg_option, 'N') = 'O')
4374       )
4375    THEN
4376    NULL;
4377    --
4378    --
4379    
4380   l_ccid := AcctDerRule_5(
4381            p_application_id           => p_application_id
4382          , p_ae_header_id             => l_ae_header_id 
4383 , p_source_5 => p_source_5
4384          , x_transaction_coa_id       => l_adr_transaction_coa_id
4385          , x_accounting_coa_id        => l_adr_accounting_coa_id
4386          , x_value_type_code          => l_adr_value_type_code
4387          , p_side                     => 'NA'
4388    );
4389 
4390    xla_ae_lines_pkg.set_ccid(
4391     p_code_combination_id          => l_ccid
4392   , p_value_type_code              => l_adr_value_type_code
4393   , p_transaction_coa_id           => l_adr_transaction_coa_id
4394   , p_accounting_coa_id            => l_adr_accounting_coa_id
4395   , p_adr_code                     => 'CE_CASH'
4396   , p_adr_type_code                => 'S'
4397   , p_component_type               => l_component_type
4398   , p_component_code               => l_component_code
4399   , p_component_type_code          => l_component_type_code
4400   , p_component_appl_id            => l_component_appl_id
4401   , p_amb_context_code             => l_amb_context_code
4402   , p_side                         => 'NA'
4403   );
4404 
4405 
4406    --
4407    --
4408    END IF;
4409    --
4410    -- Bug 4922099
4411    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4412           (NVL(l_enc_upg_option, 'N') = 'O')
4413         ) AND
4414         (l_bflow_method_code = 'PRIOR_ENTRY')
4415       )
4416    THEN
4417       IF
4418       --
4419       1 = 2
4420       --
4421       THEN
4422       xla_accounting_err_pkg.build_message
4423                                     (p_appli_s_name            => 'XLA'
4424                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4425                                     ,p_token_1                 => 'LINE_NUMBER'
4426                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4427                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4431                                                                             ,l_component_type_code
4428                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4429                                                                              l_component_type
4430                                                                             ,l_component_code
4432                                                                             ,l_component_appl_id
4433                                                                             ,l_amb_context_code
4434                                                                             ,l_entity_code
4435                                                                             ,l_event_class_code
4436                                                                            )
4437                                     ,p_token_3                 => 'OWNER'
4438                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4439                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4440                                                                           ,p_lookup_code    => l_component_type_code
4441                                                                          )
4442                                     ,p_token_4                 => 'PRODUCT_NAME'
4443                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4444                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4445                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4446                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4447                                     ,p_ae_header_id            =>  NULL
4448                                        );
4449 
4450         IF (C_LEVEL_ERROR>= g_log_level) THEN
4451                  trace
4452                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4453                       ,p_level    => C_LEVEL_ERROR
4454                       ,p_module   => l_log_module);
4455         END IF;
4456       END IF;
4457    END IF;
4458    --
4459    --
4460    ------------------------------------------------------------------------------------------------
4461    -- 4219869 Business Flow
4462    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4463    -- Prior Entry.  Currently, the following code is always generated.
4464    ------------------------------------------------------------------------------------------------
4465    XLA_AE_LINES_PKG.ValidateCurrentLine;
4466 
4467    ------------------------------------------------------------------------------------
4468    -- 4219869 Business Flow
4469    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4470    ------------------------------------------------------------------------------------
4471    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4472 
4473    ----------------------------------------------------------------------------------
4474    -- 4219869 Business Flow
4475    -- Update journal entry status -- Need to generate this within IF <condition>
4476    ----------------------------------------------------------------------------------
4477    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4478          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4479          ,p_balance_type_code => l_balance_type_code
4480          );
4481 
4482    -------------------------------------------------------------------------------------------
4483    -- 4262811 - Generate the Accrual Reversal lines
4484    -------------------------------------------------------------------------------------------
4485    BEGIN
4486       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4487                               (g_array_event(p_event_id).array_value_num('header_index'));
4488       IF l_acc_rev_flag IS NULL THEN
4489          l_acc_rev_flag := 'N';
4490       END IF;
4491    EXCEPTION
4492       WHEN OTHERS THEN
4493          l_acc_rev_flag := 'N';
4494    END;
4495    --
4496    IF (l_acc_rev_flag = 'Y') THEN
4497 
4498        -- 4645092  ------------------------------------------------------------------------------
4499        -- To allow MPA report to determine if it should generate report process
4500        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4501        ------------------------------------------------------------------------------------------
4502 
4503        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4504        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4505 
4506        --
4507        -- Update the line information that should be overwritten
4508        --
4509        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4510                                          p_header_num   => 1);
4511        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4512 
4513        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4514 
4515        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4516           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4517        END IF;
4518 
4519       --
4520       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4521       --
4522       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4523           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4524       ELSE
4525           ---------------------------------------------------------------------------------------------------
4526           -- 4262811a Switch Sign
4530                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4527           ---------------------------------------------------------------------------------------------------
4528           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4529           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4531           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4532                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4533           -- 5132302
4534           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4535                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4536 
4537       END IF;
4538 
4539       -- 4955764
4540       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4541       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4542 
4543 
4544       XLA_AE_LINES_PKG.ValidateCurrentLine;
4545       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4546 
4547       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4548                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4549                ,p_balance_type_code => l_balance_type_code);
4550 
4551    END IF;
4552 
4553    -----------------------------------------------------------------------------------------
4554    -- 4262811 Multiperiod Accounting
4555    -----------------------------------------------------------------------------------------
4556      -- No MPA option is assigned.
4557 
4558 
4559 END IF;
4560 END IF;
4561 --
4562 
4563 --
4564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4565    trace
4566       (p_msg      => 'END of AcctLineType_14'
4567       ,p_level    => C_LEVEL_PROCEDURE
4568       ,p_module   => l_log_module);
4569 END IF;
4570 --
4571 EXCEPTION
4572   WHEN xla_exceptions_pkg.application_exception THEN
4573       RAISE;
4574   WHEN OTHERS THEN
4575        xla_exceptions_pkg.raise_message
4576            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_14');
4577 END AcctLineType_14;
4578 --
4579 
4580 ---------------------------------------
4581 --
4582 -- PRIVATE FUNCTION
4583 --         AcctLineType_15
4584 --
4585 ---------------------------------------
4586 PROCEDURE AcctLineType_15 (
4587   p_application_id        IN NUMBER
4588  ,p_event_id              IN NUMBER
4589  ,p_calculate_acctd_flag  IN VARCHAR2
4590  ,p_calculate_g_l_flag    IN VARCHAR2
4591  ,p_actual_flag           IN OUT VARCHAR2
4592  ,p_balance_type_code     OUT VARCHAR2
4593  ,p_gain_or_loss_ref      OUT VARCHAR2
4594  
4595 --Cashflow Bank Account Cash Account
4596  , p_source_5            IN NUMBER
4597 --Reversal Indicator
4598  , p_source_9            IN VARCHAR2
4599 --Cashflow Number
4600  , p_source_10            IN NUMBER
4601 --Cashflow History Identifier
4602  , p_source_11            IN VARCHAR2
4603 --Distribution Link Type
4604  , p_source_12            IN VARCHAR2
4605 --Cashflow Bank Account Currency
4606  , p_source_13            IN VARCHAR2
4607 --Cashflow Cleared Exchange Rate Date
4608  , p_source_14            IN DATE
4609 --Cashflow Cleared Exchange Rate
4610  , p_source_15            IN NUMBER
4611 --Cashflow Cleared Exchange Rate Type
4612  , p_source_16            IN VARCHAR2
4613 --Reversal First Distribution Identifier
4614  , p_source_17            IN NUMBER
4615 --Reversal Second Distribution Identifier
4616  , p_source_18            IN VARCHAR2
4617 --Reversal Distribution Link Type
4618  , p_source_19            IN VARCHAR2
4619 --Cashflow Direction
4620  , p_source_22            IN VARCHAR2
4621  , p_source_22_meaning    IN VARCHAR2
4622 --Cashflow Cleared Amount
4623  , p_source_23            IN NUMBER
4624 )
4625 IS
4626 
4627 l_component_type              VARCHAR2(80);
4628 l_component_code              VARCHAR2(30);
4629 l_component_type_code         VARCHAR2(1);
4630 l_component_appl_id           INTEGER;
4631 l_amb_context_code            VARCHAR2(30);
4632 l_entity_code                 VARCHAR2(30);
4633 l_event_class_code            VARCHAR2(30);
4634 l_ae_header_id                NUMBER;
4635 l_event_type_code             VARCHAR2(30);
4636 l_line_definition_code        VARCHAR2(30);
4637 l_line_definition_owner_code  VARCHAR2(1);
4638 --
4639 -- adr variables
4640 l_segment                     VARCHAR2(30);
4641 l_ccid                        NUMBER;
4642 l_adr_transaction_coa_id      NUMBER;
4643 l_adr_accounting_coa_id       NUMBER;
4644 l_adr_flexfield_segment_code  VARCHAR2(30);
4645 l_adr_flex_value_set_id       NUMBER;
4646 l_adr_value_type_code         VARCHAR2(30);
4647 l_adr_value_combination_id    NUMBER;
4648 l_adr_value_segment_code      VARCHAR2(30);
4649 
4650 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4651 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4652 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4653 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4654 
4655 -- 4262811 Variables ------------------------------------------------------------------------------------------
4656 l_entered_amt_idx             NUMBER;
4657 l_accted_amt_idx              NUMBER;
4658 l_acc_rev_flag                VARCHAR2(1);
4659 l_accrual_line_num            NUMBER;
4660 l_tmp_amt                     NUMBER;
4661 l_acc_rev_natural_side_code   VARCHAR2(1);
4662 
4663 l_num_entries                 NUMBER;
4664 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4668 l_recog_line_1                NUMBER;
4665 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4666 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4667 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4669 l_recog_line_2                NUMBER;
4670 
4671 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4672 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4673 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4674 
4675 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4676 
4677 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4678 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4679 
4680 ---------------------------------------------------------------------------------------------------------------
4681 
4682 
4683 --
4684 -- bulk performance
4685 --
4686 l_balance_type_code           VARCHAR2(1);
4687 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4688 l_log_module                  VARCHAR2(240);
4689 
4690 --
4691 -- Upgrade strategy
4692 --
4693 l_actual_upg_option           VARCHAR2(1);
4694 l_enc_upg_option           VARCHAR2(1);
4695 
4696 --
4697 BEGIN
4698 --
4699 IF g_log_enabled THEN
4700       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
4701 END IF;
4702 --
4703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4704 
4705       trace
4706          (p_msg      => 'BEGIN of AcctLineType_15'
4707          ,p_level    => C_LEVEL_PROCEDURE
4708          ,p_module   => l_log_module);
4709 
4710 END IF;
4711 --
4712 l_component_type             := 'AMB_JLT';
4713 l_component_code             := 'BAT_PAYMENT_CASH_CR';
4714 l_component_type_code        := 'S';
4715 l_component_appl_id          :=  260;
4716 l_amb_context_code           := 'DEFAULT';
4717 l_entity_code                := 'CE_CASHFLOWS';
4718 l_event_class_code           := 'BAT_CLASS';
4719 l_event_type_code            := 'CE_BAT_CLEARED';
4720 l_line_definition_owner_code := 'S';
4721 l_line_definition_code       := 'BAT_CLR_DFN';
4722 --
4723 l_balance_type_code          := 'A';
4724 l_segment                     := NULL;
4725 l_ccid                        := NULL;
4726 l_adr_transaction_coa_id      := NULL;
4727 l_adr_accounting_coa_id       := NULL;
4728 l_adr_flexfield_segment_code  := NULL;
4729 l_adr_flex_value_set_id       := NULL;
4730 l_adr_value_type_code         := NULL;
4731 l_adr_value_combination_id    := NULL;
4732 l_adr_value_segment_code      := NULL;
4733 
4734 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4735 l_bflow_class_code           := '';    -- 4219869 Business Flow
4736 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4737 l_budgetary_control_flag     := 'N';
4738 
4739 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4740 l_bflow_applied_to_amt       := NULL; -- 5132302
4741 l_entered_amt_idx            := NULL;          -- 4262811
4742 l_accted_amt_idx             := NULL;          -- 4262811
4743 l_acc_rev_flag               := NULL;          -- 4262811
4744 l_accrual_line_num           := NULL;          -- 4262811
4745 l_tmp_amt                    := NULL;          -- 4262811
4746 --
4747  
4748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4749     l_balance_type_code <> 'B' THEN
4750 IF NVL(p_source_22,'
4751 ')  =  'PAYMENT'
4752  THEN 
4753 
4754    --
4755    XLA_AE_LINES_PKG.SetNewLine;
4756 
4757    p_balance_type_code          := l_balance_type_code;
4758    -- set the flag so later we will know whether the gain loss line needs to be created
4759    
4760    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4761      p_actual_flag :='A';
4762    END IF;
4763 
4764    --
4765    -- bulk performance
4766    --
4767    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4768                                       p_header_num   => 0); -- 4262811
4769    --
4770    -- set accounting line options
4771    --
4772    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4773            p_natural_side_code          => 'C'
4774          , p_gain_or_loss_flag          => 'N'
4775          , p_gl_transfer_mode_code      => 'D'
4776          , p_acct_entry_type_code       => 'A'
4777          , p_switch_side_flag           => 'Y'
4778          , p_merge_duplicate_code       => 'N'
4779          );
4780    --
4781    l_acc_rev_natural_side_code := 'D';  -- 4262811
4782    -- 
4783    --
4784    -- set accounting line type info
4785    --
4786    xla_ae_lines_pkg.SetAcctLineType
4787       (p_component_type             => l_component_type
4788       ,p_event_type_code            => l_event_type_code
4789       ,p_line_definition_owner_code => l_line_definition_owner_code
4790       ,p_line_definition_code       => l_line_definition_code
4791       ,p_accounting_line_code       => l_component_code
4792       ,p_accounting_line_type_code  => l_component_type_code
4793       ,p_accounting_line_appl_id    => l_component_appl_id
4794       ,p_amb_context_code           => l_amb_context_code
4795       ,p_entity_code                => l_entity_code
4796       ,p_event_class_code           => l_event_class_code);
4797    --
4798    -- set accounting class
4799    --
4800    xla_ae_lines_pkg.SetAcctClass(
4801            p_accounting_class_code  => 'CASH'
4802          , p_ae_header_id           => l_ae_header_id
4803          );
4804 
4805    --
4806    -- set rounding class
4807    --
4808    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4809                       'CASH';
4813    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4810 
4811    --
4812    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4814    --
4815    -- bulk performance
4816    --
4817    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4818 
4819    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4820       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4821 
4822    -- 4955764
4823    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4825 
4826    -- 4458381 Public Sector Enh
4827    
4828    --
4829    -- set accounting attributes for the line type
4830    --
4831    l_entered_amt_idx := 5;
4832    l_accted_amt_idx  := NULL;
4833    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4834    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4835    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
4836    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
4837    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
4838    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
4839    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
4840    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
4841    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
4842    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
4843    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
4844    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
4845    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
4846    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
4847    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
4848    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
4849    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
4850    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
4851    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
4852    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
4853    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
4854    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
4855    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
4856    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
4857    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
4858 
4859    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4860    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4861 
4862    ---------------------------------------------------------------------------------------------------------------
4863    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4864    ---------------------------------------------------------------------------------------------------------------
4865    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4866 
4867    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4868    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4869 
4870    IF xla_accounting_cache_pkg.GetValueChar
4871          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4872          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4873    AND l_bflow_method_code = 'PRIOR_ENTRY'
4874 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4875    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4876          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4877        )
4878    THEN
4879          xla_ae_lines_pkg.BflowUpgEntry
4880            (p_business_method_code    => l_bflow_method_code
4881            ,p_business_class_code     => l_bflow_class_code
4882            ,p_balance_type            => l_balance_type_code);
4883    ELSE
4884       NULL;
4885 -- No business flow processing for business flow method of NONE.
4886    END IF;
4887 
4888    --
4889    -- call description
4890    --
4891    -- No description or it is inherited.
4892    --
4893    -- call ADRs
4894    -- Bug 4922099
4895    --
4896    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4897         (NVL(l_actual_upg_option, 'N') = 'O') OR
4898         (NVL(l_enc_upg_option, 'N') = 'O')
4899       )
4900    THEN
4901    NULL;
4902    --
4903    --
4904    
4905   l_ccid := AcctDerRule_5(
4906            p_application_id           => p_application_id
4907          , p_ae_header_id             => l_ae_header_id 
4908 , p_source_5 => p_source_5
4909          , x_transaction_coa_id       => l_adr_transaction_coa_id
4910          , x_accounting_coa_id        => l_adr_accounting_coa_id
4911          , x_value_type_code          => l_adr_value_type_code
4912          , p_side                     => 'NA'
4913    );
4914 
4915    xla_ae_lines_pkg.set_ccid(
4916     p_code_combination_id          => l_ccid
4917   , p_value_type_code              => l_adr_value_type_code
4918   , p_transaction_coa_id           => l_adr_transaction_coa_id
4919   , p_accounting_coa_id            => l_adr_accounting_coa_id
4920   , p_adr_code                     => 'CE_CASH'
4921   , p_adr_type_code                => 'S'
4922   , p_component_type               => l_component_type
4923   , p_component_code               => l_component_code
4924   , p_component_type_code          => l_component_type_code
4925   , p_component_appl_id            => l_component_appl_id
4926   , p_amb_context_code             => l_amb_context_code
4930 
4927   , p_side                         => 'NA'
4928   );
4929 
4931    --
4932    --
4933    END IF;
4934    --
4935    -- Bug 4922099
4936    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4937           (NVL(l_enc_upg_option, 'N') = 'O')
4938         ) AND
4939         (l_bflow_method_code = 'PRIOR_ENTRY')
4940       )
4941    THEN
4942       IF
4943       --
4944       1 = 2
4945       --
4946       THEN
4947       xla_accounting_err_pkg.build_message
4948                                     (p_appli_s_name            => 'XLA'
4949                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4950                                     ,p_token_1                 => 'LINE_NUMBER'
4951                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4952                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4953                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4954                                                                              l_component_type
4955                                                                             ,l_component_code
4956                                                                             ,l_component_type_code
4957                                                                             ,l_component_appl_id
4958                                                                             ,l_amb_context_code
4959                                                                             ,l_entity_code
4960                                                                             ,l_event_class_code
4961                                                                            )
4962                                     ,p_token_3                 => 'OWNER'
4963                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4964                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4965                                                                           ,p_lookup_code    => l_component_type_code
4966                                                                          )
4967                                     ,p_token_4                 => 'PRODUCT_NAME'
4968                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4969                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4970                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4971                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4972                                     ,p_ae_header_id            =>  NULL
4973                                        );
4974 
4975         IF (C_LEVEL_ERROR>= g_log_level) THEN
4976                  trace
4977                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4978                       ,p_level    => C_LEVEL_ERROR
4979                       ,p_module   => l_log_module);
4980         END IF;
4981       END IF;
4982    END IF;
4983    --
4984    --
4985    ------------------------------------------------------------------------------------------------
4986    -- 4219869 Business Flow
4987    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4988    -- Prior Entry.  Currently, the following code is always generated.
4989    ------------------------------------------------------------------------------------------------
4990    XLA_AE_LINES_PKG.ValidateCurrentLine;
4991 
4992    ------------------------------------------------------------------------------------
4993    -- 4219869 Business Flow
4994    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4995    ------------------------------------------------------------------------------------
4996    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4997 
4998    ----------------------------------------------------------------------------------
4999    -- 4219869 Business Flow
5000    -- Update journal entry status -- Need to generate this within IF <condition>
5001    ----------------------------------------------------------------------------------
5002    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5003          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5004          ,p_balance_type_code => l_balance_type_code
5005          );
5006 
5007    -------------------------------------------------------------------------------------------
5008    -- 4262811 - Generate the Accrual Reversal lines
5009    -------------------------------------------------------------------------------------------
5010    BEGIN
5011       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5012                               (g_array_event(p_event_id).array_value_num('header_index'));
5013       IF l_acc_rev_flag IS NULL THEN
5014          l_acc_rev_flag := 'N';
5015       END IF;
5016    EXCEPTION
5017       WHEN OTHERS THEN
5018          l_acc_rev_flag := 'N';
5019    END;
5020    --
5021    IF (l_acc_rev_flag = 'Y') THEN
5022 
5023        -- 4645092  ------------------------------------------------------------------------------
5024        -- To allow MPA report to determine if it should generate report process
5025        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5026        ------------------------------------------------------------------------------------------
5027 
5028        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5029        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5030 
5031        --
5032        -- Update the line information that should be overwritten
5033        --
5034        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5035                                          p_header_num   => 1);
5039 
5036        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5037 
5038        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5040        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5041           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5042        END IF;
5043 
5044       --
5045       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5046       --
5047       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5048           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5049       ELSE
5050           ---------------------------------------------------------------------------------------------------
5051           -- 4262811a Switch Sign
5052           ---------------------------------------------------------------------------------------------------
5053           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5054           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5055                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5056           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5057                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5058           -- 5132302
5059           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5060                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5061 
5062       END IF;
5063 
5064       -- 4955764
5065       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5067 
5068 
5069       XLA_AE_LINES_PKG.ValidateCurrentLine;
5070       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5071 
5072       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5073                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5074                ,p_balance_type_code => l_balance_type_code);
5075 
5076    END IF;
5077 
5078    -----------------------------------------------------------------------------------------
5079    -- 4262811 Multiperiod Accounting
5080    -----------------------------------------------------------------------------------------
5081      -- No MPA option is assigned.
5082 
5083 
5084 END IF;
5085 END IF;
5086 --
5087 
5088 --
5089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5090    trace
5091       (p_msg      => 'END of AcctLineType_15'
5092       ,p_level    => C_LEVEL_PROCEDURE
5093       ,p_module   => l_log_module);
5094 END IF;
5095 --
5096 EXCEPTION
5097   WHEN xla_exceptions_pkg.application_exception THEN
5098       RAISE;
5099   WHEN OTHERS THEN
5100        xla_exceptions_pkg.raise_message
5101            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_15');
5102 END AcctLineType_15;
5103 --
5104 
5105 ---------------------------------------
5106 --
5107 -- PRIVATE FUNCTION
5108 --         AcctLineType_16
5109 --
5110 ---------------------------------------
5111 PROCEDURE AcctLineType_16 (
5112   p_application_id        IN NUMBER
5113  ,p_event_id              IN NUMBER
5114  ,p_calculate_acctd_flag  IN VARCHAR2
5115  ,p_calculate_g_l_flag    IN VARCHAR2
5116  ,p_actual_flag           IN OUT VARCHAR2
5117  ,p_balance_type_code     OUT VARCHAR2
5118  ,p_gain_or_loss_ref      OUT VARCHAR2
5119  
5120 --Cashflow Offset Account
5121  , p_source_7            IN NUMBER
5122 --Reversal Indicator
5123  , p_source_9            IN VARCHAR2
5124 --Cashflow Number
5125  , p_source_10            IN NUMBER
5126 --Cashflow History Identifier
5127  , p_source_11            IN VARCHAR2
5128 --Distribution Link Type
5129  , p_source_12            IN VARCHAR2
5130 --Reversal First Distribution Identifier
5131  , p_source_17            IN NUMBER
5132 --Reversal Second Distribution Identifier
5133  , p_source_18            IN VARCHAR2
5134 --Reversal Distribution Link Type
5135  , p_source_19            IN VARCHAR2
5136 --Cashflow Direction
5137  , p_source_22            IN VARCHAR2
5138  , p_source_22_meaning    IN VARCHAR2
5139 --Cashflow Amount
5140  , p_source_24            IN NUMBER
5141 --Cashflow Currency
5142  , p_source_25            IN VARCHAR2
5143 --Cashflow Exchange Date
5144  , p_source_26            IN DATE
5145 --Cashflow Exchange Rate
5146  , p_source_27            IN NUMBER
5147 --Cashflow Exchange Rate Type
5148  , p_source_28            IN VARCHAR2
5149 )
5150 IS
5151 
5152 l_component_type              VARCHAR2(80);
5153 l_component_code              VARCHAR2(30);
5154 l_component_type_code         VARCHAR2(1);
5155 l_component_appl_id           INTEGER;
5156 l_amb_context_code            VARCHAR2(30);
5157 l_entity_code                 VARCHAR2(30);
5158 l_event_class_code            VARCHAR2(30);
5159 l_ae_header_id                NUMBER;
5160 l_event_type_code             VARCHAR2(30);
5161 l_line_definition_code        VARCHAR2(30);
5162 l_line_definition_owner_code  VARCHAR2(1);
5163 --
5164 -- adr variables
5165 l_segment                     VARCHAR2(30);
5166 l_ccid                        NUMBER;
5167 l_adr_transaction_coa_id      NUMBER;
5168 l_adr_accounting_coa_id       NUMBER;
5169 l_adr_flexfield_segment_code  VARCHAR2(30);
5170 l_adr_flex_value_set_id       NUMBER;
5171 l_adr_value_type_code         VARCHAR2(30);
5172 l_adr_value_combination_id    NUMBER;
5176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5173 l_adr_value_segment_code      VARCHAR2(30);
5174 
5175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5179 
5180 -- 4262811 Variables ------------------------------------------------------------------------------------------
5181 l_entered_amt_idx             NUMBER;
5182 l_accted_amt_idx              NUMBER;
5183 l_acc_rev_flag                VARCHAR2(1);
5184 l_accrual_line_num            NUMBER;
5185 l_tmp_amt                     NUMBER;
5186 l_acc_rev_natural_side_code   VARCHAR2(1);
5187 
5188 l_num_entries                 NUMBER;
5189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5193 l_recog_line_1                NUMBER;
5194 l_recog_line_2                NUMBER;
5195 
5196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5199 
5200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5201 
5202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5204 
5205 ---------------------------------------------------------------------------------------------------------------
5206 
5207 
5208 --
5209 -- bulk performance
5210 --
5211 l_balance_type_code           VARCHAR2(1);
5212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5213 l_log_module                  VARCHAR2(240);
5214 
5215 --
5216 -- Upgrade strategy
5217 --
5218 l_actual_upg_option           VARCHAR2(1);
5219 l_enc_upg_option           VARCHAR2(1);
5220 
5221 --
5222 BEGIN
5223 --
5224 IF g_log_enabled THEN
5225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
5226 END IF;
5227 --
5228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5229 
5230       trace
5231          (p_msg      => 'BEGIN of AcctLineType_16'
5232          ,p_level    => C_LEVEL_PROCEDURE
5233          ,p_module   => l_log_module);
5234 
5235 END IF;
5236 --
5237 l_component_type             := 'AMB_JLT';
5238 l_component_code             := 'BAT_PAYMENT_OFFSET_DR';
5239 l_component_type_code        := 'S';
5240 l_component_appl_id          :=  260;
5241 l_amb_context_code           := 'DEFAULT';
5242 l_entity_code                := 'CE_CASHFLOWS';
5243 l_event_class_code           := 'BAT_CLASS';
5244 l_event_type_code            := 'CE_BAT_CLEARED';
5245 l_line_definition_owner_code := 'S';
5246 l_line_definition_code       := 'BAT_CLR_DFN';
5247 --
5248 l_balance_type_code          := 'A';
5249 l_segment                     := NULL;
5250 l_ccid                        := NULL;
5251 l_adr_transaction_coa_id      := NULL;
5252 l_adr_accounting_coa_id       := NULL;
5253 l_adr_flexfield_segment_code  := NULL;
5254 l_adr_flex_value_set_id       := NULL;
5255 l_adr_value_type_code         := NULL;
5256 l_adr_value_combination_id    := NULL;
5257 l_adr_value_segment_code      := NULL;
5258 
5259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5260 l_bflow_class_code           := '';    -- 4219869 Business Flow
5261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5262 l_budgetary_control_flag     := 'N';
5263 
5264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5265 l_bflow_applied_to_amt       := NULL; -- 5132302
5266 l_entered_amt_idx            := NULL;          -- 4262811
5267 l_accted_amt_idx             := NULL;          -- 4262811
5268 l_acc_rev_flag               := NULL;          -- 4262811
5269 l_accrual_line_num           := NULL;          -- 4262811
5270 l_tmp_amt                    := NULL;          -- 4262811
5271 --
5272  
5273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5274     l_balance_type_code <> 'B' THEN
5275 IF NVL(p_source_22,'
5276 ')  =  'PAYMENT'
5277  THEN 
5278 
5279    --
5280    XLA_AE_LINES_PKG.SetNewLine;
5281 
5282    p_balance_type_code          := l_balance_type_code;
5283    -- set the flag so later we will know whether the gain loss line needs to be created
5284    
5285    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5286      p_actual_flag :='A';
5287    END IF;
5288 
5289    --
5290    -- bulk performance
5291    --
5292    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5293                                       p_header_num   => 0); -- 4262811
5294    --
5295    -- set accounting line options
5296    --
5297    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5298            p_natural_side_code          => 'D'
5299          , p_gain_or_loss_flag          => 'N'
5300          , p_gl_transfer_mode_code      => 'D'
5301          , p_acct_entry_type_code       => 'A'
5302          , p_switch_side_flag           => 'Y'
5303          , p_merge_duplicate_code       => 'N'
5304          );
5305    --
5306    l_acc_rev_natural_side_code := 'C';  -- 4262811
5307    -- 
5308    --
5309    -- set accounting line type info
5310    --
5311    xla_ae_lines_pkg.SetAcctLineType
5312       (p_component_type             => l_component_type
5313       ,p_event_type_code            => l_event_type_code
5314       ,p_line_definition_owner_code => l_line_definition_owner_code
5318       ,p_accounting_line_appl_id    => l_component_appl_id
5315       ,p_line_definition_code       => l_line_definition_code
5316       ,p_accounting_line_code       => l_component_code
5317       ,p_accounting_line_type_code  => l_component_type_code
5319       ,p_amb_context_code           => l_amb_context_code
5320       ,p_entity_code                => l_entity_code
5321       ,p_event_class_code           => l_event_class_code);
5322    --
5323    -- set accounting class
5324    --
5325    xla_ae_lines_pkg.SetAcctClass(
5326            p_accounting_class_code  => 'MISCELLANEOUS EXPENSE'
5327          , p_ae_header_id           => l_ae_header_id
5328          );
5329 
5330    --
5331    -- set rounding class
5332    --
5333    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5334                       'MISCELLANEOUS EXPENSE';
5335 
5336    --
5337    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5338    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5339    --
5340    -- bulk performance
5341    --
5342    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5343 
5344    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5345       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5346 
5347    -- 4955764
5348    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5349       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5350 
5351    -- 4458381 Public Sector Enh
5352    
5353    --
5354    -- set accounting attributes for the line type
5355    --
5356    l_entered_amt_idx := 5;
5357    l_accted_amt_idx  := NULL;
5358    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5359    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5360    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
5361    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
5362    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
5363    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
5364    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
5365    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
5366    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
5367    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
5368    l_rec_acct_attrs.array_num_value(5)  := p_source_24;
5369    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
5370    l_rec_acct_attrs.array_char_value(6)  := p_source_25;
5371    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
5372    l_rec_acct_attrs.array_date_value(7)  := p_source_26;
5373    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
5374    l_rec_acct_attrs.array_num_value(8)  := p_source_27;
5375    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
5376    l_rec_acct_attrs.array_char_value(9)  := p_source_28;
5377    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
5378    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
5379    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
5380    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
5381    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
5382    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
5383 
5384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5385    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5386 
5387    ---------------------------------------------------------------------------------------------------------------
5388    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5389    ---------------------------------------------------------------------------------------------------------------
5390    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5391 
5392    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5393    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5394 
5395    IF xla_accounting_cache_pkg.GetValueChar
5396          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5397          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5398    AND l_bflow_method_code = 'PRIOR_ENTRY'
5399 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5400    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5401          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5402        )
5403    THEN
5404          xla_ae_lines_pkg.BflowUpgEntry
5405            (p_business_method_code    => l_bflow_method_code
5406            ,p_business_class_code     => l_bflow_class_code
5407            ,p_balance_type            => l_balance_type_code);
5408    ELSE
5409       NULL;
5410 -- No business flow processing for business flow method of NONE.
5411    END IF;
5412 
5413    --
5414    -- call description
5415    --
5416    -- No description or it is inherited.
5417    --
5418    -- call ADRs
5419    -- Bug 4922099
5420    --
5421    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5422         (NVL(l_actual_upg_option, 'N') = 'O') OR
5423         (NVL(l_enc_upg_option, 'N') = 'O')
5424       )
5425    THEN
5426    NULL;
5427    --
5428    --
5429    
5430   l_ccid := AcctDerRule_7(
5431            p_application_id           => p_application_id
5432          , p_ae_header_id             => l_ae_header_id 
5433 , p_source_7 => p_source_7
5434          , x_transaction_coa_id       => l_adr_transaction_coa_id
5438    );
5435          , x_accounting_coa_id        => l_adr_accounting_coa_id
5436          , x_value_type_code          => l_adr_value_type_code
5437          , p_side                     => 'NA'
5439 
5440    xla_ae_lines_pkg.set_ccid(
5441     p_code_combination_id          => l_ccid
5442   , p_value_type_code              => l_adr_value_type_code
5443   , p_transaction_coa_id           => l_adr_transaction_coa_id
5444   , p_accounting_coa_id            => l_adr_accounting_coa_id
5445   , p_adr_code                     => 'CE_OFFSET'
5446   , p_adr_type_code                => 'S'
5447   , p_component_type               => l_component_type
5448   , p_component_code               => l_component_code
5449   , p_component_type_code          => l_component_type_code
5450   , p_component_appl_id            => l_component_appl_id
5451   , p_amb_context_code             => l_amb_context_code
5452   , p_side                         => 'NA'
5453   );
5454 
5455 
5456    --
5457    --
5458    END IF;
5459    --
5460    -- Bug 4922099
5461    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5462           (NVL(l_enc_upg_option, 'N') = 'O')
5463         ) AND
5464         (l_bflow_method_code = 'PRIOR_ENTRY')
5465       )
5466    THEN
5467       IF
5468       --
5469       1 = 2
5470       --
5471       THEN
5472       xla_accounting_err_pkg.build_message
5473                                     (p_appli_s_name            => 'XLA'
5474                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5475                                     ,p_token_1                 => 'LINE_NUMBER'
5476                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5477                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5478                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5479                                                                              l_component_type
5480                                                                             ,l_component_code
5481                                                                             ,l_component_type_code
5482                                                                             ,l_component_appl_id
5483                                                                             ,l_amb_context_code
5484                                                                             ,l_entity_code
5485                                                                             ,l_event_class_code
5486                                                                            )
5487                                     ,p_token_3                 => 'OWNER'
5488                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5489                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5490                                                                           ,p_lookup_code    => l_component_type_code
5491                                                                          )
5492                                     ,p_token_4                 => 'PRODUCT_NAME'
5493                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5494                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5495                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5496                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5497                                     ,p_ae_header_id            =>  NULL
5498                                        );
5499 
5500         IF (C_LEVEL_ERROR>= g_log_level) THEN
5501                  trace
5502                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5503                       ,p_level    => C_LEVEL_ERROR
5504                       ,p_module   => l_log_module);
5505         END IF;
5506       END IF;
5507    END IF;
5508    --
5509    --
5510    ------------------------------------------------------------------------------------------------
5511    -- 4219869 Business Flow
5512    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5513    -- Prior Entry.  Currently, the following code is always generated.
5514    ------------------------------------------------------------------------------------------------
5515    XLA_AE_LINES_PKG.ValidateCurrentLine;
5516 
5517    ------------------------------------------------------------------------------------
5518    -- 4219869 Business Flow
5519    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5520    ------------------------------------------------------------------------------------
5521    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5522 
5523    ----------------------------------------------------------------------------------
5524    -- 4219869 Business Flow
5525    -- Update journal entry status -- Need to generate this within IF <condition>
5526    ----------------------------------------------------------------------------------
5527    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5528          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5529          ,p_balance_type_code => l_balance_type_code
5530          );
5531 
5532    -------------------------------------------------------------------------------------------
5533    -- 4262811 - Generate the Accrual Reversal lines
5534    -------------------------------------------------------------------------------------------
5535    BEGIN
5536       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5537                               (g_array_event(p_event_id).array_value_num('header_index'));
5538       IF l_acc_rev_flag IS NULL THEN
5539          l_acc_rev_flag := 'N';
5540       END IF;
5541    EXCEPTION
5545    --
5542       WHEN OTHERS THEN
5543          l_acc_rev_flag := 'N';
5544    END;
5546    IF (l_acc_rev_flag = 'Y') THEN
5547 
5548        -- 4645092  ------------------------------------------------------------------------------
5549        -- To allow MPA report to determine if it should generate report process
5550        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5551        ------------------------------------------------------------------------------------------
5552 
5553        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5554        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5555 
5556        --
5557        -- Update the line information that should be overwritten
5558        --
5559        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5560                                          p_header_num   => 1);
5561        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5562 
5563        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5564 
5565        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5566           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5567        END IF;
5568 
5569       --
5570       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5571       --
5572       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5573           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5574       ELSE
5575           ---------------------------------------------------------------------------------------------------
5576           -- 4262811a Switch Sign
5577           ---------------------------------------------------------------------------------------------------
5578           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5579           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5580                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5581           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5582                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5583           -- 5132302
5584           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5585                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5586 
5587       END IF;
5588 
5589       -- 4955764
5590       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5592 
5593 
5594       XLA_AE_LINES_PKG.ValidateCurrentLine;
5595       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5596 
5597       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5598                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5599                ,p_balance_type_code => l_balance_type_code);
5600 
5601    END IF;
5602 
5603    -----------------------------------------------------------------------------------------
5604    -- 4262811 Multiperiod Accounting
5605    -----------------------------------------------------------------------------------------
5606      -- No MPA option is assigned.
5607 
5608 
5609 END IF;
5610 END IF;
5611 --
5612 
5613 --
5614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5615    trace
5616       (p_msg      => 'END of AcctLineType_16'
5617       ,p_level    => C_LEVEL_PROCEDURE
5618       ,p_module   => l_log_module);
5619 END IF;
5620 --
5621 EXCEPTION
5622   WHEN xla_exceptions_pkg.application_exception THEN
5623       RAISE;
5624   WHEN OTHERS THEN
5625        xla_exceptions_pkg.raise_message
5626            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_16');
5627 END AcctLineType_16;
5628 --
5629 
5630 ---------------------------------------
5631 --
5632 -- PRIVATE FUNCTION
5633 --         AcctLineType_17
5634 --
5635 ---------------------------------------
5636 PROCEDURE AcctLineType_17 (
5637   p_application_id        IN NUMBER
5638  ,p_event_id              IN NUMBER
5639  ,p_calculate_acctd_flag  IN VARCHAR2
5640  ,p_calculate_g_l_flag    IN VARCHAR2
5641  ,p_actual_flag           IN OUT VARCHAR2
5642  ,p_balance_type_code     OUT VARCHAR2
5643  ,p_gain_or_loss_ref      OUT VARCHAR2
5644  
5645 --Cashflow Offset Account
5646  , p_source_7            IN NUMBER
5647 --Reversal Indicator
5648  , p_source_9            IN VARCHAR2
5649 --Cashflow Number
5650  , p_source_10            IN NUMBER
5651 --Cashflow History Identifier
5652  , p_source_11            IN VARCHAR2
5653 --Distribution Link Type
5654  , p_source_12            IN VARCHAR2
5655 --Reversal First Distribution Identifier
5656  , p_source_17            IN NUMBER
5657 --Reversal Second Distribution Identifier
5658  , p_source_18            IN VARCHAR2
5659 --Reversal Distribution Link Type
5660  , p_source_19            IN VARCHAR2
5661 --Cashflow Direction
5662  , p_source_22            IN VARCHAR2
5663  , p_source_22_meaning    IN VARCHAR2
5664 --Cashflow Amount
5665  , p_source_24            IN NUMBER
5666 --Cashflow Currency
5667  , p_source_25            IN VARCHAR2
5668 --Cashflow Exchange Date
5669  , p_source_26            IN DATE
5670 --Cashflow Exchange Rate
5671  , p_source_27            IN NUMBER
5672 --Cashflow Exchange Rate Type
5673  , p_source_28            IN VARCHAR2
5674 )
5675 IS
5676 
5677 l_component_type              VARCHAR2(80);
5681 l_amb_context_code            VARCHAR2(30);
5678 l_component_code              VARCHAR2(30);
5679 l_component_type_code         VARCHAR2(1);
5680 l_component_appl_id           INTEGER;
5682 l_entity_code                 VARCHAR2(30);
5683 l_event_class_code            VARCHAR2(30);
5684 l_ae_header_id                NUMBER;
5685 l_event_type_code             VARCHAR2(30);
5686 l_line_definition_code        VARCHAR2(30);
5687 l_line_definition_owner_code  VARCHAR2(1);
5688 --
5689 -- adr variables
5690 l_segment                     VARCHAR2(30);
5691 l_ccid                        NUMBER;
5692 l_adr_transaction_coa_id      NUMBER;
5693 l_adr_accounting_coa_id       NUMBER;
5694 l_adr_flexfield_segment_code  VARCHAR2(30);
5695 l_adr_flex_value_set_id       NUMBER;
5696 l_adr_value_type_code         VARCHAR2(30);
5697 l_adr_value_combination_id    NUMBER;
5698 l_adr_value_segment_code      VARCHAR2(30);
5699 
5700 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5701 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5702 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5703 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5704 
5705 -- 4262811 Variables ------------------------------------------------------------------------------------------
5706 l_entered_amt_idx             NUMBER;
5707 l_accted_amt_idx              NUMBER;
5708 l_acc_rev_flag                VARCHAR2(1);
5709 l_accrual_line_num            NUMBER;
5710 l_tmp_amt                     NUMBER;
5711 l_acc_rev_natural_side_code   VARCHAR2(1);
5712 
5713 l_num_entries                 NUMBER;
5714 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5715 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5716 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5717 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5718 l_recog_line_1                NUMBER;
5719 l_recog_line_2                NUMBER;
5720 
5721 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5722 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5723 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5724 
5725 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5726 
5727 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5728 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5729 
5730 ---------------------------------------------------------------------------------------------------------------
5731 
5732 
5733 --
5734 -- bulk performance
5735 --
5736 l_balance_type_code           VARCHAR2(1);
5737 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5738 l_log_module                  VARCHAR2(240);
5739 
5740 --
5741 -- Upgrade strategy
5742 --
5743 l_actual_upg_option           VARCHAR2(1);
5744 l_enc_upg_option           VARCHAR2(1);
5745 
5746 --
5747 BEGIN
5748 --
5749 IF g_log_enabled THEN
5750       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
5751 END IF;
5752 --
5753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5754 
5755       trace
5756          (p_msg      => 'BEGIN of AcctLineType_17'
5757          ,p_level    => C_LEVEL_PROCEDURE
5758          ,p_module   => l_log_module);
5759 
5760 END IF;
5761 --
5762 l_component_type             := 'AMB_JLT';
5763 l_component_code             := 'BAT_PAYMENT_OFFSET_DR';
5764 l_component_type_code        := 'S';
5765 l_component_appl_id          :=  260;
5766 l_amb_context_code           := 'DEFAULT';
5767 l_entity_code                := 'CE_CASHFLOWS';
5768 l_event_class_code           := 'BAT_CLASS';
5769 l_event_type_code            := 'CE_BAT_UNCLEARED';
5770 l_line_definition_owner_code := 'S';
5771 l_line_definition_code       := 'BAT_UNCLR_DEFN';
5772 --
5773 l_balance_type_code          := 'A';
5774 l_segment                     := NULL;
5775 l_ccid                        := NULL;
5776 l_adr_transaction_coa_id      := NULL;
5777 l_adr_accounting_coa_id       := NULL;
5778 l_adr_flexfield_segment_code  := NULL;
5779 l_adr_flex_value_set_id       := NULL;
5780 l_adr_value_type_code         := NULL;
5781 l_adr_value_combination_id    := NULL;
5782 l_adr_value_segment_code      := NULL;
5783 
5784 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5785 l_bflow_class_code           := '';    -- 4219869 Business Flow
5786 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5787 l_budgetary_control_flag     := 'N';
5788 
5789 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5790 l_bflow_applied_to_amt       := NULL; -- 5132302
5791 l_entered_amt_idx            := NULL;          -- 4262811
5792 l_accted_amt_idx             := NULL;          -- 4262811
5793 l_acc_rev_flag               := NULL;          -- 4262811
5794 l_accrual_line_num           := NULL;          -- 4262811
5795 l_tmp_amt                    := NULL;          -- 4262811
5796 --
5797  
5798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5799     l_balance_type_code <> 'B' THEN
5800 IF NVL(p_source_22,'
5801 ')  =  'PAYMENT'
5802  THEN 
5803 
5804    --
5805    XLA_AE_LINES_PKG.SetNewLine;
5806 
5807    p_balance_type_code          := l_balance_type_code;
5808    -- set the flag so later we will know whether the gain loss line needs to be created
5809    
5810    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5811      p_actual_flag :='A';
5812    END IF;
5813 
5814    --
5815    -- bulk performance
5816    --
5817    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5821    --
5818                                       p_header_num   => 0); -- 4262811
5819    --
5820    -- set accounting line options
5822    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5823            p_natural_side_code          => 'D'
5824          , p_gain_or_loss_flag          => 'N'
5825          , p_gl_transfer_mode_code      => 'D'
5826          , p_acct_entry_type_code       => 'A'
5827          , p_switch_side_flag           => 'Y'
5828          , p_merge_duplicate_code       => 'N'
5829          );
5830    --
5831    l_acc_rev_natural_side_code := 'C';  -- 4262811
5832    -- 
5833    --
5834    -- set accounting line type info
5835    --
5836    xla_ae_lines_pkg.SetAcctLineType
5837       (p_component_type             => l_component_type
5838       ,p_event_type_code            => l_event_type_code
5839       ,p_line_definition_owner_code => l_line_definition_owner_code
5840       ,p_line_definition_code       => l_line_definition_code
5841       ,p_accounting_line_code       => l_component_code
5842       ,p_accounting_line_type_code  => l_component_type_code
5843       ,p_accounting_line_appl_id    => l_component_appl_id
5844       ,p_amb_context_code           => l_amb_context_code
5845       ,p_entity_code                => l_entity_code
5846       ,p_event_class_code           => l_event_class_code);
5847    --
5848    -- set accounting class
5849    --
5850    xla_ae_lines_pkg.SetAcctClass(
5851            p_accounting_class_code  => 'MISCELLANEOUS EXPENSE'
5852          , p_ae_header_id           => l_ae_header_id
5853          );
5854 
5855    --
5856    -- set rounding class
5857    --
5858    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5859                       'MISCELLANEOUS EXPENSE';
5860 
5861    --
5862    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5863    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5864    --
5865    -- bulk performance
5866    --
5867    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5868 
5869    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5870       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5871 
5872    -- 4955764
5873    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5875 
5876    -- 4458381 Public Sector Enh
5877    
5878    --
5879    -- set accounting attributes for the line type
5880    --
5881    l_entered_amt_idx := 5;
5882    l_accted_amt_idx  := NULL;
5883    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5884    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5885    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
5886    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
5887    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
5888    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
5889    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
5890    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
5891    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
5892    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
5893    l_rec_acct_attrs.array_num_value(5)  := p_source_24;
5894    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
5895    l_rec_acct_attrs.array_char_value(6)  := p_source_25;
5896    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
5897    l_rec_acct_attrs.array_date_value(7)  := p_source_26;
5898    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
5899    l_rec_acct_attrs.array_num_value(8)  := p_source_27;
5900    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
5901    l_rec_acct_attrs.array_char_value(9)  := p_source_28;
5902    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
5903    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
5904    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
5905    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
5906    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
5907    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
5908 
5909    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5910    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5911 
5912    ---------------------------------------------------------------------------------------------------------------
5913    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5914    ---------------------------------------------------------------------------------------------------------------
5915    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5916 
5917    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5918    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5919 
5920    IF xla_accounting_cache_pkg.GetValueChar
5921          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5922          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5923    AND l_bflow_method_code = 'PRIOR_ENTRY'
5924 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5925    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5926          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5927        )
5928    THEN
5929          xla_ae_lines_pkg.BflowUpgEntry
5930            (p_business_method_code    => l_bflow_method_code
5931            ,p_business_class_code     => l_bflow_class_code
5935 -- No business flow processing for business flow method of NONE.
5932            ,p_balance_type            => l_balance_type_code);
5933    ELSE
5934       NULL;
5936    END IF;
5937 
5938    --
5939    -- call description
5940    --
5941    -- No description or it is inherited.
5942    --
5943    -- call ADRs
5944    -- Bug 4922099
5945    --
5946    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5947         (NVL(l_actual_upg_option, 'N') = 'O') OR
5948         (NVL(l_enc_upg_option, 'N') = 'O')
5949       )
5950    THEN
5951    NULL;
5952    --
5953    --
5954    
5955   l_ccid := AcctDerRule_7(
5956            p_application_id           => p_application_id
5957          , p_ae_header_id             => l_ae_header_id 
5958 , p_source_7 => p_source_7
5959          , x_transaction_coa_id       => l_adr_transaction_coa_id
5960          , x_accounting_coa_id        => l_adr_accounting_coa_id
5961          , x_value_type_code          => l_adr_value_type_code
5962          , p_side                     => 'NA'
5963    );
5964 
5965    xla_ae_lines_pkg.set_ccid(
5966     p_code_combination_id          => l_ccid
5967   , p_value_type_code              => l_adr_value_type_code
5968   , p_transaction_coa_id           => l_adr_transaction_coa_id
5969   , p_accounting_coa_id            => l_adr_accounting_coa_id
5970   , p_adr_code                     => 'CE_OFFSET'
5971   , p_adr_type_code                => 'S'
5972   , p_component_type               => l_component_type
5973   , p_component_code               => l_component_code
5974   , p_component_type_code          => l_component_type_code
5975   , p_component_appl_id            => l_component_appl_id
5976   , p_amb_context_code             => l_amb_context_code
5977   , p_side                         => 'NA'
5978   );
5979 
5980 
5981    --
5982    --
5983    END IF;
5984    --
5985    -- Bug 4922099
5986    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5987           (NVL(l_enc_upg_option, 'N') = 'O')
5988         ) AND
5989         (l_bflow_method_code = 'PRIOR_ENTRY')
5990       )
5991    THEN
5992       IF
5993       --
5994       1 = 2
5995       --
5996       THEN
5997       xla_accounting_err_pkg.build_message
5998                                     (p_appli_s_name            => 'XLA'
5999                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6000                                     ,p_token_1                 => 'LINE_NUMBER'
6001                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6002                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6003                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6004                                                                              l_component_type
6005                                                                             ,l_component_code
6006                                                                             ,l_component_type_code
6007                                                                             ,l_component_appl_id
6008                                                                             ,l_amb_context_code
6009                                                                             ,l_entity_code
6010                                                                             ,l_event_class_code
6011                                                                            )
6012                                     ,p_token_3                 => 'OWNER'
6013                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6014                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6015                                                                           ,p_lookup_code    => l_component_type_code
6016                                                                          )
6017                                     ,p_token_4                 => 'PRODUCT_NAME'
6018                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6019                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6020                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6021                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6022                                     ,p_ae_header_id            =>  NULL
6023                                        );
6024 
6025         IF (C_LEVEL_ERROR>= g_log_level) THEN
6026                  trace
6027                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6028                       ,p_level    => C_LEVEL_ERROR
6029                       ,p_module   => l_log_module);
6030         END IF;
6031       END IF;
6032    END IF;
6033    --
6034    --
6035    ------------------------------------------------------------------------------------------------
6036    -- 4219869 Business Flow
6037    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6038    -- Prior Entry.  Currently, the following code is always generated.
6039    ------------------------------------------------------------------------------------------------
6040    XLA_AE_LINES_PKG.ValidateCurrentLine;
6041 
6042    ------------------------------------------------------------------------------------
6043    -- 4219869 Business Flow
6044    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6045    ------------------------------------------------------------------------------------
6046    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6047 
6048    ----------------------------------------------------------------------------------
6049    -- 4219869 Business Flow
6053          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6050    -- Update journal entry status -- Need to generate this within IF <condition>
6051    ----------------------------------------------------------------------------------
6052    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6054          ,p_balance_type_code => l_balance_type_code
6055          );
6056 
6057    -------------------------------------------------------------------------------------------
6058    -- 4262811 - Generate the Accrual Reversal lines
6059    -------------------------------------------------------------------------------------------
6060    BEGIN
6061       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6062                               (g_array_event(p_event_id).array_value_num('header_index'));
6063       IF l_acc_rev_flag IS NULL THEN
6064          l_acc_rev_flag := 'N';
6065       END IF;
6066    EXCEPTION
6067       WHEN OTHERS THEN
6068          l_acc_rev_flag := 'N';
6069    END;
6070    --
6071    IF (l_acc_rev_flag = 'Y') THEN
6072 
6073        -- 4645092  ------------------------------------------------------------------------------
6074        -- To allow MPA report to determine if it should generate report process
6075        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6076        ------------------------------------------------------------------------------------------
6077 
6078        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6079        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6080 
6081        --
6082        -- Update the line information that should be overwritten
6083        --
6084        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6085                                          p_header_num   => 1);
6086        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6087 
6088        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6089 
6090        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6091           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6092        END IF;
6093 
6094       --
6095       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6096       --
6097       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6098           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6099       ELSE
6100           ---------------------------------------------------------------------------------------------------
6101           -- 4262811a Switch Sign
6102           ---------------------------------------------------------------------------------------------------
6103           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6104           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6105                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6106           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6107                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6108           -- 5132302
6109           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6110                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6111 
6112       END IF;
6113 
6114       -- 4955764
6115       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6117 
6118 
6119       XLA_AE_LINES_PKG.ValidateCurrentLine;
6120       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6121 
6122       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6123                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6124                ,p_balance_type_code => l_balance_type_code);
6125 
6126    END IF;
6127 
6128    -----------------------------------------------------------------------------------------
6129    -- 4262811 Multiperiod Accounting
6130    -----------------------------------------------------------------------------------------
6131      -- No MPA option is assigned.
6132 
6133 
6134 END IF;
6135 END IF;
6136 --
6137 
6138 --
6139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6140    trace
6141       (p_msg      => 'END of AcctLineType_17'
6142       ,p_level    => C_LEVEL_PROCEDURE
6143       ,p_module   => l_log_module);
6144 END IF;
6145 --
6146 EXCEPTION
6147   WHEN xla_exceptions_pkg.application_exception THEN
6148       RAISE;
6149   WHEN OTHERS THEN
6150        xla_exceptions_pkg.raise_message
6151            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_17');
6152 END AcctLineType_17;
6153 --
6154 
6155 ---------------------------------------
6156 --
6157 -- PRIVATE FUNCTION
6158 --         AcctLineType_18
6159 --
6160 ---------------------------------------
6161 PROCEDURE AcctLineType_18 (
6162   p_application_id        IN NUMBER
6163  ,p_event_id              IN NUMBER
6164  ,p_calculate_acctd_flag  IN VARCHAR2
6165  ,p_calculate_g_l_flag    IN VARCHAR2
6166  ,p_actual_flag           IN OUT VARCHAR2
6167  ,p_balance_type_code     OUT VARCHAR2
6168  ,p_gain_or_loss_ref      OUT VARCHAR2
6169  
6170 --Cashflow Bank Account Cash Account
6171  , p_source_5            IN NUMBER
6172 --Reversal Indicator
6173  , p_source_9            IN VARCHAR2
6174 --Cashflow Number
6175  , p_source_10            IN NUMBER
6176 --Cashflow History Identifier
6180 --Cashflow Bank Account Currency
6177  , p_source_11            IN VARCHAR2
6178 --Distribution Link Type
6179  , p_source_12            IN VARCHAR2
6181  , p_source_13            IN VARCHAR2
6182 --Cashflow Cleared Exchange Rate Date
6183  , p_source_14            IN DATE
6184 --Cashflow Cleared Exchange Rate
6185  , p_source_15            IN NUMBER
6186 --Cashflow Cleared Exchange Rate Type
6187  , p_source_16            IN VARCHAR2
6188 --Reversal First Distribution Identifier
6189  , p_source_17            IN NUMBER
6190 --Reversal Second Distribution Identifier
6191  , p_source_18            IN VARCHAR2
6192 --Reversal Distribution Link Type
6193  , p_source_19            IN VARCHAR2
6194 --Cashflow Direction
6195  , p_source_22            IN VARCHAR2
6196  , p_source_22_meaning    IN VARCHAR2
6197 --Cashflow Cleared Amount
6198  , p_source_23            IN NUMBER
6199 )
6200 IS
6201 
6202 l_component_type              VARCHAR2(80);
6203 l_component_code              VARCHAR2(30);
6204 l_component_type_code         VARCHAR2(1);
6205 l_component_appl_id           INTEGER;
6206 l_amb_context_code            VARCHAR2(30);
6207 l_entity_code                 VARCHAR2(30);
6208 l_event_class_code            VARCHAR2(30);
6209 l_ae_header_id                NUMBER;
6210 l_event_type_code             VARCHAR2(30);
6211 l_line_definition_code        VARCHAR2(30);
6212 l_line_definition_owner_code  VARCHAR2(1);
6213 --
6214 -- adr variables
6215 l_segment                     VARCHAR2(30);
6216 l_ccid                        NUMBER;
6217 l_adr_transaction_coa_id      NUMBER;
6218 l_adr_accounting_coa_id       NUMBER;
6219 l_adr_flexfield_segment_code  VARCHAR2(30);
6220 l_adr_flex_value_set_id       NUMBER;
6221 l_adr_value_type_code         VARCHAR2(30);
6222 l_adr_value_combination_id    NUMBER;
6223 l_adr_value_segment_code      VARCHAR2(30);
6224 
6225 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6226 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6227 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6228 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6229 
6230 -- 4262811 Variables ------------------------------------------------------------------------------------------
6231 l_entered_amt_idx             NUMBER;
6232 l_accted_amt_idx              NUMBER;
6233 l_acc_rev_flag                VARCHAR2(1);
6234 l_accrual_line_num            NUMBER;
6235 l_tmp_amt                     NUMBER;
6236 l_acc_rev_natural_side_code   VARCHAR2(1);
6237 
6238 l_num_entries                 NUMBER;
6239 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6240 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6241 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6242 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6243 l_recog_line_1                NUMBER;
6244 l_recog_line_2                NUMBER;
6245 
6246 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6247 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6248 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6249 
6250 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6251 
6252 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6253 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6254 
6255 ---------------------------------------------------------------------------------------------------------------
6256 
6257 
6258 --
6259 -- bulk performance
6260 --
6261 l_balance_type_code           VARCHAR2(1);
6262 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6263 l_log_module                  VARCHAR2(240);
6264 
6265 --
6266 -- Upgrade strategy
6267 --
6268 l_actual_upg_option           VARCHAR2(1);
6269 l_enc_upg_option           VARCHAR2(1);
6270 
6271 --
6272 BEGIN
6273 --
6274 IF g_log_enabled THEN
6275       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
6276 END IF;
6277 --
6278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6279 
6280       trace
6281          (p_msg      => 'BEGIN of AcctLineType_18'
6282          ,p_level    => C_LEVEL_PROCEDURE
6283          ,p_module   => l_log_module);
6284 
6285 END IF;
6286 --
6287 l_component_type             := 'AMB_JLT';
6288 l_component_code             := 'BAT_RECEIPT_CASH_DR';
6289 l_component_type_code        := 'S';
6290 l_component_appl_id          :=  260;
6291 l_amb_context_code           := 'DEFAULT';
6292 l_entity_code                := 'CE_CASHFLOWS';
6293 l_event_class_code           := 'BAT_CLASS';
6294 l_event_type_code            := 'CE_BAT_CLEARED';
6295 l_line_definition_owner_code := 'S';
6296 l_line_definition_code       := 'BAT_CLR_DFN';
6297 --
6298 l_balance_type_code          := 'A';
6299 l_segment                     := NULL;
6300 l_ccid                        := NULL;
6301 l_adr_transaction_coa_id      := NULL;
6302 l_adr_accounting_coa_id       := NULL;
6303 l_adr_flexfield_segment_code  := NULL;
6304 l_adr_flex_value_set_id       := NULL;
6305 l_adr_value_type_code         := NULL;
6306 l_adr_value_combination_id    := NULL;
6307 l_adr_value_segment_code      := NULL;
6308 
6309 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6310 l_bflow_class_code           := '';    -- 4219869 Business Flow
6311 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6312 l_budgetary_control_flag     := 'N';
6313 
6314 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6315 l_bflow_applied_to_amt       := NULL; -- 5132302
6316 l_entered_amt_idx            := NULL;          -- 4262811
6317 l_accted_amt_idx             := NULL;          -- 4262811
6321 --
6318 l_acc_rev_flag               := NULL;          -- 4262811
6319 l_accrual_line_num           := NULL;          -- 4262811
6320 l_tmp_amt                    := NULL;          -- 4262811
6322  
6323 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6324     l_balance_type_code <> 'B' THEN
6325 IF NVL(p_source_22,'
6326 ')  =  'RECEIPT'
6327  THEN 
6328 
6329    --
6330    XLA_AE_LINES_PKG.SetNewLine;
6331 
6332    p_balance_type_code          := l_balance_type_code;
6333    -- set the flag so later we will know whether the gain loss line needs to be created
6334    
6335    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6336      p_actual_flag :='A';
6337    END IF;
6338 
6339    --
6340    -- bulk performance
6341    --
6342    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6343                                       p_header_num   => 0); -- 4262811
6344    --
6345    -- set accounting line options
6346    --
6347    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6348            p_natural_side_code          => 'D'
6349          , p_gain_or_loss_flag          => 'N'
6350          , p_gl_transfer_mode_code      => 'D'
6351          , p_acct_entry_type_code       => 'A'
6352          , p_switch_side_flag           => 'Y'
6353          , p_merge_duplicate_code       => 'N'
6354          );
6355    --
6356    l_acc_rev_natural_side_code := 'C';  -- 4262811
6357    -- 
6358    --
6359    -- set accounting line type info
6360    --
6361    xla_ae_lines_pkg.SetAcctLineType
6362       (p_component_type             => l_component_type
6363       ,p_event_type_code            => l_event_type_code
6364       ,p_line_definition_owner_code => l_line_definition_owner_code
6365       ,p_line_definition_code       => l_line_definition_code
6366       ,p_accounting_line_code       => l_component_code
6367       ,p_accounting_line_type_code  => l_component_type_code
6368       ,p_accounting_line_appl_id    => l_component_appl_id
6369       ,p_amb_context_code           => l_amb_context_code
6370       ,p_entity_code                => l_entity_code
6371       ,p_event_class_code           => l_event_class_code);
6372    --
6373    -- set accounting class
6374    --
6375    xla_ae_lines_pkg.SetAcctClass(
6376            p_accounting_class_code  => 'CASH'
6377          , p_ae_header_id           => l_ae_header_id
6378          );
6379 
6380    --
6381    -- set rounding class
6382    --
6383    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6384                       'CASH';
6385 
6386    --
6387    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6388    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6389    --
6390    -- bulk performance
6391    --
6392    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6393 
6394    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6395       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6396 
6397    -- 4955764
6398    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6399       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6400 
6401    -- 4458381 Public Sector Enh
6402    
6403    --
6404    -- set accounting attributes for the line type
6405    --
6406    l_entered_amt_idx := 5;
6407    l_accted_amt_idx  := NULL;
6408    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6409    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6410    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
6411    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
6412    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
6413    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
6414    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
6415    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
6416    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
6417    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
6418    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
6419    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
6420    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
6421    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
6422    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
6423    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
6424    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
6425    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
6426    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
6427    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
6428    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
6429    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
6430    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
6431    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
6432    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
6433 
6434    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6435    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6436 
6437    ---------------------------------------------------------------------------------------------------------------
6438    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6439    ---------------------------------------------------------------------------------------------------------------
6440    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6444 
6441 
6442    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6443    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6445    IF xla_accounting_cache_pkg.GetValueChar
6446          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6447          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6448    AND l_bflow_method_code = 'PRIOR_ENTRY'
6449 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6450    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6451          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6452        )
6453    THEN
6454          xla_ae_lines_pkg.BflowUpgEntry
6455            (p_business_method_code    => l_bflow_method_code
6456            ,p_business_class_code     => l_bflow_class_code
6457            ,p_balance_type            => l_balance_type_code);
6458    ELSE
6459       NULL;
6460 -- No business flow processing for business flow method of NONE.
6461    END IF;
6462 
6463    --
6464    -- call description
6465    --
6466    -- No description or it is inherited.
6467    --
6468    -- call ADRs
6469    -- Bug 4922099
6470    --
6471    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6472         (NVL(l_actual_upg_option, 'N') = 'O') OR
6473         (NVL(l_enc_upg_option, 'N') = 'O')
6474       )
6475    THEN
6476    NULL;
6477    --
6478    --
6479    
6480   l_ccid := AcctDerRule_5(
6481            p_application_id           => p_application_id
6482          , p_ae_header_id             => l_ae_header_id 
6483 , p_source_5 => p_source_5
6484          , x_transaction_coa_id       => l_adr_transaction_coa_id
6485          , x_accounting_coa_id        => l_adr_accounting_coa_id
6486          , x_value_type_code          => l_adr_value_type_code
6487          , p_side                     => 'NA'
6488    );
6489 
6490    xla_ae_lines_pkg.set_ccid(
6491     p_code_combination_id          => l_ccid
6492   , p_value_type_code              => l_adr_value_type_code
6493   , p_transaction_coa_id           => l_adr_transaction_coa_id
6494   , p_accounting_coa_id            => l_adr_accounting_coa_id
6495   , p_adr_code                     => 'CE_CASH'
6496   , p_adr_type_code                => 'S'
6497   , p_component_type               => l_component_type
6498   , p_component_code               => l_component_code
6499   , p_component_type_code          => l_component_type_code
6500   , p_component_appl_id            => l_component_appl_id
6501   , p_amb_context_code             => l_amb_context_code
6502   , p_side                         => 'NA'
6503   );
6504 
6505 
6506    --
6507    --
6508    END IF;
6509    --
6510    -- Bug 4922099
6511    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6512           (NVL(l_enc_upg_option, 'N') = 'O')
6513         ) AND
6514         (l_bflow_method_code = 'PRIOR_ENTRY')
6515       )
6516    THEN
6517       IF
6518       --
6519       1 = 2
6520       --
6521       THEN
6522       xla_accounting_err_pkg.build_message
6523                                     (p_appli_s_name            => 'XLA'
6524                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6525                                     ,p_token_1                 => 'LINE_NUMBER'
6526                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6527                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6528                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6529                                                                              l_component_type
6530                                                                             ,l_component_code
6531                                                                             ,l_component_type_code
6532                                                                             ,l_component_appl_id
6533                                                                             ,l_amb_context_code
6534                                                                             ,l_entity_code
6535                                                                             ,l_event_class_code
6536                                                                            )
6537                                     ,p_token_3                 => 'OWNER'
6538                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6539                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6540                                                                           ,p_lookup_code    => l_component_type_code
6541                                                                          )
6542                                     ,p_token_4                 => 'PRODUCT_NAME'
6543                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6544                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6545                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6546                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6547                                     ,p_ae_header_id            =>  NULL
6548                                        );
6549 
6550         IF (C_LEVEL_ERROR>= g_log_level) THEN
6551                  trace
6552                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6553                       ,p_level    => C_LEVEL_ERROR
6554                       ,p_module   => l_log_module);
6555         END IF;
6556       END IF;
6557    END IF;
6558    --
6559    --
6563    -- Prior Entry.  Currently, the following code is always generated.
6560    ------------------------------------------------------------------------------------------------
6561    -- 4219869 Business Flow
6562    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6564    ------------------------------------------------------------------------------------------------
6565    XLA_AE_LINES_PKG.ValidateCurrentLine;
6566 
6567    ------------------------------------------------------------------------------------
6568    -- 4219869 Business Flow
6569    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6570    ------------------------------------------------------------------------------------
6571    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6572 
6573    ----------------------------------------------------------------------------------
6574    -- 4219869 Business Flow
6575    -- Update journal entry status -- Need to generate this within IF <condition>
6576    ----------------------------------------------------------------------------------
6577    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6578          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6579          ,p_balance_type_code => l_balance_type_code
6580          );
6581 
6582    -------------------------------------------------------------------------------------------
6583    -- 4262811 - Generate the Accrual Reversal lines
6584    -------------------------------------------------------------------------------------------
6585    BEGIN
6586       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6587                               (g_array_event(p_event_id).array_value_num('header_index'));
6588       IF l_acc_rev_flag IS NULL THEN
6589          l_acc_rev_flag := 'N';
6590       END IF;
6591    EXCEPTION
6592       WHEN OTHERS THEN
6593          l_acc_rev_flag := 'N';
6594    END;
6595    --
6596    IF (l_acc_rev_flag = 'Y') THEN
6597 
6598        -- 4645092  ------------------------------------------------------------------------------
6599        -- To allow MPA report to determine if it should generate report process
6600        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6601        ------------------------------------------------------------------------------------------
6602 
6603        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6604        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6605 
6606        --
6607        -- Update the line information that should be overwritten
6608        --
6609        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6610                                          p_header_num   => 1);
6611        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6612 
6613        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6614 
6615        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6616           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6617        END IF;
6618 
6619       --
6620       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6621       --
6622       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6623           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6624       ELSE
6625           ---------------------------------------------------------------------------------------------------
6626           -- 4262811a Switch Sign
6627           ---------------------------------------------------------------------------------------------------
6628           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6629           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6630                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6631           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6632                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6633           -- 5132302
6634           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6635                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6636 
6637       END IF;
6638 
6639       -- 4955764
6640       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6641       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6642 
6643 
6644       XLA_AE_LINES_PKG.ValidateCurrentLine;
6645       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6646 
6647       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6648                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6649                ,p_balance_type_code => l_balance_type_code);
6650 
6651    END IF;
6652 
6653    -----------------------------------------------------------------------------------------
6654    -- 4262811 Multiperiod Accounting
6655    -----------------------------------------------------------------------------------------
6656      -- No MPA option is assigned.
6657 
6658 
6659 END IF;
6660 END IF;
6661 --
6662 
6663 --
6664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6665    trace
6666       (p_msg      => 'END of AcctLineType_18'
6667       ,p_level    => C_LEVEL_PROCEDURE
6668       ,p_module   => l_log_module);
6669 END IF;
6670 --
6671 EXCEPTION
6672   WHEN xla_exceptions_pkg.application_exception THEN
6673       RAISE;
6674   WHEN OTHERS THEN
6675        xla_exceptions_pkg.raise_message
6679 
6676            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_18');
6677 END AcctLineType_18;
6678 --
6680 ---------------------------------------
6681 --
6682 -- PRIVATE FUNCTION
6683 --         AcctLineType_19
6684 --
6685 ---------------------------------------
6686 PROCEDURE AcctLineType_19 (
6687   p_application_id        IN NUMBER
6688  ,p_event_id              IN NUMBER
6689  ,p_calculate_acctd_flag  IN VARCHAR2
6690  ,p_calculate_g_l_flag    IN VARCHAR2
6691  ,p_actual_flag           IN OUT VARCHAR2
6692  ,p_balance_type_code     OUT VARCHAR2
6693  ,p_gain_or_loss_ref      OUT VARCHAR2
6694  
6695 --Cashflow Bank Account Cash Account
6696  , p_source_5            IN NUMBER
6697 --Reversal Indicator
6698  , p_source_9            IN VARCHAR2
6699 --Cashflow Number
6700  , p_source_10            IN NUMBER
6701 --Cashflow History Identifier
6702  , p_source_11            IN VARCHAR2
6703 --Distribution Link Type
6704  , p_source_12            IN VARCHAR2
6705 --Cashflow Bank Account Currency
6706  , p_source_13            IN VARCHAR2
6707 --Cashflow Cleared Exchange Rate Date
6708  , p_source_14            IN DATE
6709 --Cashflow Cleared Exchange Rate
6710  , p_source_15            IN NUMBER
6711 --Cashflow Cleared Exchange Rate Type
6712  , p_source_16            IN VARCHAR2
6713 --Reversal First Distribution Identifier
6714  , p_source_17            IN NUMBER
6715 --Reversal Second Distribution Identifier
6716  , p_source_18            IN VARCHAR2
6717 --Reversal Distribution Link Type
6718  , p_source_19            IN VARCHAR2
6719 --Cashflow Direction
6720  , p_source_22            IN VARCHAR2
6721  , p_source_22_meaning    IN VARCHAR2
6722 --Cashflow Cleared Amount
6723  , p_source_23            IN NUMBER
6724 )
6725 IS
6726 
6727 l_component_type              VARCHAR2(80);
6728 l_component_code              VARCHAR2(30);
6729 l_component_type_code         VARCHAR2(1);
6730 l_component_appl_id           INTEGER;
6731 l_amb_context_code            VARCHAR2(30);
6732 l_entity_code                 VARCHAR2(30);
6733 l_event_class_code            VARCHAR2(30);
6734 l_ae_header_id                NUMBER;
6735 l_event_type_code             VARCHAR2(30);
6736 l_line_definition_code        VARCHAR2(30);
6737 l_line_definition_owner_code  VARCHAR2(1);
6738 --
6739 -- adr variables
6740 l_segment                     VARCHAR2(30);
6741 l_ccid                        NUMBER;
6742 l_adr_transaction_coa_id      NUMBER;
6743 l_adr_accounting_coa_id       NUMBER;
6744 l_adr_flexfield_segment_code  VARCHAR2(30);
6745 l_adr_flex_value_set_id       NUMBER;
6746 l_adr_value_type_code         VARCHAR2(30);
6747 l_adr_value_combination_id    NUMBER;
6748 l_adr_value_segment_code      VARCHAR2(30);
6749 
6750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6754 
6755 -- 4262811 Variables ------------------------------------------------------------------------------------------
6756 l_entered_amt_idx             NUMBER;
6757 l_accted_amt_idx              NUMBER;
6758 l_acc_rev_flag                VARCHAR2(1);
6759 l_accrual_line_num            NUMBER;
6760 l_tmp_amt                     NUMBER;
6761 l_acc_rev_natural_side_code   VARCHAR2(1);
6762 
6763 l_num_entries                 NUMBER;
6764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6768 l_recog_line_1                NUMBER;
6769 l_recog_line_2                NUMBER;
6770 
6771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6774 
6775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6776 
6777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6779 
6780 ---------------------------------------------------------------------------------------------------------------
6781 
6782 
6783 --
6784 -- bulk performance
6785 --
6786 l_balance_type_code           VARCHAR2(1);
6787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6788 l_log_module                  VARCHAR2(240);
6789 
6790 --
6791 -- Upgrade strategy
6792 --
6793 l_actual_upg_option           VARCHAR2(1);
6794 l_enc_upg_option           VARCHAR2(1);
6795 
6796 --
6797 BEGIN
6798 --
6799 IF g_log_enabled THEN
6800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
6801 END IF;
6802 --
6803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6804 
6805       trace
6806          (p_msg      => 'BEGIN of AcctLineType_19'
6807          ,p_level    => C_LEVEL_PROCEDURE
6808          ,p_module   => l_log_module);
6809 
6810 END IF;
6811 --
6812 l_component_type             := 'AMB_JLT';
6813 l_component_code             := 'BAT_RECEIPT_CASH_DR';
6814 l_component_type_code        := 'S';
6815 l_component_appl_id          :=  260;
6816 l_amb_context_code           := 'DEFAULT';
6817 l_entity_code                := 'CE_CASHFLOWS';
6818 l_event_class_code           := 'BAT_CLASS';
6819 l_event_type_code            := 'CE_BAT_UNCLEARED';
6820 l_line_definition_owner_code := 'S';
6821 l_line_definition_code       := 'BAT_UNCLR_DEFN';
6822 --
6826 l_adr_transaction_coa_id      := NULL;
6823 l_balance_type_code          := 'A';
6824 l_segment                     := NULL;
6825 l_ccid                        := NULL;
6827 l_adr_accounting_coa_id       := NULL;
6828 l_adr_flexfield_segment_code  := NULL;
6829 l_adr_flex_value_set_id       := NULL;
6830 l_adr_value_type_code         := NULL;
6831 l_adr_value_combination_id    := NULL;
6832 l_adr_value_segment_code      := NULL;
6833 
6834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6835 l_bflow_class_code           := '';    -- 4219869 Business Flow
6836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6837 l_budgetary_control_flag     := 'N';
6838 
6839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6840 l_bflow_applied_to_amt       := NULL; -- 5132302
6841 l_entered_amt_idx            := NULL;          -- 4262811
6842 l_accted_amt_idx             := NULL;          -- 4262811
6843 l_acc_rev_flag               := NULL;          -- 4262811
6844 l_accrual_line_num           := NULL;          -- 4262811
6845 l_tmp_amt                    := NULL;          -- 4262811
6846 --
6847  
6848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6849     l_balance_type_code <> 'B' THEN
6850 IF NVL(p_source_22,'
6851 ')  =  'RECEIPT'
6852  THEN 
6853 
6854    --
6855    XLA_AE_LINES_PKG.SetNewLine;
6856 
6857    p_balance_type_code          := l_balance_type_code;
6858    -- set the flag so later we will know whether the gain loss line needs to be created
6859    
6860    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6861      p_actual_flag :='A';
6862    END IF;
6863 
6864    --
6865    -- bulk performance
6866    --
6867    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6868                                       p_header_num   => 0); -- 4262811
6869    --
6870    -- set accounting line options
6871    --
6872    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6873            p_natural_side_code          => 'D'
6874          , p_gain_or_loss_flag          => 'N'
6875          , p_gl_transfer_mode_code      => 'D'
6876          , p_acct_entry_type_code       => 'A'
6877          , p_switch_side_flag           => 'Y'
6878          , p_merge_duplicate_code       => 'N'
6879          );
6880    --
6881    l_acc_rev_natural_side_code := 'C';  -- 4262811
6882    -- 
6883    --
6884    -- set accounting line type info
6885    --
6886    xla_ae_lines_pkg.SetAcctLineType
6887       (p_component_type             => l_component_type
6888       ,p_event_type_code            => l_event_type_code
6889       ,p_line_definition_owner_code => l_line_definition_owner_code
6890       ,p_line_definition_code       => l_line_definition_code
6891       ,p_accounting_line_code       => l_component_code
6892       ,p_accounting_line_type_code  => l_component_type_code
6893       ,p_accounting_line_appl_id    => l_component_appl_id
6894       ,p_amb_context_code           => l_amb_context_code
6895       ,p_entity_code                => l_entity_code
6896       ,p_event_class_code           => l_event_class_code);
6897    --
6898    -- set accounting class
6899    --
6900    xla_ae_lines_pkg.SetAcctClass(
6901            p_accounting_class_code  => 'CASH'
6902          , p_ae_header_id           => l_ae_header_id
6903          );
6904 
6905    --
6906    -- set rounding class
6907    --
6908    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6909                       'CASH';
6910 
6911    --
6912    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6913    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6914    --
6915    -- bulk performance
6916    --
6917    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6918 
6919    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6920       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6921 
6922    -- 4955764
6923    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6925 
6926    -- 4458381 Public Sector Enh
6927    
6928    --
6929    -- set accounting attributes for the line type
6930    --
6931    l_entered_amt_idx := 5;
6932    l_accted_amt_idx  := NULL;
6933    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6934    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6935    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
6936    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
6937    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
6938    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
6939    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
6940    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
6941    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
6942    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
6943    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
6944    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
6945    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
6946    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
6947    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
6948    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
6949    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
6950    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
6951    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
6952    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
6956    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
6953    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
6954    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
6955    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
6957    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
6958 
6959    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6960    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6961 
6962    ---------------------------------------------------------------------------------------------------------------
6963    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6964    ---------------------------------------------------------------------------------------------------------------
6965    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6966 
6967    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6968    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6969 
6970    IF xla_accounting_cache_pkg.GetValueChar
6971          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6972          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6973    AND l_bflow_method_code = 'PRIOR_ENTRY'
6974 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6975    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6976          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6977        )
6978    THEN
6979          xla_ae_lines_pkg.BflowUpgEntry
6980            (p_business_method_code    => l_bflow_method_code
6981            ,p_business_class_code     => l_bflow_class_code
6982            ,p_balance_type            => l_balance_type_code);
6983    ELSE
6984       NULL;
6985 -- No business flow processing for business flow method of NONE.
6986    END IF;
6987 
6988    --
6989    -- call description
6990    --
6991    -- No description or it is inherited.
6992    --
6993    -- call ADRs
6994    -- Bug 4922099
6995    --
6996    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6997         (NVL(l_actual_upg_option, 'N') = 'O') OR
6998         (NVL(l_enc_upg_option, 'N') = 'O')
6999       )
7000    THEN
7001    NULL;
7002    --
7003    --
7004    
7005   l_ccid := AcctDerRule_5(
7006            p_application_id           => p_application_id
7007          , p_ae_header_id             => l_ae_header_id 
7008 , p_source_5 => p_source_5
7009          , x_transaction_coa_id       => l_adr_transaction_coa_id
7010          , x_accounting_coa_id        => l_adr_accounting_coa_id
7011          , x_value_type_code          => l_adr_value_type_code
7012          , p_side                     => 'NA'
7013    );
7014 
7015    xla_ae_lines_pkg.set_ccid(
7016     p_code_combination_id          => l_ccid
7017   , p_value_type_code              => l_adr_value_type_code
7018   , p_transaction_coa_id           => l_adr_transaction_coa_id
7019   , p_accounting_coa_id            => l_adr_accounting_coa_id
7020   , p_adr_code                     => 'CE_CASH'
7021   , p_adr_type_code                => 'S'
7022   , p_component_type               => l_component_type
7023   , p_component_code               => l_component_code
7024   , p_component_type_code          => l_component_type_code
7025   , p_component_appl_id            => l_component_appl_id
7026   , p_amb_context_code             => l_amb_context_code
7027   , p_side                         => 'NA'
7028   );
7029 
7030 
7031    --
7032    --
7033    END IF;
7034    --
7035    -- Bug 4922099
7036    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7037           (NVL(l_enc_upg_option, 'N') = 'O')
7038         ) AND
7039         (l_bflow_method_code = 'PRIOR_ENTRY')
7040       )
7041    THEN
7042       IF
7043       --
7044       1 = 2
7045       --
7046       THEN
7047       xla_accounting_err_pkg.build_message
7048                                     (p_appli_s_name            => 'XLA'
7049                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7050                                     ,p_token_1                 => 'LINE_NUMBER'
7051                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7052                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7053                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7054                                                                              l_component_type
7055                                                                             ,l_component_code
7056                                                                             ,l_component_type_code
7057                                                                             ,l_component_appl_id
7058                                                                             ,l_amb_context_code
7059                                                                             ,l_entity_code
7060                                                                             ,l_event_class_code
7061                                                                            )
7062                                     ,p_token_3                 => 'OWNER'
7063                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7064                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7065                                                                           ,p_lookup_code    => l_component_type_code
7066                                                                          )
7067                                     ,p_token_4                 => 'PRODUCT_NAME'
7071                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7068                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7069                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7070                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7072                                     ,p_ae_header_id            =>  NULL
7073                                        );
7074 
7075         IF (C_LEVEL_ERROR>= g_log_level) THEN
7076                  trace
7077                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7078                       ,p_level    => C_LEVEL_ERROR
7079                       ,p_module   => l_log_module);
7080         END IF;
7081       END IF;
7082    END IF;
7083    --
7084    --
7085    ------------------------------------------------------------------------------------------------
7086    -- 4219869 Business Flow
7087    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7088    -- Prior Entry.  Currently, the following code is always generated.
7089    ------------------------------------------------------------------------------------------------
7090    XLA_AE_LINES_PKG.ValidateCurrentLine;
7091 
7092    ------------------------------------------------------------------------------------
7093    -- 4219869 Business Flow
7094    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7095    ------------------------------------------------------------------------------------
7096    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7097 
7098    ----------------------------------------------------------------------------------
7099    -- 4219869 Business Flow
7100    -- Update journal entry status -- Need to generate this within IF <condition>
7101    ----------------------------------------------------------------------------------
7102    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7103          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7104          ,p_balance_type_code => l_balance_type_code
7105          );
7106 
7107    -------------------------------------------------------------------------------------------
7108    -- 4262811 - Generate the Accrual Reversal lines
7109    -------------------------------------------------------------------------------------------
7110    BEGIN
7111       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7112                               (g_array_event(p_event_id).array_value_num('header_index'));
7113       IF l_acc_rev_flag IS NULL THEN
7114          l_acc_rev_flag := 'N';
7115       END IF;
7116    EXCEPTION
7117       WHEN OTHERS THEN
7118          l_acc_rev_flag := 'N';
7119    END;
7120    --
7121    IF (l_acc_rev_flag = 'Y') THEN
7122 
7123        -- 4645092  ------------------------------------------------------------------------------
7124        -- To allow MPA report to determine if it should generate report process
7125        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7126        ------------------------------------------------------------------------------------------
7127 
7128        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7129        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7130 
7131        --
7132        -- Update the line information that should be overwritten
7133        --
7134        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7135                                          p_header_num   => 1);
7136        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7137 
7138        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7139 
7140        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7141           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7142        END IF;
7143 
7144       --
7145       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7146       --
7147       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7148           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7149       ELSE
7150           ---------------------------------------------------------------------------------------------------
7151           -- 4262811a Switch Sign
7152           ---------------------------------------------------------------------------------------------------
7153           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7154           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7155                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7156           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7157                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7158           -- 5132302
7159           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7160                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7161 
7162       END IF;
7163 
7164       -- 4955764
7165       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7166       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7167 
7168 
7169       XLA_AE_LINES_PKG.ValidateCurrentLine;
7170       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7171 
7172       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7176    END IF;
7173                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7174                ,p_balance_type_code => l_balance_type_code);
7175 
7177 
7178    -----------------------------------------------------------------------------------------
7179    -- 4262811 Multiperiod Accounting
7180    -----------------------------------------------------------------------------------------
7181      -- No MPA option is assigned.
7182 
7183 
7184 END IF;
7185 END IF;
7186 --
7187 
7188 --
7189 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7190    trace
7191       (p_msg      => 'END of AcctLineType_19'
7192       ,p_level    => C_LEVEL_PROCEDURE
7193       ,p_module   => l_log_module);
7194 END IF;
7195 --
7196 EXCEPTION
7197   WHEN xla_exceptions_pkg.application_exception THEN
7198       RAISE;
7199   WHEN OTHERS THEN
7200        xla_exceptions_pkg.raise_message
7201            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_19');
7202 END AcctLineType_19;
7203 --
7204 
7205 ---------------------------------------
7206 --
7207 -- PRIVATE FUNCTION
7208 --         AcctLineType_20
7209 --
7210 ---------------------------------------
7211 PROCEDURE AcctLineType_20 (
7212   p_application_id        IN NUMBER
7213  ,p_event_id              IN NUMBER
7214  ,p_calculate_acctd_flag  IN VARCHAR2
7215  ,p_calculate_g_l_flag    IN VARCHAR2
7216  ,p_actual_flag           IN OUT VARCHAR2
7217  ,p_balance_type_code     OUT VARCHAR2
7218  ,p_gain_or_loss_ref      OUT VARCHAR2
7219  
7220 --Cashflow Offset Account
7221  , p_source_7            IN NUMBER
7222 --Reversal Indicator
7223  , p_source_9            IN VARCHAR2
7224 --Cashflow Number
7225  , p_source_10            IN NUMBER
7226 --Cashflow History Identifier
7227  , p_source_11            IN VARCHAR2
7228 --Distribution Link Type
7229  , p_source_12            IN VARCHAR2
7230 --Reversal First Distribution Identifier
7231  , p_source_17            IN NUMBER
7232 --Reversal Second Distribution Identifier
7233  , p_source_18            IN VARCHAR2
7234 --Reversal Distribution Link Type
7235  , p_source_19            IN VARCHAR2
7236 --Cashflow Direction
7237  , p_source_22            IN VARCHAR2
7238  , p_source_22_meaning    IN VARCHAR2
7239 --Cashflow Amount
7240  , p_source_24            IN NUMBER
7241 --Cashflow Currency
7242  , p_source_25            IN VARCHAR2
7243 --Cashflow Exchange Date
7244  , p_source_26            IN DATE
7245 --Cashflow Exchange Rate
7246  , p_source_27            IN NUMBER
7247 --Cashflow Exchange Rate Type
7248  , p_source_28            IN VARCHAR2
7249 )
7250 IS
7251 
7252 l_component_type              VARCHAR2(80);
7253 l_component_code              VARCHAR2(30);
7254 l_component_type_code         VARCHAR2(1);
7255 l_component_appl_id           INTEGER;
7256 l_amb_context_code            VARCHAR2(30);
7257 l_entity_code                 VARCHAR2(30);
7258 l_event_class_code            VARCHAR2(30);
7259 l_ae_header_id                NUMBER;
7260 l_event_type_code             VARCHAR2(30);
7261 l_line_definition_code        VARCHAR2(30);
7262 l_line_definition_owner_code  VARCHAR2(1);
7263 --
7264 -- adr variables
7265 l_segment                     VARCHAR2(30);
7266 l_ccid                        NUMBER;
7267 l_adr_transaction_coa_id      NUMBER;
7268 l_adr_accounting_coa_id       NUMBER;
7269 l_adr_flexfield_segment_code  VARCHAR2(30);
7270 l_adr_flex_value_set_id       NUMBER;
7271 l_adr_value_type_code         VARCHAR2(30);
7272 l_adr_value_combination_id    NUMBER;
7273 l_adr_value_segment_code      VARCHAR2(30);
7274 
7275 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7276 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7277 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7278 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7279 
7280 -- 4262811 Variables ------------------------------------------------------------------------------------------
7281 l_entered_amt_idx             NUMBER;
7282 l_accted_amt_idx              NUMBER;
7283 l_acc_rev_flag                VARCHAR2(1);
7284 l_accrual_line_num            NUMBER;
7285 l_tmp_amt                     NUMBER;
7286 l_acc_rev_natural_side_code   VARCHAR2(1);
7287 
7288 l_num_entries                 NUMBER;
7289 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7290 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7291 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7292 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7293 l_recog_line_1                NUMBER;
7294 l_recog_line_2                NUMBER;
7295 
7296 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7297 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7298 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7299 
7300 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7301 
7302 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7303 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7304 
7305 ---------------------------------------------------------------------------------------------------------------
7306 
7307 
7308 --
7309 -- bulk performance
7310 --
7311 l_balance_type_code           VARCHAR2(1);
7312 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7313 l_log_module                  VARCHAR2(240);
7314 
7315 --
7316 -- Upgrade strategy
7317 --
7318 l_actual_upg_option           VARCHAR2(1);
7319 l_enc_upg_option           VARCHAR2(1);
7320 
7321 --
7325       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
7322 BEGIN
7323 --
7324 IF g_log_enabled THEN
7326 END IF;
7327 --
7328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7329 
7330       trace
7331          (p_msg      => 'BEGIN of AcctLineType_20'
7332          ,p_level    => C_LEVEL_PROCEDURE
7333          ,p_module   => l_log_module);
7334 
7335 END IF;
7336 --
7337 l_component_type             := 'AMB_JLT';
7338 l_component_code             := 'BAT_RECEIPT_OFFSET_CR';
7339 l_component_type_code        := 'S';
7340 l_component_appl_id          :=  260;
7341 l_amb_context_code           := 'DEFAULT';
7342 l_entity_code                := 'CE_CASHFLOWS';
7343 l_event_class_code           := 'BAT_CLASS';
7344 l_event_type_code            := 'CE_BAT_CLEARED';
7345 l_line_definition_owner_code := 'S';
7346 l_line_definition_code       := 'BAT_CLR_DFN';
7347 --
7348 l_balance_type_code          := 'A';
7349 l_segment                     := NULL;
7350 l_ccid                        := NULL;
7351 l_adr_transaction_coa_id      := NULL;
7352 l_adr_accounting_coa_id       := NULL;
7353 l_adr_flexfield_segment_code  := NULL;
7354 l_adr_flex_value_set_id       := NULL;
7355 l_adr_value_type_code         := NULL;
7356 l_adr_value_combination_id    := NULL;
7357 l_adr_value_segment_code      := NULL;
7358 
7359 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7360 l_bflow_class_code           := '';    -- 4219869 Business Flow
7361 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7362 l_budgetary_control_flag     := 'N';
7363 
7364 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7365 l_bflow_applied_to_amt       := NULL; -- 5132302
7366 l_entered_amt_idx            := NULL;          -- 4262811
7367 l_accted_amt_idx             := NULL;          -- 4262811
7368 l_acc_rev_flag               := NULL;          -- 4262811
7369 l_accrual_line_num           := NULL;          -- 4262811
7370 l_tmp_amt                    := NULL;          -- 4262811
7371 --
7372  
7373 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7374     l_balance_type_code <> 'B' THEN
7375 IF NVL(p_source_22,'
7376 ')  =  'RECEIPT'
7377  THEN 
7378 
7379    --
7380    XLA_AE_LINES_PKG.SetNewLine;
7381 
7382    p_balance_type_code          := l_balance_type_code;
7383    -- set the flag so later we will know whether the gain loss line needs to be created
7384    
7385    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7386      p_actual_flag :='A';
7387    END IF;
7388 
7389    --
7390    -- bulk performance
7391    --
7392    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7393                                       p_header_num   => 0); -- 4262811
7394    --
7395    -- set accounting line options
7396    --
7397    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7398            p_natural_side_code          => 'C'
7399          , p_gain_or_loss_flag          => 'N'
7400          , p_gl_transfer_mode_code      => 'D'
7401          , p_acct_entry_type_code       => 'A'
7402          , p_switch_side_flag           => 'Y'
7403          , p_merge_duplicate_code       => 'N'
7404          );
7405    --
7406    l_acc_rev_natural_side_code := 'D';  -- 4262811
7407    -- 
7408    --
7409    -- set accounting line type info
7410    --
7411    xla_ae_lines_pkg.SetAcctLineType
7412       (p_component_type             => l_component_type
7413       ,p_event_type_code            => l_event_type_code
7414       ,p_line_definition_owner_code => l_line_definition_owner_code
7415       ,p_line_definition_code       => l_line_definition_code
7416       ,p_accounting_line_code       => l_component_code
7417       ,p_accounting_line_type_code  => l_component_type_code
7418       ,p_accounting_line_appl_id    => l_component_appl_id
7419       ,p_amb_context_code           => l_amb_context_code
7420       ,p_entity_code                => l_entity_code
7421       ,p_event_class_code           => l_event_class_code);
7422    --
7423    -- set accounting class
7424    --
7425    xla_ae_lines_pkg.SetAcctClass(
7426            p_accounting_class_code  => 'MISC_CASH'
7427          , p_ae_header_id           => l_ae_header_id
7428          );
7429 
7430    --
7431    -- set rounding class
7432    --
7433    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7434                       'MISC_CASH';
7435 
7436    --
7437    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7438    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7439    --
7440    -- bulk performance
7441    --
7442    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7443 
7444    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7445       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7446 
7447    -- 4955764
7448    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7449       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7450 
7451    -- 4458381 Public Sector Enh
7452    
7453    --
7454    -- set accounting attributes for the line type
7455    --
7456    l_entered_amt_idx := 5;
7457    l_accted_amt_idx  := NULL;
7458    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7459    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7460    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
7461    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
7462    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
7466    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
7463    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
7464    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
7465    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
7467    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
7468    l_rec_acct_attrs.array_num_value(5)  := p_source_24;
7469    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
7470    l_rec_acct_attrs.array_char_value(6)  := p_source_25;
7471    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
7472    l_rec_acct_attrs.array_date_value(7)  := p_source_26;
7473    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
7474    l_rec_acct_attrs.array_num_value(8)  := p_source_27;
7475    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
7476    l_rec_acct_attrs.array_char_value(9)  := p_source_28;
7477    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
7478    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
7479    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
7480    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
7481    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
7482    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
7483 
7484    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7485    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7486 
7487    ---------------------------------------------------------------------------------------------------------------
7488    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7489    ---------------------------------------------------------------------------------------------------------------
7490    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7491 
7492    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7493    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7494 
7495    IF xla_accounting_cache_pkg.GetValueChar
7496          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7497          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7498    AND l_bflow_method_code = 'PRIOR_ENTRY'
7499 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7500    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7501          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7502        )
7503    THEN
7504          xla_ae_lines_pkg.BflowUpgEntry
7505            (p_business_method_code    => l_bflow_method_code
7506            ,p_business_class_code     => l_bflow_class_code
7507            ,p_balance_type            => l_balance_type_code);
7508    ELSE
7509       NULL;
7510 -- No business flow processing for business flow method of NONE.
7511    END IF;
7512 
7513    --
7514    -- call description
7515    --
7516    -- No description or it is inherited.
7517    --
7518    -- call ADRs
7519    -- Bug 4922099
7520    --
7521    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7522         (NVL(l_actual_upg_option, 'N') = 'O') OR
7523         (NVL(l_enc_upg_option, 'N') = 'O')
7524       )
7525    THEN
7526    NULL;
7527    --
7528    --
7529    
7530   l_ccid := AcctDerRule_7(
7531            p_application_id           => p_application_id
7532          , p_ae_header_id             => l_ae_header_id 
7533 , p_source_7 => p_source_7
7534          , x_transaction_coa_id       => l_adr_transaction_coa_id
7535          , x_accounting_coa_id        => l_adr_accounting_coa_id
7536          , x_value_type_code          => l_adr_value_type_code
7537          , p_side                     => 'NA'
7538    );
7539 
7540    xla_ae_lines_pkg.set_ccid(
7541     p_code_combination_id          => l_ccid
7542   , p_value_type_code              => l_adr_value_type_code
7543   , p_transaction_coa_id           => l_adr_transaction_coa_id
7544   , p_accounting_coa_id            => l_adr_accounting_coa_id
7545   , p_adr_code                     => 'CE_OFFSET'
7546   , p_adr_type_code                => 'S'
7547   , p_component_type               => l_component_type
7548   , p_component_code               => l_component_code
7549   , p_component_type_code          => l_component_type_code
7550   , p_component_appl_id            => l_component_appl_id
7551   , p_amb_context_code             => l_amb_context_code
7552   , p_side                         => 'NA'
7553   );
7554 
7555 
7556    --
7557    --
7558    END IF;
7559    --
7560    -- Bug 4922099
7561    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7562           (NVL(l_enc_upg_option, 'N') = 'O')
7563         ) AND
7564         (l_bflow_method_code = 'PRIOR_ENTRY')
7565       )
7566    THEN
7567       IF
7568       --
7569       1 = 2
7570       --
7571       THEN
7572       xla_accounting_err_pkg.build_message
7573                                     (p_appli_s_name            => 'XLA'
7574                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7575                                     ,p_token_1                 => 'LINE_NUMBER'
7576                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7577                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7578                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7579                                                                              l_component_type
7580                                                                             ,l_component_code
7581                                                                             ,l_component_type_code
7585                                                                             ,l_event_class_code
7582                                                                             ,l_component_appl_id
7583                                                                             ,l_amb_context_code
7584                                                                             ,l_entity_code
7586                                                                            )
7587                                     ,p_token_3                 => 'OWNER'
7588                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7589                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7590                                                                           ,p_lookup_code    => l_component_type_code
7591                                                                          )
7592                                     ,p_token_4                 => 'PRODUCT_NAME'
7593                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7594                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7595                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7596                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7597                                     ,p_ae_header_id            =>  NULL
7598                                        );
7599 
7600         IF (C_LEVEL_ERROR>= g_log_level) THEN
7601                  trace
7602                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7603                       ,p_level    => C_LEVEL_ERROR
7604                       ,p_module   => l_log_module);
7605         END IF;
7606       END IF;
7607    END IF;
7608    --
7609    --
7610    ------------------------------------------------------------------------------------------------
7611    -- 4219869 Business Flow
7612    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7613    -- Prior Entry.  Currently, the following code is always generated.
7614    ------------------------------------------------------------------------------------------------
7615    XLA_AE_LINES_PKG.ValidateCurrentLine;
7616 
7617    ------------------------------------------------------------------------------------
7618    -- 4219869 Business Flow
7619    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7620    ------------------------------------------------------------------------------------
7621    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7622 
7623    ----------------------------------------------------------------------------------
7624    -- 4219869 Business Flow
7625    -- Update journal entry status -- Need to generate this within IF <condition>
7626    ----------------------------------------------------------------------------------
7627    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7628          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7629          ,p_balance_type_code => l_balance_type_code
7630          );
7631 
7632    -------------------------------------------------------------------------------------------
7633    -- 4262811 - Generate the Accrual Reversal lines
7634    -------------------------------------------------------------------------------------------
7635    BEGIN
7636       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7637                               (g_array_event(p_event_id).array_value_num('header_index'));
7638       IF l_acc_rev_flag IS NULL THEN
7639          l_acc_rev_flag := 'N';
7640       END IF;
7641    EXCEPTION
7642       WHEN OTHERS THEN
7643          l_acc_rev_flag := 'N';
7644    END;
7645    --
7646    IF (l_acc_rev_flag = 'Y') THEN
7647 
7648        -- 4645092  ------------------------------------------------------------------------------
7649        -- To allow MPA report to determine if it should generate report process
7650        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7651        ------------------------------------------------------------------------------------------
7652 
7653        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7654        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7655 
7656        --
7657        -- Update the line information that should be overwritten
7658        --
7659        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7660                                          p_header_num   => 1);
7661        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7662 
7663        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7664 
7665        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7666           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7667        END IF;
7668 
7669       --
7670       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7671       --
7672       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7673           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7674       ELSE
7675           ---------------------------------------------------------------------------------------------------
7676           -- 4262811a Switch Sign
7677           ---------------------------------------------------------------------------------------------------
7678           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7679           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7680                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7684           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7681           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7682                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7683           -- 5132302
7685                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7686 
7687       END IF;
7688 
7689       -- 4955764
7690       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7691       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7692 
7693 
7694       XLA_AE_LINES_PKG.ValidateCurrentLine;
7695       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7696 
7697       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7698                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7699                ,p_balance_type_code => l_balance_type_code);
7700 
7701    END IF;
7702 
7703    -----------------------------------------------------------------------------------------
7704    -- 4262811 Multiperiod Accounting
7705    -----------------------------------------------------------------------------------------
7706      -- No MPA option is assigned.
7707 
7708 
7709 END IF;
7710 END IF;
7711 --
7712 
7713 --
7714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7715    trace
7716       (p_msg      => 'END of AcctLineType_20'
7717       ,p_level    => C_LEVEL_PROCEDURE
7718       ,p_module   => l_log_module);
7719 END IF;
7720 --
7721 EXCEPTION
7722   WHEN xla_exceptions_pkg.application_exception THEN
7723       RAISE;
7724   WHEN OTHERS THEN
7725        xla_exceptions_pkg.raise_message
7726            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_20');
7727 END AcctLineType_20;
7728 --
7729 
7730 ---------------------------------------
7731 --
7732 -- PRIVATE FUNCTION
7733 --         AcctLineType_21
7734 --
7735 ---------------------------------------
7736 PROCEDURE AcctLineType_21 (
7737   p_application_id        IN NUMBER
7738  ,p_event_id              IN NUMBER
7739  ,p_calculate_acctd_flag  IN VARCHAR2
7740  ,p_calculate_g_l_flag    IN VARCHAR2
7741  ,p_actual_flag           IN OUT VARCHAR2
7742  ,p_balance_type_code     OUT VARCHAR2
7743  ,p_gain_or_loss_ref      OUT VARCHAR2
7744  
7745 --Cashflow Offset Account
7746  , p_source_7            IN NUMBER
7747 --Reversal Indicator
7748  , p_source_9            IN VARCHAR2
7749 --Cashflow Number
7750  , p_source_10            IN NUMBER
7751 --Cashflow History Identifier
7752  , p_source_11            IN VARCHAR2
7753 --Distribution Link Type
7754  , p_source_12            IN VARCHAR2
7755 --Reversal First Distribution Identifier
7756  , p_source_17            IN NUMBER
7757 --Reversal Second Distribution Identifier
7758  , p_source_18            IN VARCHAR2
7759 --Reversal Distribution Link Type
7760  , p_source_19            IN VARCHAR2
7761 --Cashflow Direction
7762  , p_source_22            IN VARCHAR2
7763  , p_source_22_meaning    IN VARCHAR2
7764 --Cashflow Amount
7765  , p_source_24            IN NUMBER
7766 --Cashflow Currency
7767  , p_source_25            IN VARCHAR2
7768 --Cashflow Exchange Date
7769  , p_source_26            IN DATE
7770 --Cashflow Exchange Rate
7771  , p_source_27            IN NUMBER
7772 --Cashflow Exchange Rate Type
7773  , p_source_28            IN VARCHAR2
7774 )
7775 IS
7776 
7777 l_component_type              VARCHAR2(80);
7778 l_component_code              VARCHAR2(30);
7779 l_component_type_code         VARCHAR2(1);
7780 l_component_appl_id           INTEGER;
7781 l_amb_context_code            VARCHAR2(30);
7782 l_entity_code                 VARCHAR2(30);
7783 l_event_class_code            VARCHAR2(30);
7784 l_ae_header_id                NUMBER;
7785 l_event_type_code             VARCHAR2(30);
7786 l_line_definition_code        VARCHAR2(30);
7787 l_line_definition_owner_code  VARCHAR2(1);
7788 --
7789 -- adr variables
7790 l_segment                     VARCHAR2(30);
7791 l_ccid                        NUMBER;
7792 l_adr_transaction_coa_id      NUMBER;
7793 l_adr_accounting_coa_id       NUMBER;
7794 l_adr_flexfield_segment_code  VARCHAR2(30);
7795 l_adr_flex_value_set_id       NUMBER;
7796 l_adr_value_type_code         VARCHAR2(30);
7797 l_adr_value_combination_id    NUMBER;
7798 l_adr_value_segment_code      VARCHAR2(30);
7799 
7800 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7801 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7802 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7803 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7804 
7805 -- 4262811 Variables ------------------------------------------------------------------------------------------
7806 l_entered_amt_idx             NUMBER;
7807 l_accted_amt_idx              NUMBER;
7808 l_acc_rev_flag                VARCHAR2(1);
7809 l_accrual_line_num            NUMBER;
7810 l_tmp_amt                     NUMBER;
7811 l_acc_rev_natural_side_code   VARCHAR2(1);
7812 
7813 l_num_entries                 NUMBER;
7814 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7815 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7816 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7817 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7818 l_recog_line_1                NUMBER;
7819 l_recog_line_2                NUMBER;
7820 
7821 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7822 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7826 
7823 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7824 
7825 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7827 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7828 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7829 
7830 ---------------------------------------------------------------------------------------------------------------
7831 
7832 
7833 --
7834 -- bulk performance
7835 --
7836 l_balance_type_code           VARCHAR2(1);
7837 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7838 l_log_module                  VARCHAR2(240);
7839 
7840 --
7841 -- Upgrade strategy
7842 --
7843 l_actual_upg_option           VARCHAR2(1);
7844 l_enc_upg_option           VARCHAR2(1);
7845 
7846 --
7847 BEGIN
7848 --
7849 IF g_log_enabled THEN
7850       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
7851 END IF;
7852 --
7853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7854 
7855       trace
7856          (p_msg      => 'BEGIN of AcctLineType_21'
7857          ,p_level    => C_LEVEL_PROCEDURE
7858          ,p_module   => l_log_module);
7859 
7860 END IF;
7861 --
7862 l_component_type             := 'AMB_JLT';
7863 l_component_code             := 'BAT_RECEIPT_OFFSET_CR';
7864 l_component_type_code        := 'S';
7865 l_component_appl_id          :=  260;
7866 l_amb_context_code           := 'DEFAULT';
7867 l_entity_code                := 'CE_CASHFLOWS';
7868 l_event_class_code           := 'BAT_CLASS';
7869 l_event_type_code            := 'CE_BAT_UNCLEARED';
7870 l_line_definition_owner_code := 'S';
7871 l_line_definition_code       := 'BAT_UNCLR_DEFN';
7872 --
7873 l_balance_type_code          := 'A';
7874 l_segment                     := NULL;
7875 l_ccid                        := NULL;
7876 l_adr_transaction_coa_id      := NULL;
7877 l_adr_accounting_coa_id       := NULL;
7878 l_adr_flexfield_segment_code  := NULL;
7879 l_adr_flex_value_set_id       := NULL;
7880 l_adr_value_type_code         := NULL;
7881 l_adr_value_combination_id    := NULL;
7882 l_adr_value_segment_code      := NULL;
7883 
7884 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7885 l_bflow_class_code           := '';    -- 4219869 Business Flow
7886 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7887 l_budgetary_control_flag     := 'N';
7888 
7889 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7890 l_bflow_applied_to_amt       := NULL; -- 5132302
7891 l_entered_amt_idx            := NULL;          -- 4262811
7892 l_accted_amt_idx             := NULL;          -- 4262811
7893 l_acc_rev_flag               := NULL;          -- 4262811
7894 l_accrual_line_num           := NULL;          -- 4262811
7895 l_tmp_amt                    := NULL;          -- 4262811
7896 --
7897  
7898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7899     l_balance_type_code <> 'B' THEN
7900 IF NVL(p_source_22,'
7901 ')  =  'RECEIPT'
7902  THEN 
7903 
7904    --
7905    XLA_AE_LINES_PKG.SetNewLine;
7906 
7907    p_balance_type_code          := l_balance_type_code;
7908    -- set the flag so later we will know whether the gain loss line needs to be created
7909    
7910    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7911      p_actual_flag :='A';
7912    END IF;
7913 
7914    --
7915    -- bulk performance
7916    --
7917    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7918                                       p_header_num   => 0); -- 4262811
7919    --
7920    -- set accounting line options
7921    --
7922    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7923            p_natural_side_code          => 'C'
7924          , p_gain_or_loss_flag          => 'N'
7925          , p_gl_transfer_mode_code      => 'D'
7926          , p_acct_entry_type_code       => 'A'
7927          , p_switch_side_flag           => 'Y'
7928          , p_merge_duplicate_code       => 'N'
7929          );
7930    --
7931    l_acc_rev_natural_side_code := 'D';  -- 4262811
7932    -- 
7933    --
7934    -- set accounting line type info
7935    --
7936    xla_ae_lines_pkg.SetAcctLineType
7937       (p_component_type             => l_component_type
7938       ,p_event_type_code            => l_event_type_code
7939       ,p_line_definition_owner_code => l_line_definition_owner_code
7940       ,p_line_definition_code       => l_line_definition_code
7941       ,p_accounting_line_code       => l_component_code
7942       ,p_accounting_line_type_code  => l_component_type_code
7943       ,p_accounting_line_appl_id    => l_component_appl_id
7944       ,p_amb_context_code           => l_amb_context_code
7945       ,p_entity_code                => l_entity_code
7946       ,p_event_class_code           => l_event_class_code);
7947    --
7948    -- set accounting class
7949    --
7950    xla_ae_lines_pkg.SetAcctClass(
7951            p_accounting_class_code  => 'MISC_CASH'
7952          , p_ae_header_id           => l_ae_header_id
7953          );
7954 
7955    --
7956    -- set rounding class
7957    --
7958    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7959                       'MISC_CASH';
7960 
7961    --
7962    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7963    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7964    --
7965    -- bulk performance
7966    --
7967    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7968 
7972    -- 4955764
7969    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7970       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7971 
7973    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7975 
7976    -- 4458381 Public Sector Enh
7977    
7978    --
7979    -- set accounting attributes for the line type
7980    --
7981    l_entered_amt_idx := 5;
7982    l_accted_amt_idx  := NULL;
7983    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7984    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7985    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
7986    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
7987    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
7988    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
7989    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
7990    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
7991    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
7992    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
7993    l_rec_acct_attrs.array_num_value(5)  := p_source_24;
7994    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
7995    l_rec_acct_attrs.array_char_value(6)  := p_source_25;
7996    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
7997    l_rec_acct_attrs.array_date_value(7)  := p_source_26;
7998    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
7999    l_rec_acct_attrs.array_num_value(8)  := p_source_27;
8000    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
8001    l_rec_acct_attrs.array_char_value(9)  := p_source_28;
8002    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
8003    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
8004    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
8005    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
8006    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
8007    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
8008 
8009    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8010    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8011 
8012    ---------------------------------------------------------------------------------------------------------------
8013    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8014    ---------------------------------------------------------------------------------------------------------------
8015    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8016 
8017    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8018    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8019 
8020    IF xla_accounting_cache_pkg.GetValueChar
8021          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8022          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8023    AND l_bflow_method_code = 'PRIOR_ENTRY'
8024 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8025    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8026          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8027        )
8028    THEN
8029          xla_ae_lines_pkg.BflowUpgEntry
8030            (p_business_method_code    => l_bflow_method_code
8031            ,p_business_class_code     => l_bflow_class_code
8032            ,p_balance_type            => l_balance_type_code);
8033    ELSE
8034       NULL;
8035 -- No business flow processing for business flow method of NONE.
8036    END IF;
8037 
8038    --
8039    -- call description
8040    --
8041    -- No description or it is inherited.
8042    --
8043    -- call ADRs
8044    -- Bug 4922099
8045    --
8046    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8047         (NVL(l_actual_upg_option, 'N') = 'O') OR
8048         (NVL(l_enc_upg_option, 'N') = 'O')
8049       )
8050    THEN
8051    NULL;
8052    --
8053    --
8054    
8055   l_ccid := AcctDerRule_7(
8056            p_application_id           => p_application_id
8057          , p_ae_header_id             => l_ae_header_id 
8058 , p_source_7 => p_source_7
8059          , x_transaction_coa_id       => l_adr_transaction_coa_id
8060          , x_accounting_coa_id        => l_adr_accounting_coa_id
8061          , x_value_type_code          => l_adr_value_type_code
8062          , p_side                     => 'NA'
8063    );
8064 
8065    xla_ae_lines_pkg.set_ccid(
8066     p_code_combination_id          => l_ccid
8067   , p_value_type_code              => l_adr_value_type_code
8068   , p_transaction_coa_id           => l_adr_transaction_coa_id
8069   , p_accounting_coa_id            => l_adr_accounting_coa_id
8070   , p_adr_code                     => 'CE_OFFSET'
8071   , p_adr_type_code                => 'S'
8072   , p_component_type               => l_component_type
8073   , p_component_code               => l_component_code
8074   , p_component_type_code          => l_component_type_code
8075   , p_component_appl_id            => l_component_appl_id
8076   , p_amb_context_code             => l_amb_context_code
8077   , p_side                         => 'NA'
8078   );
8079 
8080 
8081    --
8082    --
8083    END IF;
8084    --
8085    -- Bug 4922099
8086    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8087           (NVL(l_enc_upg_option, 'N') = 'O')
8088         ) AND
8089         (l_bflow_method_code = 'PRIOR_ENTRY')
8090       )
8091    THEN
8092       IF
8093       --
8097       xla_accounting_err_pkg.build_message
8094       1 = 2
8095       --
8096       THEN
8098                                     (p_appli_s_name            => 'XLA'
8099                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8100                                     ,p_token_1                 => 'LINE_NUMBER'
8101                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8102                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8103                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8104                                                                              l_component_type
8105                                                                             ,l_component_code
8106                                                                             ,l_component_type_code
8107                                                                             ,l_component_appl_id
8108                                                                             ,l_amb_context_code
8109                                                                             ,l_entity_code
8110                                                                             ,l_event_class_code
8111                                                                            )
8112                                     ,p_token_3                 => 'OWNER'
8113                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8114                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8115                                                                           ,p_lookup_code    => l_component_type_code
8116                                                                          )
8117                                     ,p_token_4                 => 'PRODUCT_NAME'
8118                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8119                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8120                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8121                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8122                                     ,p_ae_header_id            =>  NULL
8123                                        );
8124 
8125         IF (C_LEVEL_ERROR>= g_log_level) THEN
8126                  trace
8127                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8128                       ,p_level    => C_LEVEL_ERROR
8129                       ,p_module   => l_log_module);
8130         END IF;
8131       END IF;
8132    END IF;
8133    --
8134    --
8135    ------------------------------------------------------------------------------------------------
8136    -- 4219869 Business Flow
8137    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8138    -- Prior Entry.  Currently, the following code is always generated.
8139    ------------------------------------------------------------------------------------------------
8140    XLA_AE_LINES_PKG.ValidateCurrentLine;
8141 
8142    ------------------------------------------------------------------------------------
8143    -- 4219869 Business Flow
8144    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8145    ------------------------------------------------------------------------------------
8146    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8147 
8148    ----------------------------------------------------------------------------------
8149    -- 4219869 Business Flow
8150    -- Update journal entry status -- Need to generate this within IF <condition>
8151    ----------------------------------------------------------------------------------
8152    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8153          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8154          ,p_balance_type_code => l_balance_type_code
8155          );
8156 
8157    -------------------------------------------------------------------------------------------
8158    -- 4262811 - Generate the Accrual Reversal lines
8159    -------------------------------------------------------------------------------------------
8160    BEGIN
8161       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8162                               (g_array_event(p_event_id).array_value_num('header_index'));
8163       IF l_acc_rev_flag IS NULL THEN
8164          l_acc_rev_flag := 'N';
8165       END IF;
8166    EXCEPTION
8167       WHEN OTHERS THEN
8168          l_acc_rev_flag := 'N';
8169    END;
8170    --
8171    IF (l_acc_rev_flag = 'Y') THEN
8172 
8173        -- 4645092  ------------------------------------------------------------------------------
8174        -- To allow MPA report to determine if it should generate report process
8175        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8176        ------------------------------------------------------------------------------------------
8177 
8178        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8179        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8180 
8181        --
8182        -- Update the line information that should be overwritten
8183        --
8184        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8185                                          p_header_num   => 1);
8186        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8187 
8188        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8189 
8190        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8191           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8192        END IF;
8193 
8194       --
8198           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8195       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8196       --
8197       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8199       ELSE
8200           ---------------------------------------------------------------------------------------------------
8201           -- 4262811a Switch Sign
8202           ---------------------------------------------------------------------------------------------------
8203           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8204           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8205                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8206           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8207                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8208           -- 5132302
8209           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8210                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8211 
8212       END IF;
8213 
8214       -- 4955764
8215       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8216       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8217 
8218 
8219       XLA_AE_LINES_PKG.ValidateCurrentLine;
8220       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8221 
8222       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8223                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8224                ,p_balance_type_code => l_balance_type_code);
8225 
8226    END IF;
8227 
8228    -----------------------------------------------------------------------------------------
8229    -- 4262811 Multiperiod Accounting
8230    -----------------------------------------------------------------------------------------
8231      -- No MPA option is assigned.
8232 
8233 
8234 END IF;
8235 END IF;
8236 --
8237 
8238 --
8239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8240    trace
8241       (p_msg      => 'END of AcctLineType_21'
8242       ,p_level    => C_LEVEL_PROCEDURE
8243       ,p_module   => l_log_module);
8244 END IF;
8245 --
8246 EXCEPTION
8247   WHEN xla_exceptions_pkg.application_exception THEN
8248       RAISE;
8249   WHEN OTHERS THEN
8250        xla_exceptions_pkg.raise_message
8251            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_21');
8252 END AcctLineType_21;
8253 --
8254 
8255 ---------------------------------------
8256 --
8257 -- PRIVATE FUNCTION
8258 --         AcctLineType_22
8259 --
8260 ---------------------------------------
8261 PROCEDURE AcctLineType_22 (
8262   p_application_id        IN NUMBER
8263  ,p_event_id              IN NUMBER
8264  ,p_calculate_acctd_flag  IN VARCHAR2
8265  ,p_calculate_g_l_flag    IN VARCHAR2
8266  ,p_actual_flag           IN OUT VARCHAR2
8267  ,p_balance_type_code     OUT VARCHAR2
8268  ,p_gain_or_loss_ref      OUT VARCHAR2
8269  
8270 --Cashflow Description
8271  , p_source_2            IN VARCHAR2
8272 --Cashflow Bank Account Cash Account
8273  , p_source_5            IN NUMBER
8274 --Reversal Indicator
8275  , p_source_9            IN VARCHAR2
8276 --Cashflow Number
8277  , p_source_10            IN NUMBER
8278 --Cashflow History Identifier
8279  , p_source_11            IN VARCHAR2
8280 --Distribution Link Type
8281  , p_source_12            IN VARCHAR2
8282 --Cashflow Bank Account Currency
8283  , p_source_13            IN VARCHAR2
8284 --Cashflow Cleared Exchange Rate Date
8285  , p_source_14            IN DATE
8286 --Cashflow Cleared Exchange Rate
8287  , p_source_15            IN NUMBER
8288 --Cashflow Cleared Exchange Rate Type
8289  , p_source_16            IN VARCHAR2
8290 --Reversal First Distribution Identifier
8291  , p_source_17            IN NUMBER
8292 --Reversal Second Distribution Identifier
8293  , p_source_18            IN VARCHAR2
8294 --Reversal Distribution Link Type
8295  , p_source_19            IN VARCHAR2
8296 --Cashflow Direction
8297  , p_source_22            IN VARCHAR2
8298  , p_source_22_meaning    IN VARCHAR2
8299 --Cashflow Cleared Amount
8300  , p_source_23            IN NUMBER
8301 )
8302 IS
8303 
8304 l_component_type              VARCHAR2(80);
8305 l_component_code              VARCHAR2(30);
8306 l_component_type_code         VARCHAR2(1);
8307 l_component_appl_id           INTEGER;
8308 l_amb_context_code            VARCHAR2(30);
8309 l_entity_code                 VARCHAR2(30);
8310 l_event_class_code            VARCHAR2(30);
8311 l_ae_header_id                NUMBER;
8312 l_event_type_code             VARCHAR2(30);
8313 l_line_definition_code        VARCHAR2(30);
8314 l_line_definition_owner_code  VARCHAR2(1);
8315 --
8316 -- adr variables
8317 l_segment                     VARCHAR2(30);
8318 l_ccid                        NUMBER;
8319 l_adr_transaction_coa_id      NUMBER;
8320 l_adr_accounting_coa_id       NUMBER;
8321 l_adr_flexfield_segment_code  VARCHAR2(30);
8322 l_adr_flex_value_set_id       NUMBER;
8323 l_adr_value_type_code         VARCHAR2(30);
8324 l_adr_value_combination_id    NUMBER;
8325 l_adr_value_segment_code      VARCHAR2(30);
8326 
8327 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8328 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8329 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8330 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8334 l_accted_amt_idx              NUMBER;
8331 
8332 -- 4262811 Variables ------------------------------------------------------------------------------------------
8333 l_entered_amt_idx             NUMBER;
8335 l_acc_rev_flag                VARCHAR2(1);
8336 l_accrual_line_num            NUMBER;
8337 l_tmp_amt                     NUMBER;
8338 l_acc_rev_natural_side_code   VARCHAR2(1);
8339 
8340 l_num_entries                 NUMBER;
8341 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8342 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8343 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8344 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8345 l_recog_line_1                NUMBER;
8346 l_recog_line_2                NUMBER;
8347 
8348 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8349 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8350 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8351 
8352 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8353 
8354 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8355 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8356 
8357 ---------------------------------------------------------------------------------------------------------------
8358 
8359 
8360 --
8361 -- bulk performance
8362 --
8363 l_balance_type_code           VARCHAR2(1);
8364 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8365 l_log_module                  VARCHAR2(240);
8366 
8367 --
8368 -- Upgrade strategy
8369 --
8370 l_actual_upg_option           VARCHAR2(1);
8371 l_enc_upg_option           VARCHAR2(1);
8372 
8373 --
8374 BEGIN
8375 --
8376 IF g_log_enabled THEN
8377       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
8378 END IF;
8379 --
8380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8381 
8382       trace
8383          (p_msg      => 'BEGIN of AcctLineType_22'
8384          ,p_level    => C_LEVEL_PROCEDURE
8385          ,p_module   => l_log_module);
8386 
8387 END IF;
8388 --
8389 l_component_type             := 'AMB_JLT';
8390 l_component_code             := 'BSL_PAYMENT_CASH_CR';
8391 l_component_type_code        := 'S';
8392 l_component_appl_id          :=  260;
8393 l_amb_context_code           := 'DEFAULT';
8394 l_entity_code                := 'CE_CASHFLOWS';
8395 l_event_class_code           := 'STMT_CLASS';
8396 l_event_type_code            := 'STMT_CLASS_ALL';
8397 l_line_definition_owner_code := 'S';
8398 l_line_definition_code       := 'BSL_LINES_DEFN';
8399 --
8400 l_balance_type_code          := 'A';
8401 l_segment                     := NULL;
8402 l_ccid                        := NULL;
8403 l_adr_transaction_coa_id      := NULL;
8404 l_adr_accounting_coa_id       := NULL;
8405 l_adr_flexfield_segment_code  := NULL;
8406 l_adr_flex_value_set_id       := NULL;
8407 l_adr_value_type_code         := NULL;
8408 l_adr_value_combination_id    := NULL;
8409 l_adr_value_segment_code      := NULL;
8410 
8411 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8412 l_bflow_class_code           := '';    -- 4219869 Business Flow
8413 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8414 l_budgetary_control_flag     := 'N';
8415 
8416 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8417 l_bflow_applied_to_amt       := NULL; -- 5132302
8418 l_entered_amt_idx            := NULL;          -- 4262811
8419 l_accted_amt_idx             := NULL;          -- 4262811
8420 l_acc_rev_flag               := NULL;          -- 4262811
8421 l_accrual_line_num           := NULL;          -- 4262811
8422 l_tmp_amt                    := NULL;          -- 4262811
8423 --
8424  
8425 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8426     l_balance_type_code <> 'B' THEN
8427 IF NVL(p_source_22,'
8428 ')  =  'PAYMENT'
8429  THEN 
8430 
8431    --
8432    XLA_AE_LINES_PKG.SetNewLine;
8433 
8434    p_balance_type_code          := l_balance_type_code;
8435    -- set the flag so later we will know whether the gain loss line needs to be created
8436    
8437    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8438      p_actual_flag :='A';
8439    END IF;
8440 
8441    --
8442    -- bulk performance
8443    --
8444    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8445                                       p_header_num   => 0); -- 4262811
8446    --
8447    -- set accounting line options
8448    --
8449    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8450            p_natural_side_code          => 'C'
8451          , p_gain_or_loss_flag          => 'N'
8452          , p_gl_transfer_mode_code      => 'D'
8453          , p_acct_entry_type_code       => 'A'
8454          , p_switch_side_flag           => 'Y'
8455          , p_merge_duplicate_code       => 'N'
8456          );
8457    --
8458    l_acc_rev_natural_side_code := 'D';  -- 4262811
8459    -- 
8460    --
8461    -- set accounting line type info
8462    --
8463    xla_ae_lines_pkg.SetAcctLineType
8464       (p_component_type             => l_component_type
8465       ,p_event_type_code            => l_event_type_code
8466       ,p_line_definition_owner_code => l_line_definition_owner_code
8467       ,p_line_definition_code       => l_line_definition_code
8468       ,p_accounting_line_code       => l_component_code
8469       ,p_accounting_line_type_code  => l_component_type_code
8470       ,p_accounting_line_appl_id    => l_component_appl_id
8471       ,p_amb_context_code           => l_amb_context_code
8475    -- set accounting class
8472       ,p_entity_code                => l_entity_code
8473       ,p_event_class_code           => l_event_class_code);
8474    --
8476    --
8477    xla_ae_lines_pkg.SetAcctClass(
8478            p_accounting_class_code  => 'CASH'
8479          , p_ae_header_id           => l_ae_header_id
8480          );
8481 
8482    --
8483    -- set rounding class
8484    --
8485    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8486                       'CASH';
8487 
8488    --
8489    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8490    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8491    --
8492    -- bulk performance
8493    --
8494    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8495 
8496    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8497       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8498 
8499    -- 4955764
8500    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8501       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8502 
8503    -- 4458381 Public Sector Enh
8504    
8505    --
8506    -- set accounting attributes for the line type
8507    --
8508    l_entered_amt_idx := 5;
8509    l_accted_amt_idx  := NULL;
8510    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8511    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8512    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
8513    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
8514    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
8515    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
8516    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
8517    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
8518    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
8519    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
8520    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
8521    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
8522    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
8523    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
8524    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
8525    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
8526    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
8527    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
8528    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
8529    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
8530    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
8531    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
8532    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
8533    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
8534    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
8535 
8536    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8537    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8538 
8539    ---------------------------------------------------------------------------------------------------------------
8540    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8541    ---------------------------------------------------------------------------------------------------------------
8542    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8543 
8544    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8545    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8546 
8547    IF xla_accounting_cache_pkg.GetValueChar
8548          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8549          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8550    AND l_bflow_method_code = 'PRIOR_ENTRY'
8551 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8552    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8553          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8554        )
8555    THEN
8556          xla_ae_lines_pkg.BflowUpgEntry
8557            (p_business_method_code    => l_bflow_method_code
8558            ,p_business_class_code     => l_bflow_class_code
8559            ,p_balance_type            => l_balance_type_code);
8560    ELSE
8561       NULL;
8562 -- No business flow processing for business flow method of NONE.
8563    END IF;
8564 
8565    --
8566    -- call description
8567    --
8568    
8569 xla_ae_lines_pkg.SetLineDescription(
8570    p_ae_header_id => l_ae_header_id
8571   ,p_description  => Description_2 (
8572      p_application_id         => p_application_id
8573    , p_ae_header_id           => l_ae_header_id 
8574 , p_source_2 => p_source_2
8575    )
8576 );
8577 
8578 
8579    --
8580    -- call ADRs
8581    -- Bug 4922099
8582    --
8583    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8584         (NVL(l_actual_upg_option, 'N') = 'O') OR
8585         (NVL(l_enc_upg_option, 'N') = 'O')
8586       )
8587    THEN
8588    NULL;
8589    --
8590    --
8591    
8592   l_ccid := AcctDerRule_5(
8593            p_application_id           => p_application_id
8594          , p_ae_header_id             => l_ae_header_id 
8595 , p_source_5 => p_source_5
8596          , x_transaction_coa_id       => l_adr_transaction_coa_id
8600    );
8597          , x_accounting_coa_id        => l_adr_accounting_coa_id
8598          , x_value_type_code          => l_adr_value_type_code
8599          , p_side                     => 'NA'
8601 
8602    xla_ae_lines_pkg.set_ccid(
8603     p_code_combination_id          => l_ccid
8604   , p_value_type_code              => l_adr_value_type_code
8605   , p_transaction_coa_id           => l_adr_transaction_coa_id
8606   , p_accounting_coa_id            => l_adr_accounting_coa_id
8607   , p_adr_code                     => 'CE_CASH'
8608   , p_adr_type_code                => 'S'
8609   , p_component_type               => l_component_type
8610   , p_component_code               => l_component_code
8611   , p_component_type_code          => l_component_type_code
8612   , p_component_appl_id            => l_component_appl_id
8613   , p_amb_context_code             => l_amb_context_code
8614   , p_side                         => 'NA'
8615   );
8616 
8617 
8618    --
8619    --
8620    END IF;
8621    --
8622    -- Bug 4922099
8623    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8624           (NVL(l_enc_upg_option, 'N') = 'O')
8625         ) AND
8626         (l_bflow_method_code = 'PRIOR_ENTRY')
8627       )
8628    THEN
8629       IF
8630       --
8631       1 = 2
8632       --
8633       THEN
8634       xla_accounting_err_pkg.build_message
8635                                     (p_appli_s_name            => 'XLA'
8636                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8637                                     ,p_token_1                 => 'LINE_NUMBER'
8638                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8639                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8640                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8641                                                                              l_component_type
8642                                                                             ,l_component_code
8643                                                                             ,l_component_type_code
8644                                                                             ,l_component_appl_id
8645                                                                             ,l_amb_context_code
8646                                                                             ,l_entity_code
8647                                                                             ,l_event_class_code
8648                                                                            )
8649                                     ,p_token_3                 => 'OWNER'
8650                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8651                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8652                                                                           ,p_lookup_code    => l_component_type_code
8653                                                                          )
8654                                     ,p_token_4                 => 'PRODUCT_NAME'
8655                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8656                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8657                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8658                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8659                                     ,p_ae_header_id            =>  NULL
8660                                        );
8661 
8662         IF (C_LEVEL_ERROR>= g_log_level) THEN
8663                  trace
8664                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8665                       ,p_level    => C_LEVEL_ERROR
8666                       ,p_module   => l_log_module);
8667         END IF;
8668       END IF;
8669    END IF;
8670    --
8671    --
8672    ------------------------------------------------------------------------------------------------
8673    -- 4219869 Business Flow
8674    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8675    -- Prior Entry.  Currently, the following code is always generated.
8676    ------------------------------------------------------------------------------------------------
8677    XLA_AE_LINES_PKG.ValidateCurrentLine;
8678 
8679    ------------------------------------------------------------------------------------
8680    -- 4219869 Business Flow
8681    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8682    ------------------------------------------------------------------------------------
8683    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8684 
8685    ----------------------------------------------------------------------------------
8686    -- 4219869 Business Flow
8687    -- Update journal entry status -- Need to generate this within IF <condition>
8688    ----------------------------------------------------------------------------------
8689    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8690          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8691          ,p_balance_type_code => l_balance_type_code
8692          );
8693 
8694    -------------------------------------------------------------------------------------------
8695    -- 4262811 - Generate the Accrual Reversal lines
8696    -------------------------------------------------------------------------------------------
8697    BEGIN
8698       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8699                               (g_array_event(p_event_id).array_value_num('header_index'));
8700       IF l_acc_rev_flag IS NULL THEN
8701          l_acc_rev_flag := 'N';
8702       END IF;
8703    EXCEPTION
8707    --
8704       WHEN OTHERS THEN
8705          l_acc_rev_flag := 'N';
8706    END;
8708    IF (l_acc_rev_flag = 'Y') THEN
8709 
8710        -- 4645092  ------------------------------------------------------------------------------
8711        -- To allow MPA report to determine if it should generate report process
8712        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8713        ------------------------------------------------------------------------------------------
8714 
8715        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8716        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8717 
8718        --
8719        -- Update the line information that should be overwritten
8720        --
8721        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8722                                          p_header_num   => 1);
8723        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8724 
8725        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8726 
8727        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8728           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8729        END IF;
8730 
8731       --
8732       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8733       --
8734       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8735           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8736       ELSE
8737           ---------------------------------------------------------------------------------------------------
8738           -- 4262811a Switch Sign
8739           ---------------------------------------------------------------------------------------------------
8740           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8741           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8742                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8743           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8744                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8745           -- 5132302
8746           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8747                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8748 
8749       END IF;
8750 
8751       -- 4955764
8752       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8753       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8754 
8755 
8756       XLA_AE_LINES_PKG.ValidateCurrentLine;
8757       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8758 
8759       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8760                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8761                ,p_balance_type_code => l_balance_type_code);
8762 
8763    END IF;
8764 
8765    -----------------------------------------------------------------------------------------
8766    -- 4262811 Multiperiod Accounting
8767    -----------------------------------------------------------------------------------------
8768      -- No MPA option is assigned.
8769 
8770 
8771 END IF;
8772 END IF;
8773 --
8774 
8775 --
8776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8777    trace
8778       (p_msg      => 'END of AcctLineType_22'
8779       ,p_level    => C_LEVEL_PROCEDURE
8780       ,p_module   => l_log_module);
8781 END IF;
8782 --
8783 EXCEPTION
8784   WHEN xla_exceptions_pkg.application_exception THEN
8785       RAISE;
8786   WHEN OTHERS THEN
8787        xla_exceptions_pkg.raise_message
8788            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_22');
8789 END AcctLineType_22;
8790 --
8791 
8792 ---------------------------------------
8793 --
8794 -- PRIVATE FUNCTION
8795 --         AcctLineType_23
8796 --
8797 ---------------------------------------
8798 PROCEDURE AcctLineType_23 (
8799   p_application_id        IN NUMBER
8800  ,p_event_id              IN NUMBER
8801  ,p_calculate_acctd_flag  IN VARCHAR2
8802  ,p_calculate_g_l_flag    IN VARCHAR2
8803  ,p_actual_flag           IN OUT VARCHAR2
8804  ,p_balance_type_code     OUT VARCHAR2
8805  ,p_gain_or_loss_ref      OUT VARCHAR2
8806  
8807 --Cashflow Description
8808  , p_source_2            IN VARCHAR2
8809 --Cashflow Offset Account
8810  , p_source_7            IN NUMBER
8811 --Reversal Indicator
8812  , p_source_9            IN VARCHAR2
8813 --Cashflow Number
8814  , p_source_10            IN NUMBER
8815 --Cashflow History Identifier
8816  , p_source_11            IN VARCHAR2
8817 --Distribution Link Type
8818  , p_source_12            IN VARCHAR2
8819 --Cashflow Bank Account Currency
8820  , p_source_13            IN VARCHAR2
8821 --Cashflow Cleared Exchange Rate Date
8822  , p_source_14            IN DATE
8823 --Cashflow Cleared Exchange Rate
8824  , p_source_15            IN NUMBER
8825 --Cashflow Cleared Exchange Rate Type
8826  , p_source_16            IN VARCHAR2
8827 --Reversal First Distribution Identifier
8828  , p_source_17            IN NUMBER
8829 --Reversal Second Distribution Identifier
8830  , p_source_18            IN VARCHAR2
8831 --Reversal Distribution Link Type
8832  , p_source_19            IN VARCHAR2
8833 --Cashflow Direction
8834  , p_source_22            IN VARCHAR2
8835  , p_source_22_meaning    IN VARCHAR2
8836 --Cashflow Cleared Amount
8837  , p_source_23            IN NUMBER
8841 l_component_type              VARCHAR2(80);
8838 )
8839 IS
8840 
8842 l_component_code              VARCHAR2(30);
8843 l_component_type_code         VARCHAR2(1);
8844 l_component_appl_id           INTEGER;
8845 l_amb_context_code            VARCHAR2(30);
8846 l_entity_code                 VARCHAR2(30);
8847 l_event_class_code            VARCHAR2(30);
8848 l_ae_header_id                NUMBER;
8849 l_event_type_code             VARCHAR2(30);
8850 l_line_definition_code        VARCHAR2(30);
8851 l_line_definition_owner_code  VARCHAR2(1);
8852 --
8853 -- adr variables
8854 l_segment                     VARCHAR2(30);
8855 l_ccid                        NUMBER;
8856 l_adr_transaction_coa_id      NUMBER;
8857 l_adr_accounting_coa_id       NUMBER;
8858 l_adr_flexfield_segment_code  VARCHAR2(30);
8859 l_adr_flex_value_set_id       NUMBER;
8860 l_adr_value_type_code         VARCHAR2(30);
8861 l_adr_value_combination_id    NUMBER;
8862 l_adr_value_segment_code      VARCHAR2(30);
8863 
8864 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8865 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8866 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8867 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8868 
8869 -- 4262811 Variables ------------------------------------------------------------------------------------------
8870 l_entered_amt_idx             NUMBER;
8871 l_accted_amt_idx              NUMBER;
8872 l_acc_rev_flag                VARCHAR2(1);
8873 l_accrual_line_num            NUMBER;
8874 l_tmp_amt                     NUMBER;
8875 l_acc_rev_natural_side_code   VARCHAR2(1);
8876 
8877 l_num_entries                 NUMBER;
8878 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8879 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8880 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8881 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8882 l_recog_line_1                NUMBER;
8883 l_recog_line_2                NUMBER;
8884 
8885 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8886 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8887 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8888 
8889 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8890 
8891 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8892 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8893 
8894 ---------------------------------------------------------------------------------------------------------------
8895 
8896 
8897 --
8898 -- bulk performance
8899 --
8900 l_balance_type_code           VARCHAR2(1);
8901 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8902 l_log_module                  VARCHAR2(240);
8903 
8904 --
8905 -- Upgrade strategy
8906 --
8907 l_actual_upg_option           VARCHAR2(1);
8908 l_enc_upg_option           VARCHAR2(1);
8909 
8910 --
8911 BEGIN
8912 --
8913 IF g_log_enabled THEN
8914       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
8915 END IF;
8916 --
8917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8918 
8919       trace
8920          (p_msg      => 'BEGIN of AcctLineType_23'
8921          ,p_level    => C_LEVEL_PROCEDURE
8922          ,p_module   => l_log_module);
8923 
8924 END IF;
8925 --
8926 l_component_type             := 'AMB_JLT';
8927 l_component_code             := 'BSL_PAYMENT_OFFSET_DR';
8928 l_component_type_code        := 'S';
8929 l_component_appl_id          :=  260;
8930 l_amb_context_code           := 'DEFAULT';
8931 l_entity_code                := 'CE_CASHFLOWS';
8932 l_event_class_code           := 'STMT_CLASS';
8933 l_event_type_code            := 'STMT_CLASS_ALL';
8934 l_line_definition_owner_code := 'S';
8935 l_line_definition_code       := 'BSL_LINES_DEFN';
8936 --
8937 l_balance_type_code          := 'A';
8938 l_segment                     := NULL;
8939 l_ccid                        := NULL;
8940 l_adr_transaction_coa_id      := NULL;
8941 l_adr_accounting_coa_id       := NULL;
8942 l_adr_flexfield_segment_code  := NULL;
8943 l_adr_flex_value_set_id       := NULL;
8944 l_adr_value_type_code         := NULL;
8945 l_adr_value_combination_id    := NULL;
8946 l_adr_value_segment_code      := NULL;
8947 
8948 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8949 l_bflow_class_code           := '';    -- 4219869 Business Flow
8950 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8951 l_budgetary_control_flag     := 'N';
8952 
8953 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8954 l_bflow_applied_to_amt       := NULL; -- 5132302
8955 l_entered_amt_idx            := NULL;          -- 4262811
8956 l_accted_amt_idx             := NULL;          -- 4262811
8957 l_acc_rev_flag               := NULL;          -- 4262811
8958 l_accrual_line_num           := NULL;          -- 4262811
8959 l_tmp_amt                    := NULL;          -- 4262811
8960 --
8961  
8962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8963     l_balance_type_code <> 'B' THEN
8964 IF NVL(p_source_22,'
8965 ')  =  'PAYMENT'
8966  THEN 
8967 
8968    --
8969    XLA_AE_LINES_PKG.SetNewLine;
8970 
8971    p_balance_type_code          := l_balance_type_code;
8972    -- set the flag so later we will know whether the gain loss line needs to be created
8973    
8974    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8975      p_actual_flag :='A';
8976    END IF;
8977 
8978    --
8979    -- bulk performance
8980    --
8984    -- set accounting line options
8981    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8982                                       p_header_num   => 0); -- 4262811
8983    --
8985    --
8986    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8987            p_natural_side_code          => 'D'
8988          , p_gain_or_loss_flag          => 'N'
8989          , p_gl_transfer_mode_code      => 'D'
8990          , p_acct_entry_type_code       => 'A'
8991          , p_switch_side_flag           => 'Y'
8992          , p_merge_duplicate_code       => 'N'
8993          );
8994    --
8995    l_acc_rev_natural_side_code := 'C';  -- 4262811
8996    -- 
8997    --
8998    -- set accounting line type info
8999    --
9000    xla_ae_lines_pkg.SetAcctLineType
9001       (p_component_type             => l_component_type
9002       ,p_event_type_code            => l_event_type_code
9003       ,p_line_definition_owner_code => l_line_definition_owner_code
9004       ,p_line_definition_code       => l_line_definition_code
9005       ,p_accounting_line_code       => l_component_code
9006       ,p_accounting_line_type_code  => l_component_type_code
9007       ,p_accounting_line_appl_id    => l_component_appl_id
9008       ,p_amb_context_code           => l_amb_context_code
9009       ,p_entity_code                => l_entity_code
9010       ,p_event_class_code           => l_event_class_code);
9011    --
9012    -- set accounting class
9013    --
9014    xla_ae_lines_pkg.SetAcctClass(
9015            p_accounting_class_code  => 'MISCELLANEOUS EXPENSE'
9016          , p_ae_header_id           => l_ae_header_id
9017          );
9018 
9019    --
9020    -- set rounding class
9021    --
9022    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9023                       'CASH';
9024 
9025    --
9026    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9027    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9028    --
9029    -- bulk performance
9030    --
9031    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9032 
9033    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9034       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9035 
9036    -- 4955764
9037    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9038       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9039 
9040    -- 4458381 Public Sector Enh
9041    
9042    --
9043    -- set accounting attributes for the line type
9044    --
9045    l_entered_amt_idx := 5;
9046    l_accted_amt_idx  := NULL;
9047    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9048    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9049    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
9050    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
9051    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
9052    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
9053    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
9054    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
9055    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
9056    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
9057    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
9058    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
9059    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
9060    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
9061    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
9062    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
9063    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
9064    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
9065    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
9066    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
9067    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
9068    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
9069    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
9070    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
9071    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
9072 
9073    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9074    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9075 
9076    ---------------------------------------------------------------------------------------------------------------
9077    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9078    ---------------------------------------------------------------------------------------------------------------
9079    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9080 
9081    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9082    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9083 
9084    IF xla_accounting_cache_pkg.GetValueChar
9085          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9086          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9087    AND l_bflow_method_code = 'PRIOR_ENTRY'
9088 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9089    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9090          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9091        )
9092    THEN
9093          xla_ae_lines_pkg.BflowUpgEntry
9094            (p_business_method_code    => l_bflow_method_code
9098       NULL;
9095            ,p_business_class_code     => l_bflow_class_code
9096            ,p_balance_type            => l_balance_type_code);
9097    ELSE
9099 -- No business flow processing for business flow method of NONE.
9100    END IF;
9101 
9102    --
9103    -- call description
9104    --
9105    
9106 xla_ae_lines_pkg.SetLineDescription(
9107    p_ae_header_id => l_ae_header_id
9108   ,p_description  => Description_2 (
9109      p_application_id         => p_application_id
9110    , p_ae_header_id           => l_ae_header_id 
9111 , p_source_2 => p_source_2
9112    )
9113 );
9114 
9115 
9116    --
9117    -- call ADRs
9118    -- Bug 4922099
9119    --
9120    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9121         (NVL(l_actual_upg_option, 'N') = 'O') OR
9122         (NVL(l_enc_upg_option, 'N') = 'O')
9123       )
9124    THEN
9125    NULL;
9126    --
9127    --
9128    
9129   l_ccid := AcctDerRule_7(
9130            p_application_id           => p_application_id
9131          , p_ae_header_id             => l_ae_header_id 
9132 , p_source_7 => p_source_7
9133          , x_transaction_coa_id       => l_adr_transaction_coa_id
9134          , x_accounting_coa_id        => l_adr_accounting_coa_id
9135          , x_value_type_code          => l_adr_value_type_code
9136          , p_side                     => 'NA'
9137    );
9138 
9139    xla_ae_lines_pkg.set_ccid(
9140     p_code_combination_id          => l_ccid
9141   , p_value_type_code              => l_adr_value_type_code
9142   , p_transaction_coa_id           => l_adr_transaction_coa_id
9143   , p_accounting_coa_id            => l_adr_accounting_coa_id
9144   , p_adr_code                     => 'CE_OFFSET'
9145   , p_adr_type_code                => 'S'
9146   , p_component_type               => l_component_type
9147   , p_component_code               => l_component_code
9148   , p_component_type_code          => l_component_type_code
9149   , p_component_appl_id            => l_component_appl_id
9150   , p_amb_context_code             => l_amb_context_code
9151   , p_side                         => 'NA'
9152   );
9153 
9154 
9155    --
9156    --
9157    END IF;
9158    --
9159    -- Bug 4922099
9160    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9161           (NVL(l_enc_upg_option, 'N') = 'O')
9162         ) AND
9163         (l_bflow_method_code = 'PRIOR_ENTRY')
9164       )
9165    THEN
9166       IF
9167       --
9168       1 = 2
9169       --
9170       THEN
9171       xla_accounting_err_pkg.build_message
9172                                     (p_appli_s_name            => 'XLA'
9173                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9174                                     ,p_token_1                 => 'LINE_NUMBER'
9175                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9176                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9177                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9178                                                                              l_component_type
9179                                                                             ,l_component_code
9180                                                                             ,l_component_type_code
9181                                                                             ,l_component_appl_id
9182                                                                             ,l_amb_context_code
9183                                                                             ,l_entity_code
9184                                                                             ,l_event_class_code
9185                                                                            )
9186                                     ,p_token_3                 => 'OWNER'
9187                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9188                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9189                                                                           ,p_lookup_code    => l_component_type_code
9190                                                                          )
9191                                     ,p_token_4                 => 'PRODUCT_NAME'
9192                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9193                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9194                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9195                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9196                                     ,p_ae_header_id            =>  NULL
9197                                        );
9198 
9199         IF (C_LEVEL_ERROR>= g_log_level) THEN
9200                  trace
9201                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9202                       ,p_level    => C_LEVEL_ERROR
9203                       ,p_module   => l_log_module);
9204         END IF;
9205       END IF;
9206    END IF;
9207    --
9208    --
9209    ------------------------------------------------------------------------------------------------
9210    -- 4219869 Business Flow
9211    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9212    -- Prior Entry.  Currently, the following code is always generated.
9213    ------------------------------------------------------------------------------------------------
9214    XLA_AE_LINES_PKG.ValidateCurrentLine;
9215 
9216    ------------------------------------------------------------------------------------
9217    -- 4219869 Business Flow
9221 
9218    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9219    ------------------------------------------------------------------------------------
9220    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9222    ----------------------------------------------------------------------------------
9223    -- 4219869 Business Flow
9224    -- Update journal entry status -- Need to generate this within IF <condition>
9225    ----------------------------------------------------------------------------------
9226    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9227          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9228          ,p_balance_type_code => l_balance_type_code
9229          );
9230 
9231    -------------------------------------------------------------------------------------------
9232    -- 4262811 - Generate the Accrual Reversal lines
9233    -------------------------------------------------------------------------------------------
9234    BEGIN
9235       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9236                               (g_array_event(p_event_id).array_value_num('header_index'));
9237       IF l_acc_rev_flag IS NULL THEN
9238          l_acc_rev_flag := 'N';
9239       END IF;
9240    EXCEPTION
9241       WHEN OTHERS THEN
9242          l_acc_rev_flag := 'N';
9243    END;
9244    --
9245    IF (l_acc_rev_flag = 'Y') THEN
9246 
9247        -- 4645092  ------------------------------------------------------------------------------
9248        -- To allow MPA report to determine if it should generate report process
9249        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9250        ------------------------------------------------------------------------------------------
9251 
9252        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9253        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9254 
9255        --
9256        -- Update the line information that should be overwritten
9257        --
9258        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9259                                          p_header_num   => 1);
9260        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9261 
9262        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9263 
9264        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9265           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9266        END IF;
9267 
9268       --
9269       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9270       --
9271       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9272           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9273       ELSE
9274           ---------------------------------------------------------------------------------------------------
9275           -- 4262811a Switch Sign
9276           ---------------------------------------------------------------------------------------------------
9277           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9278           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9279                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9280           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9281                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9282           -- 5132302
9283           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9284                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9285 
9286       END IF;
9287 
9288       -- 4955764
9289       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9291 
9292 
9293       XLA_AE_LINES_PKG.ValidateCurrentLine;
9294       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9295 
9296       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9297                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9298                ,p_balance_type_code => l_balance_type_code);
9299 
9300    END IF;
9301 
9302    -----------------------------------------------------------------------------------------
9303    -- 4262811 Multiperiod Accounting
9304    -----------------------------------------------------------------------------------------
9305      -- No MPA option is assigned.
9306 
9307 
9308 END IF;
9309 END IF;
9310 --
9311 
9312 --
9313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9314    trace
9315       (p_msg      => 'END of AcctLineType_23'
9316       ,p_level    => C_LEVEL_PROCEDURE
9317       ,p_module   => l_log_module);
9318 END IF;
9319 --
9320 EXCEPTION
9321   WHEN xla_exceptions_pkg.application_exception THEN
9322       RAISE;
9323   WHEN OTHERS THEN
9324        xla_exceptions_pkg.raise_message
9325            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_23');
9326 END AcctLineType_23;
9327 --
9328 
9329 ---------------------------------------
9330 --
9331 -- PRIVATE FUNCTION
9332 --         AcctLineType_24
9333 --
9334 ---------------------------------------
9335 PROCEDURE AcctLineType_24 (
9336   p_application_id        IN NUMBER
9337  ,p_event_id              IN NUMBER
9338  ,p_calculate_acctd_flag  IN VARCHAR2
9339  ,p_calculate_g_l_flag    IN VARCHAR2
9340  ,p_actual_flag           IN OUT VARCHAR2
9341  ,p_balance_type_code     OUT VARCHAR2
9342  ,p_gain_or_loss_ref      OUT VARCHAR2
9343  
9344 --Cashflow Description
9345  , p_source_2            IN VARCHAR2
9346 --Cashflow Bank Account Cash Account
9347  , p_source_5            IN NUMBER
9348 --Reversal Indicator
9349  , p_source_9            IN VARCHAR2
9350 --Cashflow Number
9351  , p_source_10            IN NUMBER
9355  , p_source_12            IN VARCHAR2
9352 --Cashflow History Identifier
9353  , p_source_11            IN VARCHAR2
9354 --Distribution Link Type
9356 --Cashflow Bank Account Currency
9357  , p_source_13            IN VARCHAR2
9358 --Cashflow Cleared Exchange Rate Date
9359  , p_source_14            IN DATE
9360 --Cashflow Cleared Exchange Rate
9361  , p_source_15            IN NUMBER
9362 --Cashflow Cleared Exchange Rate Type
9363  , p_source_16            IN VARCHAR2
9364 --Reversal First Distribution Identifier
9365  , p_source_17            IN NUMBER
9366 --Reversal Second Distribution Identifier
9367  , p_source_18            IN VARCHAR2
9368 --Reversal Distribution Link Type
9369  , p_source_19            IN VARCHAR2
9370 --Cashflow Direction
9371  , p_source_22            IN VARCHAR2
9372  , p_source_22_meaning    IN VARCHAR2
9373 --Cashflow Cleared Amount
9374  , p_source_23            IN NUMBER
9375 )
9376 IS
9377 
9378 l_component_type              VARCHAR2(80);
9379 l_component_code              VARCHAR2(30);
9380 l_component_type_code         VARCHAR2(1);
9381 l_component_appl_id           INTEGER;
9382 l_amb_context_code            VARCHAR2(30);
9383 l_entity_code                 VARCHAR2(30);
9384 l_event_class_code            VARCHAR2(30);
9385 l_ae_header_id                NUMBER;
9386 l_event_type_code             VARCHAR2(30);
9387 l_line_definition_code        VARCHAR2(30);
9388 l_line_definition_owner_code  VARCHAR2(1);
9389 --
9390 -- adr variables
9391 l_segment                     VARCHAR2(30);
9392 l_ccid                        NUMBER;
9393 l_adr_transaction_coa_id      NUMBER;
9394 l_adr_accounting_coa_id       NUMBER;
9395 l_adr_flexfield_segment_code  VARCHAR2(30);
9396 l_adr_flex_value_set_id       NUMBER;
9397 l_adr_value_type_code         VARCHAR2(30);
9398 l_adr_value_combination_id    NUMBER;
9399 l_adr_value_segment_code      VARCHAR2(30);
9400 
9401 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9402 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9403 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9404 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9405 
9406 -- 4262811 Variables ------------------------------------------------------------------------------------------
9407 l_entered_amt_idx             NUMBER;
9408 l_accted_amt_idx              NUMBER;
9409 l_acc_rev_flag                VARCHAR2(1);
9410 l_accrual_line_num            NUMBER;
9411 l_tmp_amt                     NUMBER;
9412 l_acc_rev_natural_side_code   VARCHAR2(1);
9413 
9414 l_num_entries                 NUMBER;
9415 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9416 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9417 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9418 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9419 l_recog_line_1                NUMBER;
9420 l_recog_line_2                NUMBER;
9421 
9422 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9423 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9424 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9425 
9426 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9427 
9428 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9429 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9430 
9431 ---------------------------------------------------------------------------------------------------------------
9432 
9433 
9434 --
9435 -- bulk performance
9436 --
9437 l_balance_type_code           VARCHAR2(1);
9438 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9439 l_log_module                  VARCHAR2(240);
9440 
9441 --
9442 -- Upgrade strategy
9443 --
9444 l_actual_upg_option           VARCHAR2(1);
9445 l_enc_upg_option           VARCHAR2(1);
9446 
9447 --
9448 BEGIN
9449 --
9450 IF g_log_enabled THEN
9451       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
9452 END IF;
9453 --
9454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9455 
9456       trace
9457          (p_msg      => 'BEGIN of AcctLineType_24'
9458          ,p_level    => C_LEVEL_PROCEDURE
9459          ,p_module   => l_log_module);
9460 
9461 END IF;
9462 --
9463 l_component_type             := 'AMB_JLT';
9464 l_component_code             := 'BSL_RECEIPT_CASH_DR';
9465 l_component_type_code        := 'S';
9466 l_component_appl_id          :=  260;
9467 l_amb_context_code           := 'DEFAULT';
9468 l_entity_code                := 'CE_CASHFLOWS';
9469 l_event_class_code           := 'STMT_CLASS';
9470 l_event_type_code            := 'STMT_CLASS_ALL';
9471 l_line_definition_owner_code := 'S';
9472 l_line_definition_code       := 'BSL_LINES_DEFN';
9473 --
9474 l_balance_type_code          := 'A';
9475 l_segment                     := NULL;
9476 l_ccid                        := NULL;
9477 l_adr_transaction_coa_id      := NULL;
9478 l_adr_accounting_coa_id       := NULL;
9479 l_adr_flexfield_segment_code  := NULL;
9480 l_adr_flex_value_set_id       := NULL;
9481 l_adr_value_type_code         := NULL;
9482 l_adr_value_combination_id    := NULL;
9483 l_adr_value_segment_code      := NULL;
9484 
9485 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9486 l_bflow_class_code           := '';    -- 4219869 Business Flow
9487 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9488 l_budgetary_control_flag     := 'N';
9489 
9490 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9491 l_bflow_applied_to_amt       := NULL; -- 5132302
9492 l_entered_amt_idx            := NULL;          -- 4262811
9496 l_tmp_amt                    := NULL;          -- 4262811
9493 l_accted_amt_idx             := NULL;          -- 4262811
9494 l_acc_rev_flag               := NULL;          -- 4262811
9495 l_accrual_line_num           := NULL;          -- 4262811
9497 --
9498  
9499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9500     l_balance_type_code <> 'B' THEN
9501 IF NVL(p_source_22,'
9502 ')  =  'RECEIPT'
9503  THEN 
9504 
9505    --
9506    XLA_AE_LINES_PKG.SetNewLine;
9507 
9508    p_balance_type_code          := l_balance_type_code;
9509    -- set the flag so later we will know whether the gain loss line needs to be created
9510    
9511    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9512      p_actual_flag :='A';
9513    END IF;
9514 
9515    --
9516    -- bulk performance
9517    --
9518    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9519                                       p_header_num   => 0); -- 4262811
9520    --
9521    -- set accounting line options
9522    --
9523    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9524            p_natural_side_code          => 'D'
9525          , p_gain_or_loss_flag          => 'N'
9526          , p_gl_transfer_mode_code      => 'D'
9527          , p_acct_entry_type_code       => 'A'
9528          , p_switch_side_flag           => 'Y'
9529          , p_merge_duplicate_code       => 'N'
9530          );
9531    --
9532    l_acc_rev_natural_side_code := 'C';  -- 4262811
9533    -- 
9534    --
9535    -- set accounting line type info
9536    --
9537    xla_ae_lines_pkg.SetAcctLineType
9538       (p_component_type             => l_component_type
9539       ,p_event_type_code            => l_event_type_code
9540       ,p_line_definition_owner_code => l_line_definition_owner_code
9541       ,p_line_definition_code       => l_line_definition_code
9542       ,p_accounting_line_code       => l_component_code
9543       ,p_accounting_line_type_code  => l_component_type_code
9544       ,p_accounting_line_appl_id    => l_component_appl_id
9545       ,p_amb_context_code           => l_amb_context_code
9546       ,p_entity_code                => l_entity_code
9547       ,p_event_class_code           => l_event_class_code);
9548    --
9549    -- set accounting class
9550    --
9551    xla_ae_lines_pkg.SetAcctClass(
9552            p_accounting_class_code  => 'CASH'
9553          , p_ae_header_id           => l_ae_header_id
9554          );
9555 
9556    --
9557    -- set rounding class
9558    --
9559    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9560                       'CASH';
9561 
9562    --
9563    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9564    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9565    --
9566    -- bulk performance
9567    --
9568    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9569 
9570    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9571       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9572 
9573    -- 4955764
9574    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9575       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9576 
9577    -- 4458381 Public Sector Enh
9578    
9579    --
9580    -- set accounting attributes for the line type
9581    --
9582    l_entered_amt_idx := 5;
9583    l_accted_amt_idx  := NULL;
9584    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9585    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9586    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
9587    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
9588    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
9589    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
9590    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
9591    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
9592    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
9593    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
9594    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
9595    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
9596    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
9597    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
9598    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
9599    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
9600    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
9601    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
9602    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
9603    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
9604    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
9605    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
9606    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
9607    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
9608    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
9609 
9610    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9611    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9612 
9613    ---------------------------------------------------------------------------------------------------------------
9614    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9615    ---------------------------------------------------------------------------------------------------------------
9619    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9616    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9617 
9618    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9620 
9621    IF xla_accounting_cache_pkg.GetValueChar
9622          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9623          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9624    AND l_bflow_method_code = 'PRIOR_ENTRY'
9625 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9626    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9627          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9628        )
9629    THEN
9630          xla_ae_lines_pkg.BflowUpgEntry
9631            (p_business_method_code    => l_bflow_method_code
9632            ,p_business_class_code     => l_bflow_class_code
9633            ,p_balance_type            => l_balance_type_code);
9634    ELSE
9635       NULL;
9636 -- No business flow processing for business flow method of NONE.
9637    END IF;
9638 
9639    --
9640    -- call description
9641    --
9642    
9643 xla_ae_lines_pkg.SetLineDescription(
9644    p_ae_header_id => l_ae_header_id
9645   ,p_description  => Description_2 (
9646      p_application_id         => p_application_id
9647    , p_ae_header_id           => l_ae_header_id 
9648 , p_source_2 => p_source_2
9649    )
9650 );
9651 
9652 
9653    --
9654    -- call ADRs
9655    -- Bug 4922099
9656    --
9657    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9658         (NVL(l_actual_upg_option, 'N') = 'O') OR
9659         (NVL(l_enc_upg_option, 'N') = 'O')
9660       )
9661    THEN
9662    NULL;
9663    --
9664    --
9665    
9666   l_ccid := AcctDerRule_5(
9667            p_application_id           => p_application_id
9668          , p_ae_header_id             => l_ae_header_id 
9669 , p_source_5 => p_source_5
9670          , x_transaction_coa_id       => l_adr_transaction_coa_id
9671          , x_accounting_coa_id        => l_adr_accounting_coa_id
9672          , x_value_type_code          => l_adr_value_type_code
9673          , p_side                     => 'NA'
9674    );
9675 
9676    xla_ae_lines_pkg.set_ccid(
9677     p_code_combination_id          => l_ccid
9678   , p_value_type_code              => l_adr_value_type_code
9679   , p_transaction_coa_id           => l_adr_transaction_coa_id
9680   , p_accounting_coa_id            => l_adr_accounting_coa_id
9681   , p_adr_code                     => 'CE_CASH'
9682   , p_adr_type_code                => 'S'
9683   , p_component_type               => l_component_type
9684   , p_component_code               => l_component_code
9685   , p_component_type_code          => l_component_type_code
9686   , p_component_appl_id            => l_component_appl_id
9687   , p_amb_context_code             => l_amb_context_code
9688   , p_side                         => 'NA'
9689   );
9690 
9691 
9692    --
9693    --
9694    END IF;
9695    --
9696    -- Bug 4922099
9697    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9698           (NVL(l_enc_upg_option, 'N') = 'O')
9699         ) AND
9700         (l_bflow_method_code = 'PRIOR_ENTRY')
9701       )
9702    THEN
9703       IF
9704       --
9705       1 = 2
9706       --
9707       THEN
9708       xla_accounting_err_pkg.build_message
9709                                     (p_appli_s_name            => 'XLA'
9710                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9711                                     ,p_token_1                 => 'LINE_NUMBER'
9712                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9713                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9714                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9715                                                                              l_component_type
9716                                                                             ,l_component_code
9717                                                                             ,l_component_type_code
9718                                                                             ,l_component_appl_id
9719                                                                             ,l_amb_context_code
9720                                                                             ,l_entity_code
9721                                                                             ,l_event_class_code
9722                                                                            )
9723                                     ,p_token_3                 => 'OWNER'
9724                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9725                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9726                                                                           ,p_lookup_code    => l_component_type_code
9727                                                                          )
9728                                     ,p_token_4                 => 'PRODUCT_NAME'
9729                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9730                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9731                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9732                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9733                                     ,p_ae_header_id            =>  NULL
9734                                        );
9735 
9739                       ,p_level    => C_LEVEL_ERROR
9736         IF (C_LEVEL_ERROR>= g_log_level) THEN
9737                  trace
9738                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9740                       ,p_module   => l_log_module);
9741         END IF;
9742       END IF;
9743    END IF;
9744    --
9745    --
9746    ------------------------------------------------------------------------------------------------
9747    -- 4219869 Business Flow
9748    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9749    -- Prior Entry.  Currently, the following code is always generated.
9750    ------------------------------------------------------------------------------------------------
9751    XLA_AE_LINES_PKG.ValidateCurrentLine;
9752 
9753    ------------------------------------------------------------------------------------
9754    -- 4219869 Business Flow
9755    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9756    ------------------------------------------------------------------------------------
9757    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9758 
9759    ----------------------------------------------------------------------------------
9760    -- 4219869 Business Flow
9761    -- Update journal entry status -- Need to generate this within IF <condition>
9762    ----------------------------------------------------------------------------------
9763    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9764          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9765          ,p_balance_type_code => l_balance_type_code
9766          );
9767 
9768    -------------------------------------------------------------------------------------------
9769    -- 4262811 - Generate the Accrual Reversal lines
9770    -------------------------------------------------------------------------------------------
9771    BEGIN
9772       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9773                               (g_array_event(p_event_id).array_value_num('header_index'));
9774       IF l_acc_rev_flag IS NULL THEN
9775          l_acc_rev_flag := 'N';
9776       END IF;
9777    EXCEPTION
9778       WHEN OTHERS THEN
9779          l_acc_rev_flag := 'N';
9780    END;
9781    --
9782    IF (l_acc_rev_flag = 'Y') THEN
9783 
9784        -- 4645092  ------------------------------------------------------------------------------
9785        -- To allow MPA report to determine if it should generate report process
9786        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9787        ------------------------------------------------------------------------------------------
9788 
9789        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9790        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9791 
9792        --
9793        -- Update the line information that should be overwritten
9794        --
9795        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9796                                          p_header_num   => 1);
9797        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9798 
9799        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9800 
9801        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9802           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9803        END IF;
9804 
9805       --
9806       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9807       --
9808       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9809           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9810       ELSE
9811           ---------------------------------------------------------------------------------------------------
9812           -- 4262811a Switch Sign
9813           ---------------------------------------------------------------------------------------------------
9814           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9815           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9816                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9817           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9818                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9819           -- 5132302
9820           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9821                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9822 
9823       END IF;
9824 
9825       -- 4955764
9826       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9827       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9828 
9829 
9830       XLA_AE_LINES_PKG.ValidateCurrentLine;
9831       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9832 
9833       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9834                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9835                ,p_balance_type_code => l_balance_type_code);
9836 
9837    END IF;
9838 
9839    -----------------------------------------------------------------------------------------
9840    -- 4262811 Multiperiod Accounting
9841    -----------------------------------------------------------------------------------------
9842      -- No MPA option is assigned.
9843 
9844 
9845 END IF;
9846 END IF;
9847 --
9848 
9849 --
9850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9851    trace
9855 END IF;
9852       (p_msg      => 'END of AcctLineType_24'
9853       ,p_level    => C_LEVEL_PROCEDURE
9854       ,p_module   => l_log_module);
9856 --
9857 EXCEPTION
9858   WHEN xla_exceptions_pkg.application_exception THEN
9859       RAISE;
9860   WHEN OTHERS THEN
9861        xla_exceptions_pkg.raise_message
9862            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_24');
9863 END AcctLineType_24;
9864 --
9865 
9866 ---------------------------------------
9867 --
9868 -- PRIVATE FUNCTION
9869 --         AcctLineType_25
9870 --
9871 ---------------------------------------
9872 PROCEDURE AcctLineType_25 (
9873   p_application_id        IN NUMBER
9874  ,p_event_id              IN NUMBER
9875  ,p_calculate_acctd_flag  IN VARCHAR2
9876  ,p_calculate_g_l_flag    IN VARCHAR2
9877  ,p_actual_flag           IN OUT VARCHAR2
9878  ,p_balance_type_code     OUT VARCHAR2
9879  ,p_gain_or_loss_ref      OUT VARCHAR2
9880  
9881 --Cashflow Description
9882  , p_source_2            IN VARCHAR2
9883 --Cashflow Offset Account
9884  , p_source_7            IN NUMBER
9885 --Reversal Indicator
9886  , p_source_9            IN VARCHAR2
9887 --Cashflow Number
9888  , p_source_10            IN NUMBER
9889 --Cashflow History Identifier
9890  , p_source_11            IN VARCHAR2
9891 --Distribution Link Type
9892  , p_source_12            IN VARCHAR2
9893 --Cashflow Bank Account Currency
9894  , p_source_13            IN VARCHAR2
9895 --Cashflow Cleared Exchange Rate Date
9896  , p_source_14            IN DATE
9897 --Cashflow Cleared Exchange Rate
9898  , p_source_15            IN NUMBER
9899 --Cashflow Cleared Exchange Rate Type
9900  , p_source_16            IN VARCHAR2
9901 --Reversal First Distribution Identifier
9902  , p_source_17            IN NUMBER
9903 --Reversal Second Distribution Identifier
9904  , p_source_18            IN VARCHAR2
9905 --Reversal Distribution Link Type
9906  , p_source_19            IN VARCHAR2
9907 --Cashflow Direction
9908  , p_source_22            IN VARCHAR2
9909  , p_source_22_meaning    IN VARCHAR2
9910 --Cashflow Cleared Amount
9911  , p_source_23            IN NUMBER
9912 )
9913 IS
9914 
9915 l_component_type              VARCHAR2(80);
9916 l_component_code              VARCHAR2(30);
9917 l_component_type_code         VARCHAR2(1);
9918 l_component_appl_id           INTEGER;
9919 l_amb_context_code            VARCHAR2(30);
9920 l_entity_code                 VARCHAR2(30);
9921 l_event_class_code            VARCHAR2(30);
9922 l_ae_header_id                NUMBER;
9923 l_event_type_code             VARCHAR2(30);
9924 l_line_definition_code        VARCHAR2(30);
9925 l_line_definition_owner_code  VARCHAR2(1);
9926 --
9927 -- adr variables
9928 l_segment                     VARCHAR2(30);
9929 l_ccid                        NUMBER;
9930 l_adr_transaction_coa_id      NUMBER;
9931 l_adr_accounting_coa_id       NUMBER;
9932 l_adr_flexfield_segment_code  VARCHAR2(30);
9933 l_adr_flex_value_set_id       NUMBER;
9934 l_adr_value_type_code         VARCHAR2(30);
9935 l_adr_value_combination_id    NUMBER;
9936 l_adr_value_segment_code      VARCHAR2(30);
9937 
9938 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9939 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9940 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9941 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9942 
9943 -- 4262811 Variables ------------------------------------------------------------------------------------------
9944 l_entered_amt_idx             NUMBER;
9945 l_accted_amt_idx              NUMBER;
9946 l_acc_rev_flag                VARCHAR2(1);
9947 l_accrual_line_num            NUMBER;
9948 l_tmp_amt                     NUMBER;
9949 l_acc_rev_natural_side_code   VARCHAR2(1);
9950 
9951 l_num_entries                 NUMBER;
9952 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9953 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9954 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9955 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9956 l_recog_line_1                NUMBER;
9957 l_recog_line_2                NUMBER;
9958 
9959 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9960 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9961 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9962 
9963 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9964 
9965 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9966 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9967 
9968 ---------------------------------------------------------------------------------------------------------------
9969 
9970 
9971 --
9972 -- bulk performance
9973 --
9974 l_balance_type_code           VARCHAR2(1);
9975 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9976 l_log_module                  VARCHAR2(240);
9977 
9978 --
9979 -- Upgrade strategy
9980 --
9981 l_actual_upg_option           VARCHAR2(1);
9982 l_enc_upg_option           VARCHAR2(1);
9983 
9984 --
9985 BEGIN
9986 --
9987 IF g_log_enabled THEN
9988       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
9989 END IF;
9990 --
9991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9992 
9993       trace
9994          (p_msg      => 'BEGIN of AcctLineType_25'
9995          ,p_level    => C_LEVEL_PROCEDURE
9996          ,p_module   => l_log_module);
9997 
9998 END IF;
9999 --
10000 l_component_type             := 'AMB_JLT';
10004 l_amb_context_code           := 'DEFAULT';
10001 l_component_code             := 'BSL_RECEIPT_OFFSET_CR';
10002 l_component_type_code        := 'S';
10003 l_component_appl_id          :=  260;
10005 l_entity_code                := 'CE_CASHFLOWS';
10006 l_event_class_code           := 'STMT_CLASS';
10007 l_event_type_code            := 'STMT_CLASS_ALL';
10008 l_line_definition_owner_code := 'S';
10009 l_line_definition_code       := 'BSL_LINES_DEFN';
10010 --
10011 l_balance_type_code          := 'A';
10012 l_segment                     := NULL;
10013 l_ccid                        := NULL;
10014 l_adr_transaction_coa_id      := NULL;
10015 l_adr_accounting_coa_id       := NULL;
10016 l_adr_flexfield_segment_code  := NULL;
10017 l_adr_flex_value_set_id       := NULL;
10018 l_adr_value_type_code         := NULL;
10019 l_adr_value_combination_id    := NULL;
10020 l_adr_value_segment_code      := NULL;
10021 
10022 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10023 l_bflow_class_code           := '';    -- 4219869 Business Flow
10024 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10025 l_budgetary_control_flag     := 'N';
10026 
10027 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10028 l_bflow_applied_to_amt       := NULL; -- 5132302
10029 l_entered_amt_idx            := NULL;          -- 4262811
10030 l_accted_amt_idx             := NULL;          -- 4262811
10031 l_acc_rev_flag               := NULL;          -- 4262811
10032 l_accrual_line_num           := NULL;          -- 4262811
10033 l_tmp_amt                    := NULL;          -- 4262811
10034 --
10035  
10036 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10037     l_balance_type_code <> 'B' THEN
10038 IF NVL(p_source_22,'
10039 ')  =  'RECEIPT'
10040  THEN 
10041 
10042    --
10043    XLA_AE_LINES_PKG.SetNewLine;
10044 
10045    p_balance_type_code          := l_balance_type_code;
10046    -- set the flag so later we will know whether the gain loss line needs to be created
10047    
10048    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10049      p_actual_flag :='A';
10050    END IF;
10051 
10052    --
10053    -- bulk performance
10054    --
10055    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10056                                       p_header_num   => 0); -- 4262811
10057    --
10058    -- set accounting line options
10059    --
10060    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10061            p_natural_side_code          => 'C'
10062          , p_gain_or_loss_flag          => 'N'
10063          , p_gl_transfer_mode_code      => 'D'
10064          , p_acct_entry_type_code       => 'A'
10065          , p_switch_side_flag           => 'Y'
10066          , p_merge_duplicate_code       => 'N'
10067          );
10068    --
10069    l_acc_rev_natural_side_code := 'D';  -- 4262811
10070    -- 
10071    --
10072    -- set accounting line type info
10073    --
10074    xla_ae_lines_pkg.SetAcctLineType
10075       (p_component_type             => l_component_type
10076       ,p_event_type_code            => l_event_type_code
10077       ,p_line_definition_owner_code => l_line_definition_owner_code
10078       ,p_line_definition_code       => l_line_definition_code
10079       ,p_accounting_line_code       => l_component_code
10080       ,p_accounting_line_type_code  => l_component_type_code
10081       ,p_accounting_line_appl_id    => l_component_appl_id
10082       ,p_amb_context_code           => l_amb_context_code
10083       ,p_entity_code                => l_entity_code
10084       ,p_event_class_code           => l_event_class_code);
10085    --
10086    -- set accounting class
10087    --
10088    xla_ae_lines_pkg.SetAcctClass(
10089            p_accounting_class_code  => 'MISC_CASH'
10090          , p_ae_header_id           => l_ae_header_id
10091          );
10092 
10093    --
10094    -- set rounding class
10095    --
10096    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10097                       'CASH';
10098 
10099    --
10100    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10101    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10102    --
10103    -- bulk performance
10104    --
10105    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10106 
10107    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10108       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10109 
10110    -- 4955764
10111    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10112       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10113 
10114    -- 4458381 Public Sector Enh
10115    
10116    --
10117    -- set accounting attributes for the line type
10118    --
10119    l_entered_amt_idx := 5;
10120    l_accted_amt_idx  := NULL;
10121    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10122    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10123    l_rec_acct_attrs.array_char_value(1)  := p_source_9;
10124    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
10125    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_10);
10126    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_2';
10127    l_rec_acct_attrs.array_char_value(3)  := p_source_11;
10128    l_rec_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
10129    l_rec_acct_attrs.array_char_value(4)  := p_source_12;
10130    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_AMOUNT';
10131    l_rec_acct_attrs.array_num_value(5)  := p_source_23;
10135    l_rec_acct_attrs.array_date_value(7)  := p_source_14;
10132    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENTERED_CURRENCY_CODE';
10133    l_rec_acct_attrs.array_char_value(6)  := p_source_13;
10134    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_DATE';
10136    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE';
10137    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
10138    l_rec_acct_attrs.array_acct_attr_code(9) := 'EXCHANGE_RATE_TYPE';
10139    l_rec_acct_attrs.array_char_value(9)  := p_source_16;
10140    l_rec_acct_attrs.array_acct_attr_code(10) := 'REVERSED_DISTRIBUTION_ID1';
10141    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_17);
10142    l_rec_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID2';
10143    l_rec_acct_attrs.array_char_value(11)  := p_source_18;
10144    l_rec_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
10145    l_rec_acct_attrs.array_char_value(12)  := p_source_19;
10146 
10147    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10148    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10149 
10150    ---------------------------------------------------------------------------------------------------------------
10151    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10152    ---------------------------------------------------------------------------------------------------------------
10153    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10154 
10155    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10156    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10157 
10158    IF xla_accounting_cache_pkg.GetValueChar
10159          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10160          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10161    AND l_bflow_method_code = 'PRIOR_ENTRY'
10162 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10163    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10164          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10165        )
10166    THEN
10167          xla_ae_lines_pkg.BflowUpgEntry
10168            (p_business_method_code    => l_bflow_method_code
10169            ,p_business_class_code     => l_bflow_class_code
10170            ,p_balance_type            => l_balance_type_code);
10171    ELSE
10172       NULL;
10173 -- No business flow processing for business flow method of NONE.
10174    END IF;
10175 
10176    --
10177    -- call description
10178    --
10179    
10180 xla_ae_lines_pkg.SetLineDescription(
10181    p_ae_header_id => l_ae_header_id
10182   ,p_description  => Description_2 (
10183      p_application_id         => p_application_id
10184    , p_ae_header_id           => l_ae_header_id 
10185 , p_source_2 => p_source_2
10186    )
10187 );
10188 
10189 
10190    --
10191    -- call ADRs
10192    -- Bug 4922099
10193    --
10194    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10195         (NVL(l_actual_upg_option, 'N') = 'O') OR
10196         (NVL(l_enc_upg_option, 'N') = 'O')
10197       )
10198    THEN
10199    NULL;
10200    --
10201    --
10202    
10203   l_ccid := AcctDerRule_7(
10204            p_application_id           => p_application_id
10205          , p_ae_header_id             => l_ae_header_id 
10206 , p_source_7 => p_source_7
10207          , x_transaction_coa_id       => l_adr_transaction_coa_id
10208          , x_accounting_coa_id        => l_adr_accounting_coa_id
10209          , x_value_type_code          => l_adr_value_type_code
10210          , p_side                     => 'NA'
10211    );
10212 
10213    xla_ae_lines_pkg.set_ccid(
10214     p_code_combination_id          => l_ccid
10215   , p_value_type_code              => l_adr_value_type_code
10216   , p_transaction_coa_id           => l_adr_transaction_coa_id
10217   , p_accounting_coa_id            => l_adr_accounting_coa_id
10218   , p_adr_code                     => 'CE_OFFSET'
10219   , p_adr_type_code                => 'S'
10220   , p_component_type               => l_component_type
10221   , p_component_code               => l_component_code
10222   , p_component_type_code          => l_component_type_code
10223   , p_component_appl_id            => l_component_appl_id
10224   , p_amb_context_code             => l_amb_context_code
10225   , p_side                         => 'NA'
10226   );
10227 
10228 
10229    --
10230    --
10231    END IF;
10232    --
10233    -- Bug 4922099
10234    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10235           (NVL(l_enc_upg_option, 'N') = 'O')
10236         ) AND
10237         (l_bflow_method_code = 'PRIOR_ENTRY')
10238       )
10239    THEN
10240       IF
10241       --
10242       1 = 2
10243       --
10244       THEN
10245       xla_accounting_err_pkg.build_message
10246                                     (p_appli_s_name            => 'XLA'
10247                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10248                                     ,p_token_1                 => 'LINE_NUMBER'
10249                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10250                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10251                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10252                                                                              l_component_type
10253                                                                             ,l_component_code
10254                                                                             ,l_component_type_code
10258                                                                             ,l_event_class_code
10255                                                                             ,l_component_appl_id
10256                                                                             ,l_amb_context_code
10257                                                                             ,l_entity_code
10259                                                                            )
10260                                     ,p_token_3                 => 'OWNER'
10261                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10262                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10263                                                                           ,p_lookup_code    => l_component_type_code
10264                                                                          )
10265                                     ,p_token_4                 => 'PRODUCT_NAME'
10266                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10267                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10268                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10269                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10270                                     ,p_ae_header_id            =>  NULL
10271                                        );
10272 
10273         IF (C_LEVEL_ERROR>= g_log_level) THEN
10274                  trace
10275                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10276                       ,p_level    => C_LEVEL_ERROR
10277                       ,p_module   => l_log_module);
10278         END IF;
10279       END IF;
10280    END IF;
10281    --
10282    --
10283    ------------------------------------------------------------------------------------------------
10284    -- 4219869 Business Flow
10285    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10286    -- Prior Entry.  Currently, the following code is always generated.
10287    ------------------------------------------------------------------------------------------------
10288    XLA_AE_LINES_PKG.ValidateCurrentLine;
10289 
10290    ------------------------------------------------------------------------------------
10291    -- 4219869 Business Flow
10292    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10293    ------------------------------------------------------------------------------------
10294    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10295 
10296    ----------------------------------------------------------------------------------
10297    -- 4219869 Business Flow
10298    -- Update journal entry status -- Need to generate this within IF <condition>
10299    ----------------------------------------------------------------------------------
10300    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10301          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10302          ,p_balance_type_code => l_balance_type_code
10303          );
10304 
10305    -------------------------------------------------------------------------------------------
10306    -- 4262811 - Generate the Accrual Reversal lines
10307    -------------------------------------------------------------------------------------------
10308    BEGIN
10309       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10310                               (g_array_event(p_event_id).array_value_num('header_index'));
10311       IF l_acc_rev_flag IS NULL THEN
10312          l_acc_rev_flag := 'N';
10313       END IF;
10314    EXCEPTION
10315       WHEN OTHERS THEN
10316          l_acc_rev_flag := 'N';
10317    END;
10318    --
10319    IF (l_acc_rev_flag = 'Y') THEN
10320 
10321        -- 4645092  ------------------------------------------------------------------------------
10322        -- To allow MPA report to determine if it should generate report process
10323        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10324        ------------------------------------------------------------------------------------------
10325 
10326        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10327        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10328 
10329        --
10330        -- Update the line information that should be overwritten
10331        --
10332        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10333                                          p_header_num   => 1);
10334        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10335 
10336        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10337 
10338        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10339           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10340        END IF;
10341 
10342       --
10343       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10344       --
10345       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10346           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10347       ELSE
10348           ---------------------------------------------------------------------------------------------------
10349           -- 4262811a Switch Sign
10350           ---------------------------------------------------------------------------------------------------
10351           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10352           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10356           -- 5132302
10353                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10354           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10355                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10357           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10358                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10359 
10360       END IF;
10361 
10362       -- 4955764
10363       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10365 
10366 
10367       XLA_AE_LINES_PKG.ValidateCurrentLine;
10368       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10369 
10370       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10371                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10372                ,p_balance_type_code => l_balance_type_code);
10373 
10374    END IF;
10375 
10376    -----------------------------------------------------------------------------------------
10377    -- 4262811 Multiperiod Accounting
10378    -----------------------------------------------------------------------------------------
10379      -- No MPA option is assigned.
10380 
10381 
10382 END IF;
10383 END IF;
10384 --
10385 
10386 --
10387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10388    trace
10389       (p_msg      => 'END of AcctLineType_25'
10390       ,p_level    => C_LEVEL_PROCEDURE
10391       ,p_module   => l_log_module);
10392 END IF;
10393 --
10394 EXCEPTION
10395   WHEN xla_exceptions_pkg.application_exception THEN
10396       RAISE;
10397   WHEN OTHERS THEN
10398        xla_exceptions_pkg.raise_message
10399            (p_location => 'XLA_00260_AAD_S_000001_PKG.AcctLineType_25');
10400 END AcctLineType_25;
10401 --
10402 
10403 ---------------------------------------
10404 --
10405 -- PRIVATE PROCEDURE
10406 --         insert_sources_26
10407 --
10408 ----------------------------------------
10409 --
10410 PROCEDURE insert_sources_26(
10411                                 p_target_ledger_id       IN NUMBER
10412                               , p_language               IN VARCHAR2
10413                               , p_sla_ledger_id          IN NUMBER
10414                               , p_pad_start_date         IN DATE
10415                               , p_pad_end_date           IN DATE
10416                          )
10417 IS
10418 
10419 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CE_BAT_CLEARED';
10420 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BAT_CLASS';
10421 p_apps_owner                   VARCHAR2(30);
10422 l_log_module                   VARCHAR2(240);
10423 BEGIN
10424 IF g_log_enabled THEN
10425       l_log_module := C_DEFAULT_MODULE||'.insert_sources_26';
10426 END IF;
10427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10428 
10429       trace
10430          (p_msg      => 'BEGIN of insert_sources_26'
10431          ,p_level    => C_LEVEL_PROCEDURE
10432          ,p_module   => l_log_module);
10433 
10434 END IF;
10435 
10436 -- select APPS owner
10437 SELECT oracle_username
10438   INTO p_apps_owner
10439   FROM fnd_oracle_userid
10440  WHERE read_only_flag = 'U'
10441 ;
10442 
10443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10444       trace
10445          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
10446                         ' - p_language = '||p_language||
10447                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
10448                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
10449                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
10450                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
10451          ,p_level    => C_LEVEL_STATEMENT
10452          ,p_module   => l_log_module);
10453 END IF;
10454 
10455 
10456 --
10457 INSERT INTO xla_diag_sources --hdr1
10458 (
10459         event_id
10460       , ledger_id
10461       , sla_ledger_id
10462       , description_language
10463       , object_name
10464       , object_type_code
10465       , line_number
10466       , source_application_id
10467       , source_type_code
10468       , source_code
10469       , source_value
10470       , source_meaning
10471       , created_by
10472       , creation_date
10473       , last_update_date
10474       , last_updated_by
10475       , last_update_login
10476       , program_update_date
10477       , program_application_id
10478       , program_id
10479       , request_id
10480 )
10481 SELECT
10482         event_id
10483       , p_target_ledger_id
10484       , p_sla_ledger_id
10485       , p_language
10486       , object_name
10487       , object_type_code
10488       , line_number
10489       , source_application_id
10490       , source_type_code
10491       , source_code
10492       , SUBSTR(source_value ,1,1996)
10493       , SUBSTR(source_meaning,1,200)
10494       , xla_environment_pkg.g_Usr_Id
10495       , TRUNC(SYSDATE)
10496       , TRUNC(SYSDATE)
10497       , xla_environment_pkg.g_Usr_Id
10498       , xla_environment_pkg.g_Login_Id
10499       , TRUNC(SYSDATE)
10500       , xla_environment_pkg.g_Prog_Appl_Id
10501       , xla_environment_pkg.g_Prog_Id
10502       , xla_environment_pkg.g_Req_Id
10503   FROM (
10504        SELECT xet.event_id                  event_id
10505             , 0                             line_number
10506             , CASE r
10510                 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V' 
10507                WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V' 
10508                 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V' 
10509                 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V' 
10511                 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V' 
10512                 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V' 
10513                 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V' 
10514                 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V' 
10515                 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V' 
10516                 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V' 
10517                 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V' 
10518                 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V' 
10519                 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V' 
10520                 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V' 
10521                 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V' 
10522                 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V' 
10523                 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V' 
10524                 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V' 
10525                 WHEN 19 THEN 'CE_XLA_EXT_HEADERS_V' 
10526                 WHEN 20 THEN 'CE_XLA_EXT_HEADERS_V' 
10527                 WHEN 21 THEN 'CE_XLA_EXT_HEADERS_V' 
10528                 WHEN 22 THEN 'CE_XLA_EXT_HEADERS_V' 
10529                 WHEN 23 THEN 'CE_XLA_EXT_HEADERS_V' 
10530                 WHEN 24 THEN 'CE_XLA_EXT_HEADERS_V' 
10531                 WHEN 25 THEN 'CE_XLA_EXT_HEADERS_V' 
10532                 WHEN 26 THEN 'CE_XLA_EXT_HEADERS_V' 
10533                 WHEN 27 THEN 'CE_XLA_EXT_HEADERS_V' 
10534                 
10535                ELSE null
10536               END                           object_name
10537             , CASE r
10538                 WHEN 1 THEN 'HEADER' 
10539                 WHEN 2 THEN 'HEADER' 
10540                 WHEN 3 THEN 'HEADER' 
10541                 WHEN 4 THEN 'HEADER' 
10542                 WHEN 5 THEN 'HEADER' 
10543                 WHEN 6 THEN 'HEADER' 
10544                 WHEN 7 THEN 'HEADER' 
10545                 WHEN 8 THEN 'HEADER' 
10546                 WHEN 9 THEN 'HEADER' 
10547                 WHEN 10 THEN 'HEADER' 
10548                 WHEN 11 THEN 'HEADER' 
10549                 WHEN 12 THEN 'HEADER' 
10550                 WHEN 13 THEN 'HEADER' 
10551                 WHEN 14 THEN 'HEADER' 
10552                 WHEN 15 THEN 'HEADER' 
10553                 WHEN 16 THEN 'HEADER' 
10554                 WHEN 17 THEN 'HEADER' 
10555                 WHEN 18 THEN 'HEADER' 
10556                 WHEN 19 THEN 'HEADER' 
10557                 WHEN 20 THEN 'HEADER' 
10558                 WHEN 21 THEN 'HEADER' 
10559                 WHEN 22 THEN 'HEADER' 
10560                 WHEN 23 THEN 'HEADER' 
10561                 WHEN 24 THEN 'HEADER' 
10562                 WHEN 25 THEN 'HEADER' 
10563                 WHEN 26 THEN 'HEADER' 
10564                 WHEN 27 THEN 'HEADER' 
10565                 
10566                 ELSE null
10567               END                           object_type_code
10568             , CASE r
10569                 WHEN 1 THEN '260' 
10570                 WHEN 2 THEN '260' 
10571                 WHEN 3 THEN '260' 
10572                 WHEN 4 THEN '260' 
10573                 WHEN 5 THEN '260' 
10574                 WHEN 6 THEN '260' 
10575                 WHEN 7 THEN '260' 
10576                 WHEN 8 THEN '260' 
10577                 WHEN 9 THEN '260' 
10578                 WHEN 10 THEN '260' 
10579                 WHEN 11 THEN '260' 
10580                 WHEN 12 THEN '260' 
10581                 WHEN 13 THEN '260' 
10582                 WHEN 14 THEN '260' 
10583                 WHEN 15 THEN '260' 
10584                 WHEN 16 THEN '260' 
10585                 WHEN 17 THEN '260' 
10586                 WHEN 18 THEN '260' 
10587                 WHEN 19 THEN '260' 
10588                 WHEN 20 THEN '260' 
10589                 WHEN 21 THEN '260' 
10590                 WHEN 22 THEN '260' 
10591                 WHEN 23 THEN '260' 
10592                 WHEN 24 THEN '260' 
10593                 WHEN 25 THEN '260' 
10594                 WHEN 26 THEN '260' 
10595                 WHEN 27 THEN '260' 
10596                 
10597                 ELSE null
10598               END                           source_application_id
10599             , 'S'             source_type_code
10600             , CASE r
10601                 WHEN 1 THEN 'CF_BA_BANK_CHARGE_CCID' 
10602                 WHEN 2 THEN 'CF_BA_BANK_ERROR_CCID' 
10603                 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID' 
10604                 WHEN 4 THEN 'CF_BA_FX_CHARGE_CCID' 
10605                 WHEN 5 THEN 'CF_OFFSET_CCID' 
10606                 WHEN 6 THEN 'CF_CLEARED_CHARGE_AMOUNT' 
10607                 WHEN 7 THEN 'REVERSAL_INDICATOR' 
10608                 WHEN 8 THEN 'CASHFLOW_NUMBER' 
10609                 WHEN 9 THEN 'CASHFLOW_HIST_IDENTIFIER' 
10610                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
10611                 WHEN 11 THEN 'CF_BA_CURRENCY' 
10612                 WHEN 12 THEN 'CF_CLEARED_EXCHANGE_DATE' 
10613                 WHEN 13 THEN 'CF_CLEARED_EXCHANGE_RATE' 
10614                 WHEN 14 THEN 'CF_CLEARED_EXC_RATE_TYPE' 
10615                 WHEN 15 THEN 'REVERSAL_FIRST_DIST_ID' 
10616                 WHEN 16 THEN 'REVERSAL_SECOND_DIST_ID' 
10617                 WHEN 17 THEN 'REVERSAL_DIST_TYPE' 
10618                 WHEN 18 THEN 'CF_CLEARED_ERROR_AMOUNT' 
10619                 WHEN 19 THEN 'CF_FX_CHARGE_AMOUNT' 
10620                 WHEN 20 THEN 'CF_DIRECTION' 
10621                 WHEN 21 THEN 'CF_CLEARED_AMOUNT' 
10622                 WHEN 22 THEN 'CF_AMOUNT' 
10623                 WHEN 23 THEN 'CF_CURRENCY' 
10624                 WHEN 24 THEN 'CF_EXCHANGE_DATE' 
10625                 WHEN 25 THEN 'CF_EXCHANGE_RATE' 
10626                 WHEN 26 THEN 'CF_EXCHANGE_RATE_TYPE' 
10627                 WHEN 27 THEN 'ACCOUNTING_DATE' 
10628                 
10629                 ELSE null
10633                 WHEN 2 THEN TO_CHAR(h1.CF_BA_BANK_ERROR_CCID)
10630               END                           source_code
10631             , CASE r
10632                 WHEN 1 THEN TO_CHAR(h1.CF_BA_BANK_CHARGE_CCID)
10634                 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
10635                 WHEN 4 THEN TO_CHAR(h1.CF_BA_FX_CHARGE_CCID)
10636                 WHEN 5 THEN TO_CHAR(h1.CF_OFFSET_CCID)
10637                 WHEN 6 THEN TO_CHAR(h1.CF_CLEARED_CHARGE_AMOUNT)
10638                 WHEN 7 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
10639                 WHEN 8 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
10640                 WHEN 9 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
10641                 WHEN 10 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
10642                 WHEN 11 THEN TO_CHAR(h1.CF_BA_CURRENCY)
10643                 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
10644                 WHEN 13 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
10645                 WHEN 14 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
10646                 WHEN 15 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
10647                 WHEN 16 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
10648                 WHEN 17 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
10649                 WHEN 18 THEN TO_CHAR(h1.CF_CLEARED_ERROR_AMOUNT)
10650                 WHEN 19 THEN TO_CHAR(h1.CF_FX_CHARGE_AMOUNT)
10651                 WHEN 20 THEN TO_CHAR(h1.CF_DIRECTION)
10652                 WHEN 21 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
10653                 WHEN 22 THEN TO_CHAR(h1.CF_AMOUNT)
10654                 WHEN 23 THEN TO_CHAR(h1.CF_CURRENCY)
10655                 WHEN 24 THEN TO_CHAR(h1.CF_EXCHANGE_DATE)
10656                 WHEN 25 THEN TO_CHAR(h1.CF_EXCHANGE_RATE)
10657                 WHEN 26 THEN TO_CHAR(h1.CF_EXCHANGE_RATE_TYPE)
10658                 WHEN 27 THEN TO_CHAR(h1.ACCOUNTING_DATE)
10659                 
10660                 ELSE null
10661               END                           source_value
10662             , CASE r
10663                 WHEN 20 THEN fvl22.meaning
10664                 
10665                 ELSE null
10666               END               source_meaning
10667         FROM xla_events_gt     xet  
10668       , CE_XLA_EXT_HEADERS_V  h1
10669   , fnd_lookup_values    fvl22
10670             ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
10671        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
10672          AND xet.event_type_code = C_EVENT_TYPE_CODE
10673             AND h1.event_id = xet.event_id
10674    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
10675   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
10676   AND fvl22.view_application_id(+) = 260
10677   AND fvl22.language(+)            = USERENV('LANG')
10678   
10679 )
10680 ;
10681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10682 
10683       trace
10684          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
10685          ,p_level    => C_LEVEL_STATEMENT
10686          ,p_module   => l_log_module);
10687 
10688 END IF;
10689 --
10690 
10691 
10692  
10693 
10694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10695       trace
10696          (p_msg      => 'END of insert_sources_26'
10697          ,p_level    => C_LEVEL_PROCEDURE
10698          ,p_module   => l_log_module);
10699 END IF;
10700 EXCEPTION
10701   WHEN xla_exceptions_pkg.application_exception THEN
10702       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10703             trace
10704                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10705                ,p_level    => C_LEVEL_EXCEPTION
10706                ,p_module   => l_log_module);
10707       END IF;
10708       RAISE;
10709   WHEN OTHERS THEN
10710       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10711             trace
10712                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10713                ,p_level    => C_LEVEL_EXCEPTION
10714                ,p_module   => l_log_module);
10715        END IF;
10716        xla_exceptions_pkg.raise_message
10717            (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_26');
10718 END insert_sources_26;
10719 --
10720 
10721 ---------------------------------------
10722 --
10723 -- PRIVATE FUNCTION
10724 --         EventType_26
10725 --
10726 ----------------------------------------
10727 --
10728 FUNCTION EventType_26
10729        (p_application_id         IN NUMBER
10730        ,p_base_ledger_id         IN NUMBER
10731        ,p_target_ledger_id       IN NUMBER
10732        ,p_language               IN VARCHAR2
10733        ,p_currency_code          IN VARCHAR2
10734        ,p_sla_ledger_id          IN NUMBER
10735        ,p_pad_start_date         IN DATE
10736        ,p_pad_end_date           IN DATE
10737        ,p_primary_ledger_id      IN NUMBER)
10738 RETURN BOOLEAN IS
10739 --
10740 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CE_BAT_CLEARED';
10741 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BAT_CLASS';
10742 
10743 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
10744 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
10745 --
10746 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10747 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10748 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10749 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10750 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10751 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10752 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10753 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10754 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10755 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10759 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10756 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10757 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10758 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10760 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10761 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10762 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10763 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10764 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10765 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10766 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10767 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10768 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
10769 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10770 
10771 l_event_id                             NUMBER;
10772 l_previous_event_id                    NUMBER;
10773 l_first_event_id                       NUMBER;
10774 l_last_event_id                        NUMBER;
10775 
10776 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
10777 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
10778 --
10779 --
10780 l_result                    BOOLEAN := TRUE;
10781 l_rows                      NUMBER  := 1000;
10782 l_event_type_name           VARCHAR2(80) := 'Bank Account Transfer Cleared';
10783 l_event_class_name          VARCHAR2(80) := 'Bank Account Transfers';
10784 l_description               VARCHAR2(4000);
10785 l_transaction_reversal      NUMBER;
10786 l_ae_header_id              NUMBER;
10787 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
10788 l_log_module                VARCHAR2(240);
10789 --
10790 l_acct_reversal_source      VARCHAR2(30);
10791 l_trx_reversal_source       VARCHAR2(30);
10792 
10793 l_continue_with_lines       BOOLEAN := TRUE;
10794 --
10795 l_acc_rev_gl_date_source    DATE;                      -- 4262811
10796 --
10797 type t_array_event_id is table of number index by binary_integer;
10798 
10799 l_rec_array_event                    t_rec_array_event;
10800 l_null_rec_array_event               t_rec_array_event;
10801 l_array_ae_header_id                 xla_number_array_type;
10802 l_actual_flag                        VARCHAR2(1) := NULL;
10803 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
10804 l_balance_type_code                  VARCHAR2(1) :=NULL;
10805 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
10806 
10807 --
10808 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
10809 --
10810 
10811 TYPE t_array_source_3 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
10812 TYPE t_array_source_4 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_ERROR_CCID%TYPE INDEX BY BINARY_INTEGER;
10813 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
10814 TYPE t_array_source_6 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_FX_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
10815 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
10816 TYPE t_array_source_8 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10817 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
10818 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
10819 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
10820 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
10821 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
10822 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
10823 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
10824 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
10825 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
10826 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
10827 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
10828 TYPE t_array_source_20 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_ERROR_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10829 TYPE t_array_source_21 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_FX_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10830 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
10831 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10832 TYPE t_array_source_24 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10833 TYPE t_array_source_25 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
10834 TYPE t_array_source_26 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
10835 TYPE t_array_source_27 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
10836 TYPE t_array_source_28 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
10837 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
10838 
10839 
10840 l_array_source_3              t_array_source_3;
10841 l_array_source_4              t_array_source_4;
10842 l_array_source_5              t_array_source_5;
10843 l_array_source_6              t_array_source_6;
10844 l_array_source_7              t_array_source_7;
10845 l_array_source_8              t_array_source_8;
10849 l_array_source_12              t_array_source_12;
10846 l_array_source_9              t_array_source_9;
10847 l_array_source_10              t_array_source_10;
10848 l_array_source_11              t_array_source_11;
10850 l_array_source_13              t_array_source_13;
10851 l_array_source_14              t_array_source_14;
10852 l_array_source_15              t_array_source_15;
10853 l_array_source_16              t_array_source_16;
10854 l_array_source_17              t_array_source_17;
10855 l_array_source_18              t_array_source_18;
10856 l_array_source_19              t_array_source_19;
10857 l_array_source_20              t_array_source_20;
10858 l_array_source_21              t_array_source_21;
10859 l_array_source_22              t_array_source_22;
10860 l_array_source_22_meaning      t_array_lookup_meaning;
10861 l_array_source_23              t_array_source_23;
10862 l_array_source_24              t_array_source_24;
10863 l_array_source_25              t_array_source_25;
10864 l_array_source_26              t_array_source_26;
10865 l_array_source_27              t_array_source_27;
10866 l_array_source_28              t_array_source_28;
10867 l_array_source_29              t_array_source_29;
10868 
10869 
10870 --
10871 CURSOR header_cur
10872 IS
10873 SELECT /*+ leading(xet) cardinality(xet,1) */
10874 -- Event Type Code: CE_BAT_CLEARED
10875 -- Event Class Code: BAT_CLASS
10876     xet.entity_id
10877   , xet.legal_entity_id
10878   , xet.entity_code
10879   , xet.transaction_number
10880   , xet.event_id
10881   , xet.event_class_code
10882   , xet.event_type_code
10883   , xet.event_number
10884   , xet.event_date
10885   , xet.transaction_date
10886   , xet.reference_num_1
10887   , xet.reference_num_2
10888   , xet.reference_num_3
10889   , xet.reference_num_4
10890   , xet.reference_char_1
10891   , xet.reference_char_2
10892   , xet.reference_char_3
10893   , xet.reference_char_4
10894   , xet.reference_date_1
10895   , xet.reference_date_2
10896   , xet.reference_date_3
10897   , xet.reference_date_4
10898   , xet.event_created_by
10899   , xet.budgetary_control_flag 
10900   , h1.CF_BA_BANK_CHARGE_CCID    source_3
10901   , h1.CF_BA_BANK_ERROR_CCID    source_4
10902   , h1.CF_BA_CASH_ACCT_CCID    source_5
10903   , h1.CF_BA_FX_CHARGE_CCID    source_6
10904   , h1.CF_OFFSET_CCID    source_7
10905   , h1.CF_CLEARED_CHARGE_AMOUNT    source_8
10906   , h1.REVERSAL_INDICATOR    source_9
10907   , h1.CASHFLOW_NUMBER    source_10
10908   , h1.CASHFLOW_HIST_IDENTIFIER    source_11
10909   , h1.DISTRIBUTION_TYPE    source_12
10910   , h1.CF_BA_CURRENCY    source_13
10911   , h1.CF_CLEARED_EXCHANGE_DATE    source_14
10912   , h1.CF_CLEARED_EXCHANGE_RATE    source_15
10913   , h1.CF_CLEARED_EXC_RATE_TYPE    source_16
10914   , h1.REVERSAL_FIRST_DIST_ID    source_17
10915   , h1.REVERSAL_SECOND_DIST_ID    source_18
10916   , h1.REVERSAL_DIST_TYPE    source_19
10917   , h1.CF_CLEARED_ERROR_AMOUNT    source_20
10918   , h1.CF_FX_CHARGE_AMOUNT    source_21
10919   , h1.CF_DIRECTION    source_22
10920   , fvl22.meaning   source_22_meaning
10921   , h1.CF_CLEARED_AMOUNT    source_23
10922   , h1.CF_AMOUNT    source_24
10923   , h1.CF_CURRENCY    source_25
10924   , h1.CF_EXCHANGE_DATE    source_26
10925   , h1.CF_EXCHANGE_RATE    source_27
10926   , h1.CF_EXCHANGE_RATE_TYPE    source_28
10927   , h1.ACCOUNTING_DATE    source_29
10928   FROM xla_events_gt     xet 
10929   , CE_XLA_EXT_HEADERS_V  h1
10930   , fnd_lookup_values    fvl22
10931  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
10932    and xet.event_type_code = C_EVENT_TYPE_CODE
10933    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
10934    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
10935   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
10936   AND fvl22.view_application_id(+) = 260
10937   AND fvl22.language(+)            = USERENV('LANG')
10938   
10939  ORDER BY event_id
10940 ;
10941 
10942 
10943 --
10944 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
10945 IS
10946 SELECT /*+ leading(xet) cardinality(xet,1) */
10947 -- Event Type Code: CE_BAT_CLEARED
10948 -- Event Class Code: BAT_CLASS
10949     xet.entity_id
10950    ,xet.legal_entity_id
10951    ,xet.entity_code
10952    ,xet.transaction_number
10953    ,xet.event_id
10954    ,xet.event_class_code
10955    ,xet.event_type_code
10956    ,xet.event_number
10957    ,xet.event_date
10958    ,xet.transaction_date
10959    ,xet.reference_num_1
10960    ,xet.reference_num_2
10961    ,xet.reference_num_3
10962    ,xet.reference_num_4
10963    ,xet.reference_char_1
10964    ,xet.reference_char_2
10965    ,xet.reference_char_3
10966    ,xet.reference_char_4
10967    ,xet.reference_date_1
10968    ,xet.reference_date_2
10969    ,xet.reference_date_3
10970    ,xet.reference_date_4
10971    ,xet.event_created_by
10972    ,xet.budgetary_control_flag  , 0 
10973   FROM xla_events_gt     xet  
10974  WHERE xet.event_id between x_first_event_id and x_last_event_id
10975    and xet.event_date between p_pad_start_date and p_pad_end_date
10976    and xet.event_type_code = C_EVENT_TYPE_CODE
10977    and xet.event_status_code <> 'N'  ;
10978 
10979 --
10980 BEGIN
10981 IF g_log_enabled THEN
10982    l_log_module := C_DEFAULT_MODULE||'.EventType_26';
10983 END IF;
10984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10985    trace
10986       (p_msg      => 'BEGIN of EventType_26'
10987       ,p_level    => C_LEVEL_PROCEDURE
10988       ,p_module   => l_log_module);
10989 END IF;
10990 
10991 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10992    trace
10993       (p_msg      => 'p_application_id = '||p_application_id||
10994                      ' - p_base_ledger_id = '||p_base_ledger_id||
10998                      ' - p_sla_ledger_id = '||p_sla_ledger_id
10995                      ' - p_target_ledger_id  = '||p_target_ledger_id||
10996                      ' - p_language = '||p_language||
10997                      ' - p_currency_code = '||p_currency_code||
10999       ,p_level    => C_LEVEL_STATEMENT
11000       ,p_module   => l_log_module);
11001 END IF;
11002 --
11003 -- initialze arrays
11004 --
11005 g_array_event.DELETE;
11006 l_rec_array_event := l_null_rec_array_event;
11007 --
11008 --------------------------------------
11009 -- 4262811 Initialze MPA Line Number
11010 --------------------------------------
11011 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
11012 
11013 --
11014 
11015 --
11016 OPEN header_cur;
11017 --
11018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11019    trace
11020    (p_msg      => 'SQL - FETCH header_cur'
11021    ,p_level    => C_LEVEL_STATEMENT
11022    ,p_module   => l_log_module);
11023 END IF;
11024 --
11025 LOOP
11026 FETCH header_cur BULK COLLECT INTO
11027         l_array_entity_id
11028       , l_array_legal_entity_id
11029       , l_array_entity_code
11030       , l_array_transaction_num
11031       , l_array_event_id
11032       , l_array_class_code
11033       , l_array_event_type
11034       , l_array_event_number
11035       , l_array_event_date
11036       , l_array_transaction_date
11037       , l_array_reference_num_1
11038       , l_array_reference_num_2
11039       , l_array_reference_num_3
11040       , l_array_reference_num_4
11041       , l_array_reference_char_1
11042       , l_array_reference_char_2
11043       , l_array_reference_char_3
11044       , l_array_reference_char_4
11045       , l_array_reference_date_1
11046       , l_array_reference_date_2
11047       , l_array_reference_date_3
11048       , l_array_reference_date_4
11049       , l_array_event_created_by
11050       , l_array_budgetary_control_flag 
11051       , l_array_source_3
11052       , l_array_source_4
11053       , l_array_source_5
11054       , l_array_source_6
11055       , l_array_source_7
11056       , l_array_source_8
11057       , l_array_source_9
11058       , l_array_source_10
11059       , l_array_source_11
11060       , l_array_source_12
11061       , l_array_source_13
11062       , l_array_source_14
11063       , l_array_source_15
11064       , l_array_source_16
11065       , l_array_source_17
11066       , l_array_source_18
11067       , l_array_source_19
11068       , l_array_source_20
11069       , l_array_source_21
11070       , l_array_source_22
11071       , l_array_source_22_meaning
11072       , l_array_source_23
11073       , l_array_source_24
11074       , l_array_source_25
11075       , l_array_source_26
11076       , l_array_source_27
11077       , l_array_source_28
11078       , l_array_source_29
11079       LIMIT l_rows;
11080 --
11081 IF (C_LEVEL_EVENT >= g_log_level) THEN
11082    trace
11083    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
11084    ,p_level    => C_LEVEL_EVENT
11085    ,p_module   => l_log_module);
11086 END IF;
11087 --
11088 EXIT WHEN l_array_entity_id.COUNT = 0;
11089 
11090 -- initialize arrays
11091 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
11092 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
11093 
11094 --
11095 -- Bug 4458708
11096 --
11097 XLA_AE_LINES_PKG.g_LineNumber := 0;
11098 
11099 
11100 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
11101 g_last_hdr_idx := l_array_event_id.LAST;
11102 --
11103 -- loop for the headers. Each iteration is for each header extract row
11104 -- fetched in header cursor
11105 --
11106 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
11107 
11108 --
11109 -- set event info as cache for other routines to refer event attributes
11110 --
11111 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11112    (p_application_id           => p_application_id
11113    ,p_primary_ledger_id        => p_primary_ledger_id
11114    ,p_base_ledger_id           => p_base_ledger_id
11115    ,p_target_ledger_id         => p_target_ledger_id
11116    ,p_entity_id                => l_array_entity_id(hdr_idx)
11117    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
11118    ,p_entity_code              => l_array_entity_code(hdr_idx)
11119    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
11120    ,p_event_id                 => l_array_event_id(hdr_idx)
11121    ,p_event_class_code         => l_array_class_code(hdr_idx)
11122    ,p_event_type_code          => l_array_event_type(hdr_idx)
11123    ,p_event_number             => l_array_event_number(hdr_idx)
11124    ,p_event_date               => l_array_event_date(hdr_idx)
11125    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
11126    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
11127    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
11128    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
11129    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
11130    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
11131    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
11132    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
11133    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
11134    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
11135    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
11136    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
11137    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
11138    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
11142 -- set the status of entry to C_VALID (0)
11139    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
11140 
11141 --
11143 --
11144 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11145 
11146 --
11147 -- initialize a row for ae header
11148 --
11149 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
11150 
11151 l_event_id := l_array_event_id(hdr_idx);
11152 
11153 --
11154 -- storing the hdr_idx for event. May be used by line cursor.
11155 --
11156 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
11157 
11158 --
11159 -- store sources from header extract. This can be improved to
11160 -- store only those sources from header extract that may be used in lines
11161 --
11162 
11163 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
11164 g_array_event(l_event_id).array_value_num('source_4') := l_array_source_4(hdr_idx);
11165 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
11166 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
11167 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
11168 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
11169 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
11170 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
11171 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
11172 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
11173 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
11174 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
11175 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
11176 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
11177 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
11178 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
11179 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
11180 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
11181 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
11182 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
11183 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
11184 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
11185 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
11186 g_array_event(l_event_id).array_value_char('source_25') := l_array_source_25(hdr_idx);
11187 g_array_event(l_event_id).array_value_date('source_26') := l_array_source_26(hdr_idx);
11188 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
11189 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
11190 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
11191 
11192 --
11193 -- initilaize the status of ae headers for diffrent balance types
11194 -- the status is initialised to C_NOT_CREATED (2)
11195 --
11196 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11197 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11198 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11199 
11200 --
11201 -- call api to validate and store accounting attributes for header
11202 --
11203 
11204 ------------------------------------------------------------
11205 -- Accrual Reversal : to get date for Standard Source (NONE)
11206 ------------------------------------------------------------
11207 l_acc_rev_gl_date_source := NULL;
11208 
11209      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
11210       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
11211 
11212 
11213 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
11214 
11215 XLA_AE_HEADER_PKG.SetJeCategoryName;
11216 
11217 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
11218 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
11219 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
11220 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
11221 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
11222 
11223 
11224 
11225 
11226 --
11227 --accounting attribute enhancement, bug 3612931
11228 --
11229 l_trx_reversal_source := SUBSTR(NULL, 1,30);
11230 
11231 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
11232    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
11233 
11234    xla_accounting_err_pkg.build_message
11235       (p_appli_s_name            => 'XLA'
11236       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
11237       ,p_token_1                 => 'ACCT_ATTR_NAME'
11238       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
11239       ,p_token_2                 => 'PRODUCT_NAME'
11240       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11241       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11242       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
11243       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11244 
11245 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
11246    --
11250    xla_ae_lines_pkg.SetTrxReversalAttrs
11247    -- following sets the accounting attributes needed to reverse
11248    -- accounting for a distributeion
11249    --
11251       (p_event_id              => l_event_id
11252       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
11253       ,p_trx_reversal_source   => l_trx_reversal_source);
11254 
11255 END IF;
11256 
11257 
11258 ----------------------------------------------------------------
11259 -- 4262811 -  update the header statuses to invalid in need be
11260 ----------------------------------------------------------------
11261 --
11262 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
11263 
11264 
11265   -----------------------------------------------
11266   -- No accrual reversal for the event class/type
11267   -----------------------------------------------
11268 ----------------------------------------------------------------
11269 
11270 --
11271 -- this ends the header loop iteration for one bulk fetch
11272 --
11273 END LOOP;
11274 
11275 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
11276 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
11277 
11278 --
11279 -- insert dummy rows into lines gt table that were created due to
11280 -- transaction reversals
11281 --
11282 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
11283    l_result := XLA_AE_LINES_PKG.InsertLines;
11284 END IF;
11285 
11286 --
11287 -- reset the temp_line_num for each set of events fetched from header
11288 -- cursor rather than doing it for each new event in line cursor
11289 -- Bug 3939231
11290 --
11291 xla_ae_lines_pkg.g_temp_line_num := 0;
11292 
11293 
11294 
11295 --
11296 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
11297 --
11298 --
11299 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11300 
11301       trace
11302          (p_msg      => 'SQL - FETCH line_cur'
11303          ,p_level    => C_LEVEL_STATEMENT
11304          ,p_module   => l_log_module);
11305 
11306 END IF;
11307 --
11308 --
11309 LOOP
11310   --
11311   FETCH line_cur BULK COLLECT INTO
11312         l_array_entity_id
11313       , l_array_legal_entity_id
11314       , l_array_entity_code
11315       , l_array_transaction_num
11316       , l_array_event_id
11317       , l_array_class_code
11318       , l_array_event_type
11319       , l_array_event_number
11320       , l_array_event_date
11321       , l_array_transaction_date
11322       , l_array_reference_num_1
11323       , l_array_reference_num_2
11324       , l_array_reference_num_3
11325       , l_array_reference_num_4
11326       , l_array_reference_char_1
11327       , l_array_reference_char_2
11328       , l_array_reference_char_3
11329       , l_array_reference_char_4
11330       , l_array_reference_date_1
11331       , l_array_reference_date_2
11332       , l_array_reference_date_3
11333       , l_array_reference_date_4
11334       , l_array_event_created_by
11335       , l_array_budgetary_control_flag
11336       , l_array_extract_line_num 
11337       LIMIT l_rows;
11338 
11339   --
11340   IF (C_LEVEL_EVENT >= g_log_level) THEN
11341             trace
11342                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
11343                ,p_level    => C_LEVEL_EVENT
11344                ,p_module   => l_log_module);
11345   END IF;
11346   --
11347   EXIT WHEN l_array_entity_id.count = 0;
11348 
11349   XLA_AE_LINES_PKG.g_rec_lines := null;
11350 
11351 --
11352 -- Bug 4458708
11353 --
11354 XLA_AE_LINES_PKG.g_LineNumber := 0;
11355 --
11356 --
11357 
11358 FOR Idx IN 1..l_array_event_id.count LOOP
11359    --
11360    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
11361    --
11362    l_event_id := l_array_event_id(idx);  -- 5648433
11363 
11364    --
11365    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11366    --
11367 
11368    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
11369              (g_array_event(l_event_id).array_value_num('header_index'))
11370          ,'N'
11371          ) <> 'Y'
11372    THEN
11373       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11374          trace
11375             (p_msg      => 'Trancaction revesal option is not Y '
11376             ,p_level    => C_LEVEL_STATEMENT
11377             ,p_module   => l_log_module);
11378       END IF;
11379 
11380 --
11381 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
11382 --
11383 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11384 --
11385 -- set event info as cache for other routines to refer event attributes
11386 --
11387 
11388 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
11389    l_previous_event_id := l_event_id;
11390 
11391    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11392       (p_application_id           => p_application_id
11393       ,p_primary_ledger_id        => p_primary_ledger_id
11394       ,p_base_ledger_id           => p_base_ledger_id
11395       ,p_target_ledger_id         => p_target_ledger_id
11396       ,p_entity_id                => l_array_entity_id(Idx)
11397       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
11398       ,p_entity_code              => l_array_entity_code(Idx)
11399       ,p_transaction_num          => l_array_transaction_num(Idx)
11400       ,p_event_id                 => l_array_event_id(Idx)
11401       ,p_event_class_code         => l_array_class_code(Idx)
11402       ,p_event_type_code          => l_array_event_type(Idx)
11406       ,p_reference_num_1          => l_array_reference_num_1(Idx)
11403       ,p_event_number             => l_array_event_number(Idx)
11404       ,p_event_date               => l_array_event_date(Idx)
11405       ,p_transaction_date         => l_array_transaction_date(Idx)
11407       ,p_reference_num_2          => l_array_reference_num_2(Idx)
11408       ,p_reference_num_3          => l_array_reference_num_3(Idx)
11409       ,p_reference_num_4          => l_array_reference_num_4(Idx)
11410       ,p_reference_char_1         => l_array_reference_char_1(Idx)
11411       ,p_reference_char_2         => l_array_reference_char_2(Idx)
11412       ,p_reference_char_3         => l_array_reference_char_3(Idx)
11413       ,p_reference_char_4         => l_array_reference_char_4(Idx)
11414       ,p_reference_date_1         => l_array_reference_date_1(Idx)
11415       ,p_reference_date_2         => l_array_reference_date_2(Idx)
11416       ,p_reference_date_3         => l_array_reference_date_3(Idx)
11417       ,p_reference_date_4         => l_array_reference_date_4(Idx)
11418       ,p_event_created_by         => l_array_event_created_by(Idx)
11419       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
11420        --
11421 END IF;
11422 
11423 
11424 
11425 --
11426 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
11427 
11428 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
11429 
11430 IF l_continue_with_lines THEN
11431    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
11432       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
11433 
11434       xla_accounting_err_pkg.build_message
11435          (p_appli_s_name            => 'XLA'
11436          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
11437          ,p_token_1                 => 'LINE_NUMBER'
11438          ,p_value_1                 => l_array_extract_line_num(Idx)
11439          ,p_token_2                 => 'PRODUCT_NAME'
11440          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11441          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11442          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
11443          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11444 
11445    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
11446       --
11447       -- following sets the accounting attributes needed to reverse
11448       -- accounting for a distributeion
11449       --
11450 
11451       --
11452       -- 5217187
11453       --
11454       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
11455       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
11456                                        g_array_event(l_event_id).array_value_num('header_index'));
11457       --
11458       --
11459 
11460       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
11461       l_rec_rev_acct_attrs.array_char_value(2)  := g_array_event(l_event_id).array_value_char('source_9');
11462       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
11463       l_rec_rev_acct_attrs.array_num_value(3)  := g_array_event(l_event_id).array_value_num('source_10');
11464       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
11465       l_rec_rev_acct_attrs.array_char_value(4)  := g_array_event(l_event_id).array_value_char('source_11');
11466       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
11467       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_12');
11468       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
11469       l_rec_rev_acct_attrs.array_num_value(6)  := g_array_event(l_event_id).array_value_num('source_17');
11470       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
11471       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_18');
11472       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
11473       l_rec_rev_acct_attrs.array_char_value(8)  := g_array_event(l_event_id).array_value_char('source_19');
11474 
11475 
11476       xla_ae_lines_pkg.SetAcctReversalAttrs
11477          (p_event_id             => l_event_id
11478          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
11479          ,p_calculate_acctd_flag => l_calculate_acctd_flag
11480          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
11481    END IF;
11482 
11483    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
11484        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
11485 
11486 --
11487 AcctLineType_9 (
11488  p_application_id  => p_application_id
11489  ,p_event_id     => l_event_id
11490  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11491  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11492  ,p_actual_flag => l_actual_flag
11493  ,p_balance_type_code => l_balance_type_code
11494  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11495  
11496  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
11497  , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
11498  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11499  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11500  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11501  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11502  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11503  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11504  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11505  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11506  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11510 If(l_balance_type_code = 'A') THEN
11507  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11508  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11509  );
11511   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11512 END IF;
11513 
11514 --
11515 
11516 
11517 --
11518 AcctLineType_11 (
11519  p_application_id  => p_application_id
11520  ,p_event_id     => l_event_id
11521  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11522  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11523  ,p_actual_flag => l_actual_flag
11524  ,p_balance_type_code => l_balance_type_code
11525  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11526  
11527  , p_source_4 => g_array_event(l_event_id).array_value_num('source_4')
11528  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11529  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11530  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11531  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11532  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11533  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11534  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11535  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11536  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11537  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11538  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11539  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
11540  );
11541 If(l_balance_type_code = 'A') THEN
11542   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11543 END IF;
11544 
11545 --
11546 
11547 
11548 --
11549 AcctLineType_13 (
11550  p_application_id  => p_application_id
11551  ,p_event_id     => l_event_id
11552  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11553  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11554  ,p_actual_flag => l_actual_flag
11555  ,p_balance_type_code => l_balance_type_code
11556  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11557  
11558  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
11559  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11560  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11561  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11562  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11563  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11564  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11565  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11566  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11567  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11568  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11569  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11570  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
11571  );
11572 If(l_balance_type_code = 'A') THEN
11573   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11574 END IF;
11575 
11576 --
11577 
11578 
11579 --
11580 AcctLineType_15 (
11581  p_application_id  => p_application_id
11582  ,p_event_id     => l_event_id
11583  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11584  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11585  ,p_actual_flag => l_actual_flag
11586  ,p_balance_type_code => l_balance_type_code
11587  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11588  
11589  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
11590  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11591  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11592  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11593  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11594  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11595  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11596  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11597  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11598  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11599  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11600  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11601  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11602  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11603  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
11604  );
11605 If(l_balance_type_code = 'A') THEN
11606   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11607 END IF;
11608 
11609 --
11610 
11611 
11612 --
11613 AcctLineType_16 (
11614  p_application_id  => p_application_id
11615  ,p_event_id     => l_event_id
11616  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11617  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11618  ,p_actual_flag => l_actual_flag
11619  ,p_balance_type_code => l_balance_type_code
11620  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11621  
11622  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
11623  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11624  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11625  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11626  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11627  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11628  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11632  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
11629  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11630  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11631  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11633  , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
11634  , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
11635  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
11636  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
11637  );
11638 If(l_balance_type_code = 'A') THEN
11639   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11640 END IF;
11641 
11642 --
11643 
11644 
11645 --
11646 AcctLineType_18 (
11647  p_application_id  => p_application_id
11648  ,p_event_id     => l_event_id
11649  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11650  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11651  ,p_actual_flag => l_actual_flag
11652  ,p_balance_type_code => l_balance_type_code
11653  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11654  
11655  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
11656  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11657  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11658  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11659  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11660  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11661  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
11662  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
11663  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
11664  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11665  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11666  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11667  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11668  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11669  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
11670  );
11671 If(l_balance_type_code = 'A') THEN
11672   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11673 END IF;
11674 
11675 --
11676 
11677 
11678 --
11679 AcctLineType_20 (
11680  p_application_id  => p_application_id
11681  ,p_event_id     => l_event_id
11682  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11683  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11684  ,p_actual_flag => l_actual_flag
11685  ,p_balance_type_code => l_balance_type_code
11686  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11687  
11688  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
11689  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
11690  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
11691  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
11692  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
11693  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
11694  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
11695  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
11696  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
11697  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
11698  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
11699  , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
11700  , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
11701  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
11702  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
11703  );
11704 If(l_balance_type_code = 'A') THEN
11705   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11706 END IF;
11707 
11708 --
11709 
11710       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
11711       -- or secondary ledger that has different currency with primary
11712       -- or alc that is calculated by sla
11713       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
11714             (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'))
11715 
11716 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
11717 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
11718           AND (l_actual_flag = 'A')) THEN
11719         XLA_AE_LINES_PKG.CreateGainOrLossLines(
11720           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
11721          ,p_application_id   => p_application_id
11722          ,p_amb_context_code => 'DEFAULT'
11723          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
11724          ,p_event_class_code => C_EVENT_CLASS_CODE
11725          ,p_event_type_code  => C_EVENT_TYPE_CODE
11726          
11727          ,p_gain_ccid        => -1
11728          ,p_loss_ccid        => -1
11729 
11730          ,p_actual_flag      => l_actual_flag
11731          ,p_enc_flag         => null
11732          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
11733          ,p_enc_g_l_ref      => null
11734          );
11735       END IF;
11736    END IF;
11737 END IF;
11738 
11739    ELSE
11740       --
11741       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11742       --
11743       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11744          trace
11745             (p_msg      => 'Trancaction revesal option is Y'
11749    END IF;
11746             ,p_level    => C_LEVEL_STATEMENT
11747             ,p_module   => l_log_module);
11748       END IF;
11750 
11751 END LOOP;
11752 l_result := XLA_AE_LINES_PKG.InsertLines ;
11753 end loop;
11754 close line_cur;
11755 
11756 
11757 --
11758 -- insert headers into xla_ae_headers_gt table
11759 --
11760 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
11761 
11762 -- insert into errors table here.
11763 
11764 END LOOP;
11765 
11766 --
11767 -- 4865292
11768 --
11769 -- Compare g_hdr_extract_count with event count in
11770 -- CreateHeadersAndLines.
11771 --
11772 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
11773 
11774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11775    trace (p_msg     => '# rows extracted from header extract objects '
11776                     || ' (running total): '
11777                     || g_hdr_extract_count
11778          ,p_level   => C_LEVEL_STATEMENT
11779          ,p_module  => l_log_module);
11780 END IF;
11781 
11782 CLOSE header_cur;
11783 --
11784 
11785 --
11786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11787    trace
11788       (p_msg      => 'END of EventType_26'
11789       ,p_level    => C_LEVEL_PROCEDURE
11790       ,p_module   => l_log_module);
11791 END IF;
11792 --
11793 RETURN l_result;
11794 EXCEPTION
11795 WHEN xla_exceptions_pkg.application_exception THEN
11796    
11797 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
11798 
11799    
11800 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
11801 
11802    RAISE;
11803 WHEN OTHERS THEN
11804    xla_exceptions_pkg.raise_message
11805       (p_location => 'XLA_00260_AAD_S_000001_PKG.EventType_26');
11806 END EventType_26;
11807 --
11808 
11809 ---------------------------------------
11810 --
11811 -- PRIVATE PROCEDURE
11812 --         insert_sources_27
11813 --
11814 ----------------------------------------
11815 --
11816 PROCEDURE insert_sources_27(
11817                                 p_target_ledger_id       IN NUMBER
11818                               , p_language               IN VARCHAR2
11819                               , p_sla_ledger_id          IN NUMBER
11820                               , p_pad_start_date         IN DATE
11821                               , p_pad_end_date           IN DATE
11822                          )
11823 IS
11824 
11825 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CE_BAT_UNCLEARED';
11826 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BAT_CLASS';
11827 p_apps_owner                   VARCHAR2(30);
11828 l_log_module                   VARCHAR2(240);
11829 BEGIN
11830 IF g_log_enabled THEN
11831       l_log_module := C_DEFAULT_MODULE||'.insert_sources_27';
11832 END IF;
11833 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11834 
11835       trace
11836          (p_msg      => 'BEGIN of insert_sources_27'
11837          ,p_level    => C_LEVEL_PROCEDURE
11838          ,p_module   => l_log_module);
11839 
11840 END IF;
11841 
11842 -- select APPS owner
11843 SELECT oracle_username
11844   INTO p_apps_owner
11845   FROM fnd_oracle_userid
11846  WHERE read_only_flag = 'U'
11847 ;
11848 
11849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11850       trace
11851          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
11852                         ' - p_language = '||p_language||
11853                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
11854                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
11855                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
11856                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
11857          ,p_level    => C_LEVEL_STATEMENT
11858          ,p_module   => l_log_module);
11859 END IF;
11860 
11861 
11862 --
11863 INSERT INTO xla_diag_sources --hdr1
11864 (
11865         event_id
11866       , ledger_id
11867       , sla_ledger_id
11868       , description_language
11869       , object_name
11870       , object_type_code
11871       , line_number
11872       , source_application_id
11873       , source_type_code
11874       , source_code
11875       , source_value
11876       , source_meaning
11877       , created_by
11878       , creation_date
11879       , last_update_date
11880       , last_updated_by
11881       , last_update_login
11882       , program_update_date
11883       , program_application_id
11884       , program_id
11885       , request_id
11886 )
11887 SELECT
11888         event_id
11889       , p_target_ledger_id
11890       , p_sla_ledger_id
11891       , p_language
11892       , object_name
11893       , object_type_code
11894       , line_number
11895       , source_application_id
11896       , source_type_code
11897       , source_code
11898       , SUBSTR(source_value ,1,1996)
11899       , SUBSTR(source_meaning,1,200)
11900       , xla_environment_pkg.g_Usr_Id
11901       , TRUNC(SYSDATE)
11902       , TRUNC(SYSDATE)
11903       , xla_environment_pkg.g_Usr_Id
11904       , xla_environment_pkg.g_Login_Id
11905       , TRUNC(SYSDATE)
11906       , xla_environment_pkg.g_Prog_Appl_Id
11907       , xla_environment_pkg.g_Prog_Id
11908       , xla_environment_pkg.g_Req_Id
11909   FROM (
11910        SELECT xet.event_id                  event_id
11911             , 0                             line_number
11912             , CASE r
11913                WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V' 
11914                 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V' 
11915                 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V' 
11916                 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V' 
11920                 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V' 
11917                 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V' 
11918                 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V' 
11919                 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V' 
11921                 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V' 
11922                 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V' 
11923                 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V' 
11924                 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V' 
11925                 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V' 
11926                 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V' 
11927                 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V' 
11928                 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V' 
11929                 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V' 
11930                 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V' 
11931                 WHEN 19 THEN 'CE_XLA_EXT_HEADERS_V' 
11932                 WHEN 20 THEN 'CE_XLA_EXT_HEADERS_V' 
11933                 WHEN 21 THEN 'CE_XLA_EXT_HEADERS_V' 
11934                 WHEN 22 THEN 'CE_XLA_EXT_HEADERS_V' 
11935                 WHEN 23 THEN 'CE_XLA_EXT_HEADERS_V' 
11936                 WHEN 24 THEN 'CE_XLA_EXT_HEADERS_V' 
11937                 WHEN 25 THEN 'CE_XLA_EXT_HEADERS_V' 
11938                 WHEN 26 THEN 'CE_XLA_EXT_HEADERS_V' 
11939                 WHEN 27 THEN 'CE_XLA_EXT_HEADERS_V' 
11940                 
11941                ELSE null
11942               END                           object_name
11943             , CASE r
11944                 WHEN 1 THEN 'HEADER' 
11945                 WHEN 2 THEN 'HEADER' 
11946                 WHEN 3 THEN 'HEADER' 
11947                 WHEN 4 THEN 'HEADER' 
11948                 WHEN 5 THEN 'HEADER' 
11949                 WHEN 6 THEN 'HEADER' 
11950                 WHEN 7 THEN 'HEADER' 
11951                 WHEN 8 THEN 'HEADER' 
11952                 WHEN 9 THEN 'HEADER' 
11953                 WHEN 10 THEN 'HEADER' 
11954                 WHEN 11 THEN 'HEADER' 
11955                 WHEN 12 THEN 'HEADER' 
11956                 WHEN 13 THEN 'HEADER' 
11957                 WHEN 14 THEN 'HEADER' 
11958                 WHEN 15 THEN 'HEADER' 
11959                 WHEN 16 THEN 'HEADER' 
11960                 WHEN 17 THEN 'HEADER' 
11961                 WHEN 18 THEN 'HEADER' 
11962                 WHEN 19 THEN 'HEADER' 
11963                 WHEN 20 THEN 'HEADER' 
11964                 WHEN 21 THEN 'HEADER' 
11965                 WHEN 22 THEN 'HEADER' 
11966                 WHEN 23 THEN 'HEADER' 
11967                 WHEN 24 THEN 'HEADER' 
11968                 WHEN 25 THEN 'HEADER' 
11969                 WHEN 26 THEN 'HEADER' 
11970                 WHEN 27 THEN 'HEADER' 
11971                 
11972                 ELSE null
11973               END                           object_type_code
11974             , CASE r
11975                 WHEN 1 THEN '260' 
11976                 WHEN 2 THEN '260' 
11977                 WHEN 3 THEN '260' 
11978                 WHEN 4 THEN '260' 
11979                 WHEN 5 THEN '260' 
11980                 WHEN 6 THEN '260' 
11981                 WHEN 7 THEN '260' 
11982                 WHEN 8 THEN '260' 
11983                 WHEN 9 THEN '260' 
11984                 WHEN 10 THEN '260' 
11985                 WHEN 11 THEN '260' 
11986                 WHEN 12 THEN '260' 
11987                 WHEN 13 THEN '260' 
11988                 WHEN 14 THEN '260' 
11989                 WHEN 15 THEN '260' 
11990                 WHEN 16 THEN '260' 
11991                 WHEN 17 THEN '260' 
11992                 WHEN 18 THEN '260' 
11993                 WHEN 19 THEN '260' 
11994                 WHEN 20 THEN '260' 
11995                 WHEN 21 THEN '260' 
11996                 WHEN 22 THEN '260' 
11997                 WHEN 23 THEN '260' 
11998                 WHEN 24 THEN '260' 
11999                 WHEN 25 THEN '260' 
12000                 WHEN 26 THEN '260' 
12001                 WHEN 27 THEN '260' 
12002                 
12003                 ELSE null
12004               END                           source_application_id
12005             , 'S'             source_type_code
12006             , CASE r
12007                 WHEN 1 THEN 'CF_BA_BANK_CHARGE_CCID' 
12008                 WHEN 2 THEN 'CF_BA_BANK_ERROR_CCID' 
12009                 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID' 
12010                 WHEN 4 THEN 'CF_BA_FX_CHARGE_CCID' 
12011                 WHEN 5 THEN 'CF_OFFSET_CCID' 
12012                 WHEN 6 THEN 'CF_CLEARED_CHARGE_AMOUNT' 
12013                 WHEN 7 THEN 'REVERSAL_INDICATOR' 
12014                 WHEN 8 THEN 'CASHFLOW_NUMBER' 
12015                 WHEN 9 THEN 'CASHFLOW_HIST_IDENTIFIER' 
12016                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
12017                 WHEN 11 THEN 'CF_BA_CURRENCY' 
12018                 WHEN 12 THEN 'CF_CLEARED_EXCHANGE_DATE' 
12019                 WHEN 13 THEN 'CF_CLEARED_EXCHANGE_RATE' 
12020                 WHEN 14 THEN 'CF_CLEARED_EXC_RATE_TYPE' 
12021                 WHEN 15 THEN 'REVERSAL_FIRST_DIST_ID' 
12022                 WHEN 16 THEN 'REVERSAL_SECOND_DIST_ID' 
12023                 WHEN 17 THEN 'REVERSAL_DIST_TYPE' 
12024                 WHEN 18 THEN 'CF_CLEARED_ERROR_AMOUNT' 
12025                 WHEN 19 THEN 'CF_FX_CHARGE_AMOUNT' 
12026                 WHEN 20 THEN 'CF_DIRECTION' 
12027                 WHEN 21 THEN 'CF_CLEARED_AMOUNT' 
12028                 WHEN 22 THEN 'CF_AMOUNT' 
12029                 WHEN 23 THEN 'CF_CURRENCY' 
12030                 WHEN 24 THEN 'CF_EXCHANGE_DATE' 
12031                 WHEN 25 THEN 'CF_EXCHANGE_RATE' 
12032                 WHEN 26 THEN 'CF_EXCHANGE_RATE_TYPE' 
12033                 WHEN 27 THEN 'ACCOUNTING_DATE' 
12034                 
12035                 ELSE null
12036               END                           source_code
12037             , CASE r
12038                 WHEN 1 THEN TO_CHAR(h1.CF_BA_BANK_CHARGE_CCID)
12039                 WHEN 2 THEN TO_CHAR(h1.CF_BA_BANK_ERROR_CCID)
12043                 WHEN 6 THEN TO_CHAR(h1.CF_CLEARED_CHARGE_AMOUNT)
12040                 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
12041                 WHEN 4 THEN TO_CHAR(h1.CF_BA_FX_CHARGE_CCID)
12042                 WHEN 5 THEN TO_CHAR(h1.CF_OFFSET_CCID)
12044                 WHEN 7 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
12045                 WHEN 8 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
12046                 WHEN 9 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
12047                 WHEN 10 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
12048                 WHEN 11 THEN TO_CHAR(h1.CF_BA_CURRENCY)
12049                 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
12050                 WHEN 13 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
12051                 WHEN 14 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
12052                 WHEN 15 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
12053                 WHEN 16 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
12054                 WHEN 17 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
12055                 WHEN 18 THEN TO_CHAR(h1.CF_CLEARED_ERROR_AMOUNT)
12056                 WHEN 19 THEN TO_CHAR(h1.CF_FX_CHARGE_AMOUNT)
12057                 WHEN 20 THEN TO_CHAR(h1.CF_DIRECTION)
12058                 WHEN 21 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
12059                 WHEN 22 THEN TO_CHAR(h1.CF_AMOUNT)
12060                 WHEN 23 THEN TO_CHAR(h1.CF_CURRENCY)
12061                 WHEN 24 THEN TO_CHAR(h1.CF_EXCHANGE_DATE)
12062                 WHEN 25 THEN TO_CHAR(h1.CF_EXCHANGE_RATE)
12063                 WHEN 26 THEN TO_CHAR(h1.CF_EXCHANGE_RATE_TYPE)
12064                 WHEN 27 THEN TO_CHAR(h1.ACCOUNTING_DATE)
12065                 
12066                 ELSE null
12067               END                           source_value
12068             , CASE r
12069                 WHEN 20 THEN fvl22.meaning
12070                 
12071                 ELSE null
12072               END               source_meaning
12073         FROM xla_events_gt     xet  
12074       , CE_XLA_EXT_HEADERS_V  h1
12075   , fnd_lookup_values    fvl22
12076             ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
12077        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
12078          AND xet.event_type_code = C_EVENT_TYPE_CODE
12079             AND h1.event_id = xet.event_id
12080    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
12081   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
12082   AND fvl22.view_application_id(+) = 260
12083   AND fvl22.language(+)            = USERENV('LANG')
12084   
12085 )
12086 ;
12087 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12088 
12089       trace
12090          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
12091          ,p_level    => C_LEVEL_STATEMENT
12092          ,p_module   => l_log_module);
12093 
12094 END IF;
12095 --
12096 
12097 
12098  
12099 
12100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12101       trace
12102          (p_msg      => 'END of insert_sources_27'
12103          ,p_level    => C_LEVEL_PROCEDURE
12104          ,p_module   => l_log_module);
12105 END IF;
12106 EXCEPTION
12107   WHEN xla_exceptions_pkg.application_exception THEN
12108       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12109             trace
12110                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12111                ,p_level    => C_LEVEL_EXCEPTION
12112                ,p_module   => l_log_module);
12113       END IF;
12114       RAISE;
12115   WHEN OTHERS THEN
12116       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12117             trace
12118                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12119                ,p_level    => C_LEVEL_EXCEPTION
12120                ,p_module   => l_log_module);
12121        END IF;
12122        xla_exceptions_pkg.raise_message
12123            (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_27');
12124 END insert_sources_27;
12125 --
12126 
12127 ---------------------------------------
12128 --
12129 -- PRIVATE FUNCTION
12130 --         EventType_27
12131 --
12132 ----------------------------------------
12133 --
12134 FUNCTION EventType_27
12135        (p_application_id         IN NUMBER
12136        ,p_base_ledger_id         IN NUMBER
12137        ,p_target_ledger_id       IN NUMBER
12138        ,p_language               IN VARCHAR2
12139        ,p_currency_code          IN VARCHAR2
12140        ,p_sla_ledger_id          IN NUMBER
12141        ,p_pad_start_date         IN DATE
12142        ,p_pad_end_date           IN DATE
12143        ,p_primary_ledger_id      IN NUMBER)
12144 RETURN BOOLEAN IS
12145 --
12146 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CE_BAT_UNCLEARED';
12147 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BAT_CLASS';
12148 
12149 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
12150 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
12151 --
12152 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12153 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12154 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12155 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12156 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12157 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12158 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12159 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12160 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12161 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12162 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12163 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12164 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12168 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12165 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12166 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12167 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12169 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12170 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12171 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12172 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12173 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12174 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
12175 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12176 
12177 l_event_id                             NUMBER;
12178 l_previous_event_id                    NUMBER;
12179 l_first_event_id                       NUMBER;
12180 l_last_event_id                        NUMBER;
12181 
12182 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
12183 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
12184 --
12185 --
12186 l_result                    BOOLEAN := TRUE;
12187 l_rows                      NUMBER  := 1000;
12188 l_event_type_name           VARCHAR2(80) := 'Bank Account Transfer Uncleared';
12189 l_event_class_name          VARCHAR2(80) := 'Bank Account Transfers';
12190 l_description               VARCHAR2(4000);
12191 l_transaction_reversal      NUMBER;
12192 l_ae_header_id              NUMBER;
12193 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
12194 l_log_module                VARCHAR2(240);
12195 --
12196 l_acct_reversal_source      VARCHAR2(30);
12197 l_trx_reversal_source       VARCHAR2(30);
12198 
12199 l_continue_with_lines       BOOLEAN := TRUE;
12200 --
12201 l_acc_rev_gl_date_source    DATE;                      -- 4262811
12202 --
12203 type t_array_event_id is table of number index by binary_integer;
12204 
12205 l_rec_array_event                    t_rec_array_event;
12206 l_null_rec_array_event               t_rec_array_event;
12207 l_array_ae_header_id                 xla_number_array_type;
12208 l_actual_flag                        VARCHAR2(1) := NULL;
12209 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
12210 l_balance_type_code                  VARCHAR2(1) :=NULL;
12211 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
12212 
12213 --
12214 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
12215 --
12216 
12217 TYPE t_array_source_3 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
12218 TYPE t_array_source_4 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_BANK_ERROR_CCID%TYPE INDEX BY BINARY_INTEGER;
12219 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
12220 TYPE t_array_source_6 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_FX_CHARGE_CCID%TYPE INDEX BY BINARY_INTEGER;
12221 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
12222 TYPE t_array_source_8 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12223 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
12224 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
12225 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
12226 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
12227 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
12228 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
12229 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
12230 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
12231 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
12232 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
12233 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
12234 TYPE t_array_source_20 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_ERROR_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12235 TYPE t_array_source_21 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_FX_CHARGE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12236 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
12237 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12238 TYPE t_array_source_24 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12239 TYPE t_array_source_25 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
12240 TYPE t_array_source_26 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
12241 TYPE t_array_source_27 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
12242 TYPE t_array_source_28 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
12243 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
12244 
12245 
12246 l_array_source_3              t_array_source_3;
12247 l_array_source_4              t_array_source_4;
12248 l_array_source_5              t_array_source_5;
12249 l_array_source_6              t_array_source_6;
12250 l_array_source_7              t_array_source_7;
12251 l_array_source_8              t_array_source_8;
12252 l_array_source_9              t_array_source_9;
12253 l_array_source_10              t_array_source_10;
12254 l_array_source_11              t_array_source_11;
12255 l_array_source_12              t_array_source_12;
12259 l_array_source_16              t_array_source_16;
12256 l_array_source_13              t_array_source_13;
12257 l_array_source_14              t_array_source_14;
12258 l_array_source_15              t_array_source_15;
12260 l_array_source_17              t_array_source_17;
12261 l_array_source_18              t_array_source_18;
12262 l_array_source_19              t_array_source_19;
12263 l_array_source_20              t_array_source_20;
12264 l_array_source_21              t_array_source_21;
12265 l_array_source_22              t_array_source_22;
12266 l_array_source_22_meaning      t_array_lookup_meaning;
12267 l_array_source_23              t_array_source_23;
12268 l_array_source_24              t_array_source_24;
12269 l_array_source_25              t_array_source_25;
12270 l_array_source_26              t_array_source_26;
12271 l_array_source_27              t_array_source_27;
12272 l_array_source_28              t_array_source_28;
12273 l_array_source_29              t_array_source_29;
12274 
12275 
12276 --
12277 CURSOR header_cur
12278 IS
12279 SELECT /*+ leading(xet) cardinality(xet,1) */
12280 -- Event Type Code: CE_BAT_UNCLEARED
12281 -- Event Class Code: BAT_CLASS
12282     xet.entity_id
12283   , xet.legal_entity_id
12284   , xet.entity_code
12285   , xet.transaction_number
12286   , xet.event_id
12287   , xet.event_class_code
12288   , xet.event_type_code
12289   , xet.event_number
12290   , xet.event_date
12291   , xet.transaction_date
12292   , xet.reference_num_1
12293   , xet.reference_num_2
12294   , xet.reference_num_3
12295   , xet.reference_num_4
12296   , xet.reference_char_1
12297   , xet.reference_char_2
12298   , xet.reference_char_3
12299   , xet.reference_char_4
12300   , xet.reference_date_1
12301   , xet.reference_date_2
12302   , xet.reference_date_3
12303   , xet.reference_date_4
12304   , xet.event_created_by
12305   , xet.budgetary_control_flag 
12306   , h1.CF_BA_BANK_CHARGE_CCID    source_3
12307   , h1.CF_BA_BANK_ERROR_CCID    source_4
12308   , h1.CF_BA_CASH_ACCT_CCID    source_5
12309   , h1.CF_BA_FX_CHARGE_CCID    source_6
12310   , h1.CF_OFFSET_CCID    source_7
12311   , h1.CF_CLEARED_CHARGE_AMOUNT    source_8
12312   , h1.REVERSAL_INDICATOR    source_9
12313   , h1.CASHFLOW_NUMBER    source_10
12314   , h1.CASHFLOW_HIST_IDENTIFIER    source_11
12315   , h1.DISTRIBUTION_TYPE    source_12
12316   , h1.CF_BA_CURRENCY    source_13
12317   , h1.CF_CLEARED_EXCHANGE_DATE    source_14
12318   , h1.CF_CLEARED_EXCHANGE_RATE    source_15
12319   , h1.CF_CLEARED_EXC_RATE_TYPE    source_16
12320   , h1.REVERSAL_FIRST_DIST_ID    source_17
12321   , h1.REVERSAL_SECOND_DIST_ID    source_18
12322   , h1.REVERSAL_DIST_TYPE    source_19
12323   , h1.CF_CLEARED_ERROR_AMOUNT    source_20
12324   , h1.CF_FX_CHARGE_AMOUNT    source_21
12325   , h1.CF_DIRECTION    source_22
12326   , fvl22.meaning   source_22_meaning
12327   , h1.CF_CLEARED_AMOUNT    source_23
12328   , h1.CF_AMOUNT    source_24
12329   , h1.CF_CURRENCY    source_25
12330   , h1.CF_EXCHANGE_DATE    source_26
12331   , h1.CF_EXCHANGE_RATE    source_27
12332   , h1.CF_EXCHANGE_RATE_TYPE    source_28
12333   , h1.ACCOUNTING_DATE    source_29
12334   FROM xla_events_gt     xet 
12335   , CE_XLA_EXT_HEADERS_V  h1
12336   , fnd_lookup_values    fvl22
12337  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
12338    and xet.event_type_code = C_EVENT_TYPE_CODE
12339    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
12340    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
12341   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
12342   AND fvl22.view_application_id(+) = 260
12343   AND fvl22.language(+)            = USERENV('LANG')
12344   
12345  ORDER BY event_id
12346 ;
12347 
12348 
12349 --
12350 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
12351 IS
12352 SELECT /*+ leading(xet) cardinality(xet,1) */
12353 -- Event Type Code: CE_BAT_UNCLEARED
12354 -- Event Class Code: BAT_CLASS
12355     xet.entity_id
12356    ,xet.legal_entity_id
12357    ,xet.entity_code
12358    ,xet.transaction_number
12359    ,xet.event_id
12360    ,xet.event_class_code
12361    ,xet.event_type_code
12362    ,xet.event_number
12363    ,xet.event_date
12364    ,xet.transaction_date
12365    ,xet.reference_num_1
12366    ,xet.reference_num_2
12367    ,xet.reference_num_3
12368    ,xet.reference_num_4
12369    ,xet.reference_char_1
12370    ,xet.reference_char_2
12371    ,xet.reference_char_3
12372    ,xet.reference_char_4
12373    ,xet.reference_date_1
12374    ,xet.reference_date_2
12375    ,xet.reference_date_3
12376    ,xet.reference_date_4
12377    ,xet.event_created_by
12378    ,xet.budgetary_control_flag  , 0 
12379   FROM xla_events_gt     xet  
12380  WHERE xet.event_id between x_first_event_id and x_last_event_id
12381    and xet.event_date between p_pad_start_date and p_pad_end_date
12382    and xet.event_type_code = C_EVENT_TYPE_CODE
12383    and xet.event_status_code <> 'N'  ;
12384 
12385 --
12386 BEGIN
12387 IF g_log_enabled THEN
12388    l_log_module := C_DEFAULT_MODULE||'.EventType_27';
12389 END IF;
12390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12391    trace
12392       (p_msg      => 'BEGIN of EventType_27'
12393       ,p_level    => C_LEVEL_PROCEDURE
12394       ,p_module   => l_log_module);
12395 END IF;
12396 
12397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12398    trace
12399       (p_msg      => 'p_application_id = '||p_application_id||
12400                      ' - p_base_ledger_id = '||p_base_ledger_id||
12401                      ' - p_target_ledger_id  = '||p_target_ledger_id||
12402                      ' - p_language = '||p_language||
12403                      ' - p_currency_code = '||p_currency_code||
12407 END IF;
12404                      ' - p_sla_ledger_id = '||p_sla_ledger_id
12405       ,p_level    => C_LEVEL_STATEMENT
12406       ,p_module   => l_log_module);
12408 --
12409 -- initialze arrays
12410 --
12411 g_array_event.DELETE;
12412 l_rec_array_event := l_null_rec_array_event;
12413 --
12414 --------------------------------------
12415 -- 4262811 Initialze MPA Line Number
12416 --------------------------------------
12417 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
12418 
12419 --
12420 
12421 --
12422 OPEN header_cur;
12423 --
12424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12425    trace
12426    (p_msg      => 'SQL - FETCH header_cur'
12427    ,p_level    => C_LEVEL_STATEMENT
12428    ,p_module   => l_log_module);
12429 END IF;
12430 --
12431 LOOP
12432 FETCH header_cur BULK COLLECT INTO
12433         l_array_entity_id
12434       , l_array_legal_entity_id
12435       , l_array_entity_code
12436       , l_array_transaction_num
12437       , l_array_event_id
12438       , l_array_class_code
12439       , l_array_event_type
12440       , l_array_event_number
12441       , l_array_event_date
12442       , l_array_transaction_date
12443       , l_array_reference_num_1
12444       , l_array_reference_num_2
12445       , l_array_reference_num_3
12446       , l_array_reference_num_4
12447       , l_array_reference_char_1
12448       , l_array_reference_char_2
12449       , l_array_reference_char_3
12450       , l_array_reference_char_4
12451       , l_array_reference_date_1
12452       , l_array_reference_date_2
12453       , l_array_reference_date_3
12454       , l_array_reference_date_4
12455       , l_array_event_created_by
12456       , l_array_budgetary_control_flag 
12457       , l_array_source_3
12458       , l_array_source_4
12459       , l_array_source_5
12460       , l_array_source_6
12461       , l_array_source_7
12462       , l_array_source_8
12463       , l_array_source_9
12464       , l_array_source_10
12465       , l_array_source_11
12466       , l_array_source_12
12467       , l_array_source_13
12468       , l_array_source_14
12469       , l_array_source_15
12470       , l_array_source_16
12471       , l_array_source_17
12472       , l_array_source_18
12473       , l_array_source_19
12474       , l_array_source_20
12475       , l_array_source_21
12476       , l_array_source_22
12477       , l_array_source_22_meaning
12478       , l_array_source_23
12479       , l_array_source_24
12480       , l_array_source_25
12481       , l_array_source_26
12482       , l_array_source_27
12483       , l_array_source_28
12484       , l_array_source_29
12485       LIMIT l_rows;
12486 --
12487 IF (C_LEVEL_EVENT >= g_log_level) THEN
12488    trace
12489    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
12490    ,p_level    => C_LEVEL_EVENT
12491    ,p_module   => l_log_module);
12492 END IF;
12493 --
12494 EXIT WHEN l_array_entity_id.COUNT = 0;
12495 
12496 -- initialize arrays
12497 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
12498 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
12499 
12500 --
12501 -- Bug 4458708
12502 --
12503 XLA_AE_LINES_PKG.g_LineNumber := 0;
12504 
12505 
12506 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
12507 g_last_hdr_idx := l_array_event_id.LAST;
12508 --
12509 -- loop for the headers. Each iteration is for each header extract row
12510 -- fetched in header cursor
12511 --
12512 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
12513 
12514 --
12515 -- set event info as cache for other routines to refer event attributes
12516 --
12517 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
12518    (p_application_id           => p_application_id
12519    ,p_primary_ledger_id        => p_primary_ledger_id
12520    ,p_base_ledger_id           => p_base_ledger_id
12521    ,p_target_ledger_id         => p_target_ledger_id
12522    ,p_entity_id                => l_array_entity_id(hdr_idx)
12523    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
12524    ,p_entity_code              => l_array_entity_code(hdr_idx)
12525    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
12526    ,p_event_id                 => l_array_event_id(hdr_idx)
12527    ,p_event_class_code         => l_array_class_code(hdr_idx)
12528    ,p_event_type_code          => l_array_event_type(hdr_idx)
12529    ,p_event_number             => l_array_event_number(hdr_idx)
12530    ,p_event_date               => l_array_event_date(hdr_idx)
12531    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
12532    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
12533    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
12534    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
12535    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
12536    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
12537    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
12538    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
12539    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
12540    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
12541    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
12542    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
12543    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
12544    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
12545    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
12546 
12547 --
12548 -- set the status of entry to C_VALID (0)
12549 --
12553 -- initialize a row for ae header
12550 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
12551 
12552 --
12554 --
12555 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
12556 
12557 l_event_id := l_array_event_id(hdr_idx);
12558 
12559 --
12560 -- storing the hdr_idx for event. May be used by line cursor.
12561 --
12562 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
12563 
12564 --
12565 -- store sources from header extract. This can be improved to
12566 -- store only those sources from header extract that may be used in lines
12567 --
12568 
12569 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
12570 g_array_event(l_event_id).array_value_num('source_4') := l_array_source_4(hdr_idx);
12571 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
12572 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
12573 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
12574 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
12575 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
12576 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
12577 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
12578 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
12579 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
12580 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
12581 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
12582 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
12583 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
12584 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
12585 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
12586 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
12587 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
12588 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
12589 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
12590 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
12591 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
12592 g_array_event(l_event_id).array_value_char('source_25') := l_array_source_25(hdr_idx);
12593 g_array_event(l_event_id).array_value_date('source_26') := l_array_source_26(hdr_idx);
12594 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
12595 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
12596 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
12597 
12598 --
12599 -- initilaize the status of ae headers for diffrent balance types
12600 -- the status is initialised to C_NOT_CREATED (2)
12601 --
12602 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12603 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12604 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12605 
12606 --
12607 -- call api to validate and store accounting attributes for header
12608 --
12609 
12610 ------------------------------------------------------------
12611 -- Accrual Reversal : to get date for Standard Source (NONE)
12612 ------------------------------------------------------------
12613 l_acc_rev_gl_date_source := NULL;
12614 
12615      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
12616       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
12617 
12618 
12619 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
12620 
12621 XLA_AE_HEADER_PKG.SetJeCategoryName;
12622 
12623 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
12624 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
12625 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
12626 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
12627 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
12628 
12629 
12630 
12631 
12632 --
12633 --accounting attribute enhancement, bug 3612931
12634 --
12635 l_trx_reversal_source := SUBSTR(NULL, 1,30);
12636 
12637 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
12638    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
12639 
12640    xla_accounting_err_pkg.build_message
12641       (p_appli_s_name            => 'XLA'
12642       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
12643       ,p_token_1                 => 'ACCT_ATTR_NAME'
12644       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
12645       ,p_token_2                 => 'PRODUCT_NAME'
12646       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
12647       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
12648       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
12649       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
12650 
12651 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
12652    --
12653    -- following sets the accounting attributes needed to reverse
12654    -- accounting for a distributeion
12655    --
12656    xla_ae_lines_pkg.SetTrxReversalAttrs
12660 
12657       (p_event_id              => l_event_id
12658       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
12659       ,p_trx_reversal_source   => l_trx_reversal_source);
12661 END IF;
12662 
12663 
12664 ----------------------------------------------------------------
12665 -- 4262811 -  update the header statuses to invalid in need be
12666 ----------------------------------------------------------------
12667 --
12668 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
12669 
12670 
12671   -----------------------------------------------
12672   -- No accrual reversal for the event class/type
12673   -----------------------------------------------
12674 ----------------------------------------------------------------
12675 
12676 --
12677 -- this ends the header loop iteration for one bulk fetch
12678 --
12679 END LOOP;
12680 
12681 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
12682 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
12683 
12684 --
12685 -- insert dummy rows into lines gt table that were created due to
12686 -- transaction reversals
12687 --
12688 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
12689    l_result := XLA_AE_LINES_PKG.InsertLines;
12690 END IF;
12691 
12692 --
12693 -- reset the temp_line_num for each set of events fetched from header
12694 -- cursor rather than doing it for each new event in line cursor
12695 -- Bug 3939231
12696 --
12697 xla_ae_lines_pkg.g_temp_line_num := 0;
12698 
12699 
12700 
12701 --
12702 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
12703 --
12704 --
12705 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12706 
12707       trace
12708          (p_msg      => 'SQL - FETCH line_cur'
12709          ,p_level    => C_LEVEL_STATEMENT
12710          ,p_module   => l_log_module);
12711 
12712 END IF;
12713 --
12714 --
12715 LOOP
12716   --
12717   FETCH line_cur BULK COLLECT INTO
12718         l_array_entity_id
12719       , l_array_legal_entity_id
12720       , l_array_entity_code
12721       , l_array_transaction_num
12722       , l_array_event_id
12723       , l_array_class_code
12724       , l_array_event_type
12725       , l_array_event_number
12726       , l_array_event_date
12727       , l_array_transaction_date
12728       , l_array_reference_num_1
12729       , l_array_reference_num_2
12730       , l_array_reference_num_3
12731       , l_array_reference_num_4
12732       , l_array_reference_char_1
12733       , l_array_reference_char_2
12734       , l_array_reference_char_3
12735       , l_array_reference_char_4
12736       , l_array_reference_date_1
12737       , l_array_reference_date_2
12738       , l_array_reference_date_3
12739       , l_array_reference_date_4
12740       , l_array_event_created_by
12741       , l_array_budgetary_control_flag
12742       , l_array_extract_line_num 
12743       LIMIT l_rows;
12744 
12745   --
12746   IF (C_LEVEL_EVENT >= g_log_level) THEN
12747             trace
12748                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
12749                ,p_level    => C_LEVEL_EVENT
12750                ,p_module   => l_log_module);
12751   END IF;
12752   --
12753   EXIT WHEN l_array_entity_id.count = 0;
12754 
12755   XLA_AE_LINES_PKG.g_rec_lines := null;
12756 
12757 --
12758 -- Bug 4458708
12759 --
12760 XLA_AE_LINES_PKG.g_LineNumber := 0;
12761 --
12762 --
12763 
12764 FOR Idx IN 1..l_array_event_id.count LOOP
12765    --
12766    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
12767    --
12768    l_event_id := l_array_event_id(idx);  -- 5648433
12769 
12770    --
12771    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
12772    --
12773 
12774    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
12775              (g_array_event(l_event_id).array_value_num('header_index'))
12776          ,'N'
12777          ) <> 'Y'
12778    THEN
12779       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12780          trace
12781             (p_msg      => 'Trancaction revesal option is not Y '
12782             ,p_level    => C_LEVEL_STATEMENT
12783             ,p_module   => l_log_module);
12784       END IF;
12785 
12786 --
12787 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
12788 --
12789 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
12790 --
12791 -- set event info as cache for other routines to refer event attributes
12792 --
12793 
12794 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
12795    l_previous_event_id := l_event_id;
12796 
12797    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
12798       (p_application_id           => p_application_id
12799       ,p_primary_ledger_id        => p_primary_ledger_id
12800       ,p_base_ledger_id           => p_base_ledger_id
12801       ,p_target_ledger_id         => p_target_ledger_id
12802       ,p_entity_id                => l_array_entity_id(Idx)
12803       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
12804       ,p_entity_code              => l_array_entity_code(Idx)
12805       ,p_transaction_num          => l_array_transaction_num(Idx)
12806       ,p_event_id                 => l_array_event_id(Idx)
12807       ,p_event_class_code         => l_array_class_code(Idx)
12808       ,p_event_type_code          => l_array_event_type(Idx)
12809       ,p_event_number             => l_array_event_number(Idx)
12810       ,p_event_date               => l_array_event_date(Idx)
12811       ,p_transaction_date         => l_array_transaction_date(Idx)
12815       ,p_reference_num_4          => l_array_reference_num_4(Idx)
12812       ,p_reference_num_1          => l_array_reference_num_1(Idx)
12813       ,p_reference_num_2          => l_array_reference_num_2(Idx)
12814       ,p_reference_num_3          => l_array_reference_num_3(Idx)
12816       ,p_reference_char_1         => l_array_reference_char_1(Idx)
12817       ,p_reference_char_2         => l_array_reference_char_2(Idx)
12818       ,p_reference_char_3         => l_array_reference_char_3(Idx)
12819       ,p_reference_char_4         => l_array_reference_char_4(Idx)
12820       ,p_reference_date_1         => l_array_reference_date_1(Idx)
12821       ,p_reference_date_2         => l_array_reference_date_2(Idx)
12822       ,p_reference_date_3         => l_array_reference_date_3(Idx)
12823       ,p_reference_date_4         => l_array_reference_date_4(Idx)
12824       ,p_event_created_by         => l_array_event_created_by(Idx)
12825       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
12826        --
12827 END IF;
12828 
12829 
12830 
12831 --
12832 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
12833 
12834 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
12835 
12836 IF l_continue_with_lines THEN
12837    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
12838       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
12839 
12840       xla_accounting_err_pkg.build_message
12841          (p_appli_s_name            => 'XLA'
12842          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
12843          ,p_token_1                 => 'LINE_NUMBER'
12844          ,p_value_1                 => l_array_extract_line_num(Idx)
12845          ,p_token_2                 => 'PRODUCT_NAME'
12846          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
12847          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
12848          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
12849          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
12850 
12851    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
12852       --
12853       -- following sets the accounting attributes needed to reverse
12854       -- accounting for a distributeion
12855       --
12856 
12857       --
12858       -- 5217187
12859       --
12860       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
12861       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
12862                                        g_array_event(l_event_id).array_value_num('header_index'));
12863       --
12864       --
12865 
12866       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
12867       l_rec_rev_acct_attrs.array_char_value(2)  := g_array_event(l_event_id).array_value_char('source_9');
12868       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
12869       l_rec_rev_acct_attrs.array_num_value(3)  := g_array_event(l_event_id).array_value_num('source_10');
12870       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
12871       l_rec_rev_acct_attrs.array_char_value(4)  := g_array_event(l_event_id).array_value_char('source_11');
12872       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
12873       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_12');
12874       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
12875       l_rec_rev_acct_attrs.array_num_value(6)  := g_array_event(l_event_id).array_value_num('source_17');
12876       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
12877       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_18');
12878       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
12879       l_rec_rev_acct_attrs.array_char_value(8)  := g_array_event(l_event_id).array_value_char('source_19');
12880 
12881 
12882       xla_ae_lines_pkg.SetAcctReversalAttrs
12883          (p_event_id             => l_event_id
12884          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
12885          ,p_calculate_acctd_flag => l_calculate_acctd_flag
12886          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
12887    END IF;
12888 
12889    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
12890        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
12891 
12892 --
12893 AcctLineType_8 (
12894  p_application_id  => p_application_id
12895  ,p_event_id     => l_event_id
12896  ,p_calculate_acctd_flag => l_calculate_acctd_flag
12897  ,p_calculate_g_l_flag => l_calculate_g_l_flag
12898  ,p_actual_flag => l_actual_flag
12899  ,p_balance_type_code => l_balance_type_code
12900  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12901  
12902  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
12903  , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
12904  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12905  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12906  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12907  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12908  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12909  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12910  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12911  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12912  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12913  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12914  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12915  );
12916 If(l_balance_type_code = 'A') THEN
12920 --
12917   l_actual_gain_loss_ref := l_gain_or_loss_ref;
12918 END IF;
12919 
12921 
12922 
12923 --
12924 AcctLineType_10 (
12925  p_application_id  => p_application_id
12926  ,p_event_id     => l_event_id
12927  ,p_calculate_acctd_flag => l_calculate_acctd_flag
12928  ,p_calculate_g_l_flag => l_calculate_g_l_flag
12929  ,p_actual_flag => l_actual_flag
12930  ,p_balance_type_code => l_balance_type_code
12931  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12932  
12933  , p_source_4 => g_array_event(l_event_id).array_value_num('source_4')
12934  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12935  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12936  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12937  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12938  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12939  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12940  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12941  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12942  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12943  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12944  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12945  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
12946  );
12947 If(l_balance_type_code = 'A') THEN
12948   l_actual_gain_loss_ref := l_gain_or_loss_ref;
12949 END IF;
12950 
12951 --
12952 
12953 
12954 --
12955 AcctLineType_12 (
12956  p_application_id  => p_application_id
12957  ,p_event_id     => l_event_id
12958  ,p_calculate_acctd_flag => l_calculate_acctd_flag
12959  ,p_calculate_g_l_flag => l_calculate_g_l_flag
12960  ,p_actual_flag => l_actual_flag
12961  ,p_balance_type_code => l_balance_type_code
12962  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12963  
12964  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
12965  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12966  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12967  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12968  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
12969  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
12970  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
12971  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
12972  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
12973  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
12974  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
12975  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
12976  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
12977  );
12978 If(l_balance_type_code = 'A') THEN
12979   l_actual_gain_loss_ref := l_gain_or_loss_ref;
12980 END IF;
12981 
12982 --
12983 
12984 
12985 --
12986 AcctLineType_14 (
12987  p_application_id  => p_application_id
12988  ,p_event_id     => l_event_id
12989  ,p_calculate_acctd_flag => l_calculate_acctd_flag
12990  ,p_calculate_g_l_flag => l_calculate_g_l_flag
12991  ,p_actual_flag => l_actual_flag
12992  ,p_balance_type_code => l_balance_type_code
12993  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
12994  
12995  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
12996  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
12997  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
12998  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
12999  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13000  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
13001  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
13002  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
13003  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
13004  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13005  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13006  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13007  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13008  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13009  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
13010  );
13011 If(l_balance_type_code = 'A') THEN
13012   l_actual_gain_loss_ref := l_gain_or_loss_ref;
13013 END IF;
13014 
13015 --
13016 
13017 
13018 --
13019 AcctLineType_17 (
13020  p_application_id  => p_application_id
13021  ,p_event_id     => l_event_id
13022  ,p_calculate_acctd_flag => l_calculate_acctd_flag
13023  ,p_calculate_g_l_flag => l_calculate_g_l_flag
13024  ,p_actual_flag => l_actual_flag
13025  ,p_balance_type_code => l_balance_type_code
13026  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13027  
13028  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
13029  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13030  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13031  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13032  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13033  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13034  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13035  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13036  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13040  , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
13037  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13038  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
13039  , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
13041  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
13042  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
13043  );
13044 If(l_balance_type_code = 'A') THEN
13045   l_actual_gain_loss_ref := l_gain_or_loss_ref;
13046 END IF;
13047 
13048 --
13049 
13050 
13051 --
13052 AcctLineType_19 (
13053  p_application_id  => p_application_id
13054  ,p_event_id     => l_event_id
13055  ,p_calculate_acctd_flag => l_calculate_acctd_flag
13056  ,p_calculate_g_l_flag => l_calculate_g_l_flag
13057  ,p_actual_flag => l_actual_flag
13058  ,p_balance_type_code => l_balance_type_code
13059  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13060  
13061  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
13062  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13063  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13064  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13065  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13066  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
13067  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
13068  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
13069  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
13070  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13071  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13072  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13073  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13074  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13075  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
13076  );
13077 If(l_balance_type_code = 'A') THEN
13078   l_actual_gain_loss_ref := l_gain_or_loss_ref;
13079 END IF;
13080 
13081 --
13082 
13083 
13084 --
13085 AcctLineType_21 (
13086  p_application_id  => p_application_id
13087  ,p_event_id     => l_event_id
13088  ,p_calculate_acctd_flag => l_calculate_acctd_flag
13089  ,p_calculate_g_l_flag => l_calculate_g_l_flag
13090  ,p_actual_flag => l_actual_flag
13091  ,p_balance_type_code => l_balance_type_code
13092  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13093  
13094  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
13095  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13096  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
13097  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
13098  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
13099  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13100  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
13101  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
13102  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
13103  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
13104  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
13105  , p_source_25 => g_array_event(l_event_id).array_value_char('source_25')
13106  , p_source_26 => g_array_event(l_event_id).array_value_date('source_26')
13107  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
13108  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
13109  );
13110 If(l_balance_type_code = 'A') THEN
13111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
13112 END IF;
13113 
13114 --
13115 
13116       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
13117       -- or secondary ledger that has different currency with primary
13118       -- or alc that is calculated by sla
13119       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
13120             (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'))
13121 
13122 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
13123 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
13124           AND (l_actual_flag = 'A')) THEN
13125         XLA_AE_LINES_PKG.CreateGainOrLossLines(
13126           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
13127          ,p_application_id   => p_application_id
13128          ,p_amb_context_code => 'DEFAULT'
13129          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
13130          ,p_event_class_code => C_EVENT_CLASS_CODE
13131          ,p_event_type_code  => C_EVENT_TYPE_CODE
13132          
13133          ,p_gain_ccid        => -1
13134          ,p_loss_ccid        => -1
13135 
13136          ,p_actual_flag      => l_actual_flag
13137          ,p_enc_flag         => null
13138          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
13139          ,p_enc_g_l_ref      => null
13140          );
13141       END IF;
13142    END IF;
13143 END IF;
13144 
13145    ELSE
13146       --
13147       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
13148       --
13149       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13150          trace
13151             (p_msg      => 'Trancaction revesal option is Y'
13152             ,p_level    => C_LEVEL_STATEMENT
13153             ,p_module   => l_log_module);
13154       END IF;
13155    END IF;
13159 end loop;
13156 
13157 END LOOP;
13158 l_result := XLA_AE_LINES_PKG.InsertLines ;
13160 close line_cur;
13161 
13162 
13163 --
13164 -- insert headers into xla_ae_headers_gt table
13165 --
13166 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
13167 
13168 -- insert into errors table here.
13169 
13170 END LOOP;
13171 
13172 --
13173 -- 4865292
13174 --
13175 -- Compare g_hdr_extract_count with event count in
13176 -- CreateHeadersAndLines.
13177 --
13178 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
13179 
13180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13181    trace (p_msg     => '# rows extracted from header extract objects '
13182                     || ' (running total): '
13183                     || g_hdr_extract_count
13184          ,p_level   => C_LEVEL_STATEMENT
13185          ,p_module  => l_log_module);
13186 END IF;
13187 
13188 CLOSE header_cur;
13189 --
13190 
13191 --
13192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13193    trace
13194       (p_msg      => 'END of EventType_27'
13195       ,p_level    => C_LEVEL_PROCEDURE
13196       ,p_module   => l_log_module);
13197 END IF;
13198 --
13199 RETURN l_result;
13200 EXCEPTION
13201 WHEN xla_exceptions_pkg.application_exception THEN
13202    
13203 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
13204 
13205    
13206 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
13207 
13208    RAISE;
13209 WHEN OTHERS THEN
13210    xla_exceptions_pkg.raise_message
13211       (p_location => 'XLA_00260_AAD_S_000001_PKG.EventType_27');
13212 END EventType_27;
13213 --
13214 
13215 ---------------------------------------
13216 --
13217 -- PRIVATE PROCEDURE
13218 --         insert_sources_28
13219 --
13220 ----------------------------------------
13221 --
13222 PROCEDURE insert_sources_28(
13223                                 p_target_ledger_id       IN NUMBER
13224                               , p_language               IN VARCHAR2
13225                               , p_sla_ledger_id          IN NUMBER
13226                               , p_pad_start_date         IN DATE
13227                               , p_pad_end_date           IN DATE
13228                          )
13229 IS
13230 
13231 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STMT_CLASS_ALL';
13232 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'STMT_CLASS';
13233 p_apps_owner                   VARCHAR2(30);
13234 l_log_module                   VARCHAR2(240);
13235 BEGIN
13236 IF g_log_enabled THEN
13237       l_log_module := C_DEFAULT_MODULE||'.insert_sources_28';
13238 END IF;
13239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13240 
13241       trace
13242          (p_msg      => 'BEGIN of insert_sources_28'
13243          ,p_level    => C_LEVEL_PROCEDURE
13244          ,p_module   => l_log_module);
13245 
13246 END IF;
13247 
13248 -- select APPS owner
13249 SELECT oracle_username
13250   INTO p_apps_owner
13251   FROM fnd_oracle_userid
13252  WHERE read_only_flag = 'U'
13253 ;
13254 
13255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13256       trace
13257          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
13258                         ' - p_language = '||p_language||
13259                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
13260                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
13261                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
13262                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
13263          ,p_level    => C_LEVEL_STATEMENT
13264          ,p_module   => l_log_module);
13265 END IF;
13266 
13267 
13268 --
13269 INSERT INTO xla_diag_sources --hdr2
13270 (
13271         event_id
13272       , ledger_id
13273       , sla_ledger_id
13274       , description_language
13275       , object_name
13276       , object_type_code
13277       , line_number
13278       , source_application_id
13279       , source_type_code
13280       , source_code
13281       , source_value
13282       , source_meaning
13283       , created_by
13284       , creation_date
13285       , last_update_date
13286       , last_updated_by
13287       , last_update_login
13288       , program_update_date
13289       , program_application_id
13290       , program_id
13291       , request_id
13292 )
13293 SELECT
13294         event_id
13295       , p_target_ledger_id
13296       , p_sla_ledger_id
13297       , p_language
13298       , object_name
13299       , object_type_code
13300       , line_number
13301       , source_application_id
13302       , source_type_code
13303       , source_code
13304       , SUBSTR(source_value ,1,1996)
13305       , SUBSTR(source_meaning ,1,200)
13306       , xla_environment_pkg.g_Usr_Id
13307       , TRUNC(SYSDATE)
13308       , TRUNC(SYSDATE)
13309       , xla_environment_pkg.g_Usr_Id
13310       , xla_environment_pkg.g_Login_Id
13311       , TRUNC(SYSDATE)
13312       , xla_environment_pkg.g_Prog_Appl_Id
13313       , xla_environment_pkg.g_Prog_Id
13314       , xla_environment_pkg.g_Req_Id
13315   FROM (
13316        SELECT xet.event_id                  event_id
13317             , 0                          line_number
13318             , CASE r
13319                WHEN 1 THEN 'CE_XLA_EXT_HEADERS_V' 
13320                 WHEN 2 THEN 'CE_XLA_EXT_HEADERS_V' 
13321                 WHEN 3 THEN 'CE_XLA_EXT_HEADERS_V' 
13322                 WHEN 4 THEN 'CE_XLA_EXT_HEADERS_V' 
13323                 WHEN 5 THEN 'CE_XLA_EXT_HEADERS_V' 
13324                 WHEN 6 THEN 'CE_XLA_EXT_HEADERS_V' 
13328                 WHEN 10 THEN 'CE_XLA_EXT_HEADERS_V' 
13325                 WHEN 7 THEN 'CE_XLA_EXT_HEADERS_V' 
13326                 WHEN 8 THEN 'CE_XLA_EXT_HEADERS_V' 
13327                 WHEN 9 THEN 'CE_XLA_EXT_HEADERS_V' 
13329                 WHEN 11 THEN 'CE_XLA_EXT_HEADERS_V' 
13330                 WHEN 12 THEN 'CE_XLA_EXT_HEADERS_V' 
13331                 WHEN 13 THEN 'CE_XLA_EXT_HEADERS_V' 
13332                 WHEN 14 THEN 'CE_XLA_EXT_HEADERS_V' 
13333                 WHEN 15 THEN 'CE_XLA_EXT_HEADERS_V' 
13334                 WHEN 16 THEN 'CE_XLA_EXT_HEADERS_V' 
13335                 WHEN 17 THEN 'CE_XLA_EXT_HEADERS_V' 
13336                 WHEN 18 THEN 'CE_XLA_EXT_HEADERS_V' 
13337                 
13338                ELSE null
13339               END                           object_name
13340             , CASE r
13341                 WHEN 1 THEN 'HEADER' 
13342                 WHEN 2 THEN 'HEADER' 
13343                 WHEN 3 THEN 'HEADER' 
13344                 WHEN 4 THEN 'HEADER' 
13345                 WHEN 5 THEN 'HEADER' 
13346                 WHEN 6 THEN 'HEADER' 
13347                 WHEN 7 THEN 'HEADER' 
13348                 WHEN 8 THEN 'HEADER' 
13349                 WHEN 9 THEN 'HEADER' 
13350                 WHEN 10 THEN 'HEADER' 
13351                 WHEN 11 THEN 'HEADER' 
13352                 WHEN 12 THEN 'HEADER' 
13353                 WHEN 13 THEN 'HEADER' 
13354                 WHEN 14 THEN 'HEADER' 
13355                 WHEN 15 THEN 'HEADER' 
13356                 WHEN 16 THEN 'HEADER' 
13357                 WHEN 17 THEN 'HEADER' 
13358                 WHEN 18 THEN 'HEADER' 
13359                 
13360                 ELSE null
13361               END                           object_type_code
13362             , CASE r
13363                 WHEN 1 THEN '260' 
13364                 WHEN 2 THEN '260' 
13365                 WHEN 3 THEN '260' 
13366                 WHEN 4 THEN '260' 
13367                 WHEN 5 THEN '260' 
13368                 WHEN 6 THEN '260' 
13369                 WHEN 7 THEN '260' 
13370                 WHEN 8 THEN '260' 
13371                 WHEN 9 THEN '260' 
13372                 WHEN 10 THEN '260' 
13373                 WHEN 11 THEN '260' 
13374                 WHEN 12 THEN '260' 
13375                 WHEN 13 THEN '260' 
13376                 WHEN 14 THEN '260' 
13377                 WHEN 15 THEN '260' 
13378                 WHEN 16 THEN '260' 
13379                 WHEN 17 THEN '260' 
13380                 WHEN 18 THEN '260' 
13381                 
13382                 ELSE null
13383               END                           source_application_id
13384             , 'S'             source_type_code
13385             , CASE r
13386                 WHEN 1 THEN 'CF_REFERENCE_TEXT' 
13387                 WHEN 2 THEN 'CF_DESCRIPTION' 
13388                 WHEN 3 THEN 'CF_BA_CASH_ACCT_CCID' 
13389                 WHEN 4 THEN 'CF_OFFSET_CCID' 
13390                 WHEN 5 THEN 'REVERSAL_INDICATOR' 
13391                 WHEN 6 THEN 'CASHFLOW_NUMBER' 
13392                 WHEN 7 THEN 'CASHFLOW_HIST_IDENTIFIER' 
13393                 WHEN 8 THEN 'DISTRIBUTION_TYPE' 
13394                 WHEN 9 THEN 'CF_BA_CURRENCY' 
13395                 WHEN 10 THEN 'CF_CLEARED_EXCHANGE_DATE' 
13396                 WHEN 11 THEN 'CF_CLEARED_EXCHANGE_RATE' 
13397                 WHEN 12 THEN 'CF_CLEARED_EXC_RATE_TYPE' 
13398                 WHEN 13 THEN 'REVERSAL_FIRST_DIST_ID' 
13399                 WHEN 14 THEN 'REVERSAL_SECOND_DIST_ID' 
13400                 WHEN 15 THEN 'REVERSAL_DIST_TYPE' 
13401                 WHEN 16 THEN 'CF_DIRECTION' 
13402                 WHEN 17 THEN 'CF_CLEARED_AMOUNT' 
13403                 WHEN 18 THEN 'ACCOUNTING_DATE' 
13404                 
13405                 ELSE null
13406               END                           source_code
13407             , CASE r
13408                 WHEN 1 THEN TO_CHAR(h1.CF_REFERENCE_TEXT)
13409                 WHEN 2 THEN TO_CHAR(h1.CF_DESCRIPTION)
13410                 WHEN 3 THEN TO_CHAR(h1.CF_BA_CASH_ACCT_CCID)
13411                 WHEN 4 THEN TO_CHAR(h1.CF_OFFSET_CCID)
13412                 WHEN 5 THEN TO_CHAR(h1.REVERSAL_INDICATOR)
13413                 WHEN 6 THEN TO_CHAR(h1.CASHFLOW_NUMBER)
13414                 WHEN 7 THEN TO_CHAR(h1.CASHFLOW_HIST_IDENTIFIER)
13415                 WHEN 8 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
13416                 WHEN 9 THEN TO_CHAR(h1.CF_BA_CURRENCY)
13417                 WHEN 10 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_DATE)
13418                 WHEN 11 THEN TO_CHAR(h1.CF_CLEARED_EXCHANGE_RATE)
13419                 WHEN 12 THEN TO_CHAR(h1.CF_CLEARED_EXC_RATE_TYPE)
13420                 WHEN 13 THEN TO_CHAR(h1.REVERSAL_FIRST_DIST_ID)
13421                 WHEN 14 THEN TO_CHAR(h1.REVERSAL_SECOND_DIST_ID)
13422                 WHEN 15 THEN TO_CHAR(h1.REVERSAL_DIST_TYPE)
13423                 WHEN 16 THEN TO_CHAR(h1.CF_DIRECTION)
13424                 WHEN 17 THEN TO_CHAR(h1.CF_CLEARED_AMOUNT)
13425                 WHEN 18 THEN TO_CHAR(h1.ACCOUNTING_DATE)
13426                 
13427                 ELSE null
13428               END                           source_value
13429             , CASE r
13430                 WHEN 16 THEN fvl22.meaning
13431                 
13432                 ELSE null
13433               END               source_meaning
13434          FROM xla_events_gt     xet  
13435       , CE_XLA_EXT_HEADERS_V  h1
13436   , fnd_lookup_values    fvl22
13437              ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
13438          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
13439            AND xet.event_class_code = C_EVENT_CLASS_CODE
13440               AND h1.event_id = xet.event_id
13441    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
13442   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
13443   AND fvl22.view_application_id(+) = 260
13444   AND fvl22.language(+)            = USERENV('LANG')
13445   
13446 )
13450 
13447 ;
13448 --
13449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13451       trace
13452          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
13453          ,p_level    => C_LEVEL_STATEMENT
13454          ,p_module   => l_log_module);
13455 
13456 END IF;
13457 --
13458 
13459 
13460  
13461 
13462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13463       trace
13464          (p_msg      => 'END of insert_sources_28'
13465          ,p_level    => C_LEVEL_PROCEDURE
13466          ,p_module   => l_log_module);
13467 END IF;
13468 EXCEPTION
13469   WHEN xla_exceptions_pkg.application_exception THEN
13470       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13471             trace
13472                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13473                ,p_level    => C_LEVEL_EXCEPTION
13474                ,p_module   => l_log_module);
13475       END IF;
13476       RAISE;
13477   WHEN OTHERS THEN
13478       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13479             trace
13480                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13481                ,p_level    => C_LEVEL_EXCEPTION
13482                ,p_module   => l_log_module);
13483        END IF;
13484        xla_exceptions_pkg.raise_message
13485            (p_location => 'XLA_00260_AAD_S_000001_PKG.insert_sources_28');
13486 END insert_sources_28;
13487 --
13488 
13489 ---------------------------------------
13490 --
13491 -- PRIVATE FUNCTION
13492 --         EventClass_28
13493 --
13494 ----------------------------------------
13495 --
13496 FUNCTION EventClass_28
13497        (p_application_id         IN NUMBER
13498        ,p_base_ledger_id         IN NUMBER
13499        ,p_target_ledger_id       IN NUMBER
13500        ,p_language               IN VARCHAR2
13501        ,p_currency_code          IN VARCHAR2
13502        ,p_sla_ledger_id          IN NUMBER
13503        ,p_pad_start_date         IN DATE
13504        ,p_pad_end_date           IN DATE
13505        ,p_primary_ledger_id      IN NUMBER)
13506 RETURN BOOLEAN IS
13507 --
13508 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STMT_CLASS_ALL';
13509 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'STMT_CLASS';
13510 
13511 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
13512 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
13513 --
13514 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13515 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13516 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13517 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13518 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13519 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13520 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13521 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13522 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13523 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13524 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13525 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13526 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13527 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13528 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13529 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13530 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13531 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13532 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13533 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13534 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13535 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13536 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
13537 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13538 
13539 l_event_id                             NUMBER;
13540 l_previous_event_id                    NUMBER;
13541 l_first_event_id                       NUMBER;
13542 l_last_event_id                        NUMBER;
13543 
13544 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
13545 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
13546 --
13547 --
13548 l_result                    BOOLEAN := TRUE;
13549 l_rows                      NUMBER  := 1000;
13550 l_event_type_name           VARCHAR2(80) := 'All';
13551 l_event_class_name          VARCHAR2(80) := 'Bank Statement Cashflows';
13552 l_description               VARCHAR2(4000);
13553 l_transaction_reversal      NUMBER;
13554 l_ae_header_id              NUMBER;
13555 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
13556 l_log_module                VARCHAR2(240);
13557 --
13558 l_acct_reversal_source      VARCHAR2(30);
13559 l_trx_reversal_source       VARCHAR2(30);
13560 
13561 l_continue_with_lines       BOOLEAN := TRUE;
13562 --
13563 l_acc_rev_gl_date_source    DATE;                      -- 4262811
13564 --
13565 type t_array_event_id is table of number index by binary_integer;
13566 
13567 l_rec_array_event                    t_rec_array_event;
13568 l_null_rec_array_event               t_rec_array_event;
13569 l_array_ae_header_id                 xla_number_array_type;
13570 l_actual_flag                        VARCHAR2(1) := NULL;
13571 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
13572 l_balance_type_code                  VARCHAR2(1) :=NULL;
13576 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
13573 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
13574 
13575 --
13577 --
13578 
13579 TYPE t_array_source_1 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_REFERENCE_TEXT%TYPE INDEX BY BINARY_INTEGER;
13580 TYPE t_array_source_2 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
13581 TYPE t_array_source_5 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CASH_ACCT_CCID%TYPE INDEX BY BINARY_INTEGER;
13582 TYPE t_array_source_7 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_OFFSET_CCID%TYPE INDEX BY BINARY_INTEGER;
13583 TYPE t_array_source_9 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
13584 TYPE t_array_source_10 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_NUMBER%TYPE INDEX BY BINARY_INTEGER;
13585 TYPE t_array_source_11 IS TABLE OF CE_XLA_EXT_HEADERS_V.CASHFLOW_HIST_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
13586 TYPE t_array_source_12 IS TABLE OF CE_XLA_EXT_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
13587 TYPE t_array_source_13 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_BA_CURRENCY%TYPE INDEX BY BINARY_INTEGER;
13588 TYPE t_array_source_14 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_DATE%TYPE INDEX BY BINARY_INTEGER;
13589 TYPE t_array_source_15 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
13590 TYPE t_array_source_16 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_EXC_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
13591 TYPE t_array_source_17 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
13592 TYPE t_array_source_18 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
13593 TYPE t_array_source_19 IS TABLE OF CE_XLA_EXT_HEADERS_V.REVERSAL_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
13594 TYPE t_array_source_22 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_DIRECTION%TYPE INDEX BY BINARY_INTEGER;
13595 TYPE t_array_source_23 IS TABLE OF CE_XLA_EXT_HEADERS_V.CF_CLEARED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
13596 TYPE t_array_source_29 IS TABLE OF CE_XLA_EXT_HEADERS_V.ACCOUNTING_DATE%TYPE INDEX BY BINARY_INTEGER;
13597 
13598 
13599 l_array_source_1              t_array_source_1;
13600 l_array_source_2              t_array_source_2;
13601 l_array_source_5              t_array_source_5;
13602 l_array_source_7              t_array_source_7;
13603 l_array_source_9              t_array_source_9;
13604 l_array_source_10              t_array_source_10;
13605 l_array_source_11              t_array_source_11;
13606 l_array_source_12              t_array_source_12;
13607 l_array_source_13              t_array_source_13;
13608 l_array_source_14              t_array_source_14;
13609 l_array_source_15              t_array_source_15;
13610 l_array_source_16              t_array_source_16;
13611 l_array_source_17              t_array_source_17;
13612 l_array_source_18              t_array_source_18;
13613 l_array_source_19              t_array_source_19;
13614 l_array_source_22              t_array_source_22;
13615 l_array_source_22_meaning      t_array_lookup_meaning;
13616 l_array_source_23              t_array_source_23;
13617 l_array_source_29              t_array_source_29;
13618 
13619 
13620 --
13621 CURSOR header_cur
13622 IS
13623 SELECT /*+ leading(xet) cardinality(xet,1) */
13624 -- Event Class Code: STMT_CLASS
13625     xet.entity_id
13626    ,xet.legal_entity_id
13627    ,xet.entity_code
13628    ,xet.transaction_number
13629    ,xet.event_id
13630    ,xet.event_class_code
13631    ,xet.event_type_code
13632    ,xet.event_number
13633    ,xet.event_date
13634    ,xet.transaction_date
13635    ,xet.reference_num_1
13636    ,xet.reference_num_2
13637    ,xet.reference_num_3
13638    ,xet.reference_num_4
13639    ,xet.reference_char_1
13640    ,xet.reference_char_2
13641    ,xet.reference_char_3
13642    ,xet.reference_char_4
13643    ,xet.reference_date_1
13644    ,xet.reference_date_2
13645    ,xet.reference_date_3
13646    ,xet.reference_date_4
13647    ,xet.event_created_by
13648    ,xet.budgetary_control_flag 
13649   , h1.CF_REFERENCE_TEXT    source_1
13650   , h1.CF_DESCRIPTION    source_2
13651   , h1.CF_BA_CASH_ACCT_CCID    source_5
13652   , h1.CF_OFFSET_CCID    source_7
13653   , h1.REVERSAL_INDICATOR    source_9
13654   , h1.CASHFLOW_NUMBER    source_10
13655   , h1.CASHFLOW_HIST_IDENTIFIER    source_11
13656   , h1.DISTRIBUTION_TYPE    source_12
13657   , h1.CF_BA_CURRENCY    source_13
13658   , h1.CF_CLEARED_EXCHANGE_DATE    source_14
13659   , h1.CF_CLEARED_EXCHANGE_RATE    source_15
13660   , h1.CF_CLEARED_EXC_RATE_TYPE    source_16
13661   , h1.REVERSAL_FIRST_DIST_ID    source_17
13662   , h1.REVERSAL_SECOND_DIST_ID    source_18
13663   , h1.REVERSAL_DIST_TYPE    source_19
13664   , h1.CF_DIRECTION    source_22
13665   , fvl22.meaning   source_22_meaning
13666   , h1.CF_CLEARED_AMOUNT    source_23
13667   , h1.ACCOUNTING_DATE    source_29
13668   FROM xla_events_gt     xet 
13669   , CE_XLA_EXT_HEADERS_V  h1
13670   , fnd_lookup_values    fvl22
13671  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
13672    and xet.event_class_code = C_EVENT_CLASS_CODE
13673    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
13674    AND fvl22.lookup_type(+)         = 'CE_CASHFLOW_DIRECTION'
13675   AND fvl22.lookup_code(+)         = h1.CF_DIRECTION
13676   AND fvl22.view_application_id(+) = 260
13677   AND fvl22.language(+)            = USERENV('LANG')
13678   
13679  ORDER BY event_id
13680 ;
13681 
13682 
13683 --
13684 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
13685 IS
13686 SELECT  /*+ leading(xet) cardinality(xet,1) */
13687 -- Event Class Code: STMT_CLASS
13688     xet.entity_id
13689    ,xet.legal_entity_id
13690    ,xet.entity_code
13691    ,xet.transaction_number
13692    ,xet.event_id
13693    ,xet.event_class_code
13694    ,xet.event_type_code
13695    ,xet.event_number
13696    ,xet.event_date
13700    ,xet.reference_num_3
13697    ,xet.transaction_date
13698    ,xet.reference_num_1
13699    ,xet.reference_num_2
13701    ,xet.reference_num_4
13702    ,xet.reference_char_1
13703    ,xet.reference_char_2
13704    ,xet.reference_char_3
13705    ,xet.reference_char_4
13706    ,xet.reference_date_1
13707    ,xet.reference_date_2
13708    ,xet.reference_date_3
13709    ,xet.reference_date_4
13710    ,xet.event_created_by
13711    ,xet.budgetary_control_flag
13712  , 0 
13713   FROM xla_events_gt     xet  
13714  WHERE xet.event_id between x_first_event_id and x_last_event_id
13715    and xet.event_date between p_pad_start_date and p_pad_end_date
13716    and xet.event_class_code = C_EVENT_CLASS_CODE
13717    and xet.event_status_code <> 'N'  ;
13718 
13719 --
13720 BEGIN
13721 IF g_log_enabled THEN
13722    l_log_module := C_DEFAULT_MODULE||'.EventClass_28';
13723 END IF;
13724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13725    trace
13726       (p_msg      => 'BEGIN of EventClass_28'
13727       ,p_level    => C_LEVEL_PROCEDURE
13728       ,p_module   => l_log_module);
13729 END IF;
13730 
13731 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13732    trace
13733       (p_msg      => 'p_application_id = '||p_application_id||
13734                      ' - p_base_ledger_id = '||p_base_ledger_id||
13735                      ' - p_target_ledger_id  = '||p_target_ledger_id||
13736                      ' - p_language = '||p_language||
13737                      ' - p_currency_code = '||p_currency_code||
13738                      ' - p_sla_ledger_id = '||p_sla_ledger_id
13739       ,p_level    => C_LEVEL_STATEMENT
13740       ,p_module   => l_log_module);
13741 END IF;
13742 --
13743 -- initialze arrays
13744 --
13745 g_array_event.DELETE;
13746 l_rec_array_event := l_null_rec_array_event;
13747 --
13748 --------------------------------------
13749 -- 4262811 Initialze MPA Line Number
13750 --------------------------------------
13751 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
13752 
13753 --
13754 
13755 --
13756 OPEN header_cur;
13757 --
13758 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13759    trace
13760    (p_msg      => 'SQL - FETCH header_cur'
13761    ,p_level    => C_LEVEL_STATEMENT
13762    ,p_module   => l_log_module);
13763 END IF;
13764 --
13765 LOOP
13766 FETCH header_cur BULK COLLECT INTO
13767         l_array_entity_id
13768       , l_array_legal_entity_id
13769       , l_array_entity_code
13770       , l_array_transaction_num
13771       , l_array_event_id
13772       , l_array_class_code
13773       , l_array_event_type
13774       , l_array_event_number
13775       , l_array_event_date
13776       , l_array_transaction_date
13777       , l_array_reference_num_1
13778       , l_array_reference_num_2
13779       , l_array_reference_num_3
13780       , l_array_reference_num_4
13781       , l_array_reference_char_1
13782       , l_array_reference_char_2
13783       , l_array_reference_char_3
13784       , l_array_reference_char_4
13785       , l_array_reference_date_1
13786       , l_array_reference_date_2
13787       , l_array_reference_date_3
13788       , l_array_reference_date_4
13789       , l_array_event_created_by
13790       , l_array_budgetary_control_flag 
13791       , l_array_source_1
13792       , l_array_source_2
13793       , l_array_source_5
13794       , l_array_source_7
13795       , l_array_source_9
13796       , l_array_source_10
13797       , l_array_source_11
13798       , l_array_source_12
13799       , l_array_source_13
13800       , l_array_source_14
13801       , l_array_source_15
13802       , l_array_source_16
13803       , l_array_source_17
13804       , l_array_source_18
13805       , l_array_source_19
13806       , l_array_source_22
13807       , l_array_source_22_meaning
13808       , l_array_source_23
13809       , l_array_source_29
13810       LIMIT l_rows;
13811 --
13812 IF (C_LEVEL_EVENT >= g_log_level) THEN
13813    trace
13814    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
13815    ,p_level    => C_LEVEL_EVENT
13816    ,p_module   => l_log_module);
13817 END IF;
13818 --
13819 EXIT WHEN l_array_entity_id.COUNT = 0;
13820 
13821 -- initialize arrays
13822 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
13823 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
13824 
13825 --
13826 -- Bug 4458708
13827 --
13828 XLA_AE_LINES_PKG.g_LineNumber := 0;
13829 
13830 
13831 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
13832 g_last_hdr_idx := l_array_event_id.LAST;
13833 --
13834 -- loop for the headers. Each iteration is for each header extract row
13835 -- fetched in header cursor
13836 --
13837 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
13838 
13839 --
13840 -- set event info as cache for other routines to refer event attributes
13841 --
13842 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
13843    (p_application_id           => p_application_id
13844    ,p_primary_ledger_id        => p_primary_ledger_id
13845    ,p_base_ledger_id           => p_base_ledger_id
13846    ,p_target_ledger_id         => p_target_ledger_id
13847    ,p_entity_id                => l_array_entity_id(hdr_idx)
13848    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
13849    ,p_entity_code              => l_array_entity_code(hdr_idx)
13850    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
13851    ,p_event_id                 => l_array_event_id(hdr_idx)
13852    ,p_event_class_code         => l_array_class_code(hdr_idx)
13853    ,p_event_type_code          => l_array_event_type(hdr_idx)
13857    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
13854    ,p_event_number             => l_array_event_number(hdr_idx)
13855    ,p_event_date               => l_array_event_date(hdr_idx)
13856    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
13858    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
13859    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
13860    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
13861    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
13862    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
13863    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
13864    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
13865    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
13866    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
13867    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
13868    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
13869    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
13870    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
13871 
13872 --
13873 -- set the status of entry to C_VALID (0)
13874 --
13875 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
13876 
13877 --
13878 -- initialize a row for ae header
13879 --
13880 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
13881 
13882 l_event_id := l_array_event_id(hdr_idx);
13883 
13884 --
13885 -- storing the hdr_idx for event. May be used by line cursor.
13886 --
13887 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
13888 
13889 --
13890 -- store sources from header extract. This can be improved to
13891 -- store only those sources from header extract that may be used in lines
13892 --
13893 
13894 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
13895 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
13896 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
13897 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
13898 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
13899 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
13900 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
13901 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
13902 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
13903 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
13904 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
13905 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
13906 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
13907 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
13908 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
13909 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
13910 g_array_event(l_event_id).array_value_char('source_22_meaning') := l_array_source_22_meaning(hdr_idx);
13911 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
13912 g_array_event(l_event_id).array_value_date('source_29') := l_array_source_29(hdr_idx);
13913 
13914 --
13915 -- initilaize the status of ae headers for diffrent balance types
13916 -- the status is initialised to C_NOT_CREATED (2)
13917 --
13918 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13919 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13920 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
13921 
13922 --
13923 -- call api to validate and store accounting attributes for header
13924 --
13925 
13926 ------------------------------------------------------------
13927 -- Accrual Reversal : to get date for Standard Source (NONE)
13928 ------------------------------------------------------------
13929 l_acc_rev_gl_date_source := NULL;
13930 
13931      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
13932       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_29');
13933 
13934 
13935 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
13936 
13937 XLA_AE_HEADER_PKG.SetJeCategoryName;
13938 
13939 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
13940 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
13941 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
13942 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
13943 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
13944 
13945 
13946 --
13947 xla_ae_header_pkg.SetHdrDescription(
13948    p_description => Description_1 (
13949    p_application_id => p_application_id 
13950  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
13951    )
13952 );
13953 --
13954 
13955 
13956 
13957 --
13958 --accounting attribute enhancement, bug 3612931
13959 --
13960 l_trx_reversal_source := SUBSTR(NULL, 1,30);
13961 
13962 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
13963    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
13964 
13965    xla_accounting_err_pkg.build_message
13966       (p_appli_s_name            => 'XLA'
13967       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
13971       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
13968       ,p_token_1                 => 'ACCT_ATTR_NAME'
13969       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
13970       ,p_token_2                 => 'PRODUCT_NAME'
13972       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
13973       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
13974       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
13975 
13976 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
13977    --
13978    -- following sets the accounting attributes needed to reverse
13979    -- accounting for a distributeion
13980    --
13981    xla_ae_lines_pkg.SetTrxReversalAttrs
13982       (p_event_id              => l_event_id
13983       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
13984       ,p_trx_reversal_source   => l_trx_reversal_source);
13985 
13986 END IF;
13987 
13988 
13989 ----------------------------------------------------------------
13990 -- 4262811 -  update the header statuses to invalid in need be
13991 ----------------------------------------------------------------
13992 --
13993 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
13994 
13995 
13996   -----------------------------------------------
13997   -- No accrual reversal for the event class/type
13998   -----------------------------------------------
13999 ----------------------------------------------------------------
14000 
14001 --
14002 -- this ends the header loop iteration for one bulk fetch
14003 --
14004 END LOOP;
14005 
14006 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
14007 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
14008 
14009 --
14010 -- insert dummy rows into lines gt table that were created due to
14011 -- transaction reversals
14012 --
14013 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
14014    l_result := XLA_AE_LINES_PKG.InsertLines;
14015 END IF;
14016 
14017 --
14018 -- reset the temp_line_num for each set of events fetched from header
14019 -- cursor rather than doing it for each new event in line cursor
14020 -- Bug 3939231
14021 --
14022 xla_ae_lines_pkg.g_temp_line_num := 0;
14023 
14024 
14025 
14026 --
14027 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
14028 --
14029 --
14030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14031 
14032       trace
14033          (p_msg      => 'SQL - FETCH line_cur'
14034          ,p_level    => C_LEVEL_STATEMENT
14035          ,p_module   => l_log_module);
14036 
14037 END IF;
14038 --
14039 --
14040 LOOP
14041   --
14042   FETCH line_cur BULK COLLECT INTO
14043         l_array_entity_id
14044       , l_array_legal_entity_id
14045       , l_array_entity_code
14046       , l_array_transaction_num
14047       , l_array_event_id
14048       , l_array_class_code
14049       , l_array_event_type
14050       , l_array_event_number
14051       , l_array_event_date
14052       , l_array_transaction_date
14053       , l_array_reference_num_1
14054       , l_array_reference_num_2
14055       , l_array_reference_num_3
14056       , l_array_reference_num_4
14057       , l_array_reference_char_1
14058       , l_array_reference_char_2
14059       , l_array_reference_char_3
14060       , l_array_reference_char_4
14061       , l_array_reference_date_1
14062       , l_array_reference_date_2
14063       , l_array_reference_date_3
14064       , l_array_reference_date_4
14065       , l_array_event_created_by
14066       , l_array_budgetary_control_flag
14067       , l_array_extract_line_num 
14068       LIMIT l_rows;
14069 
14070   --
14071   IF (C_LEVEL_EVENT >= g_log_level) THEN
14072             trace
14073                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
14074                ,p_level    => C_LEVEL_EVENT
14075                ,p_module   => l_log_module);
14076   END IF;
14077   --
14078   EXIT WHEN l_array_entity_id.count = 0;
14079 
14080   XLA_AE_LINES_PKG.g_rec_lines := null;
14081 
14082 --
14083 -- Bug 4458708
14084 --
14085 XLA_AE_LINES_PKG.g_LineNumber := 0;
14086 --
14087 --
14088 
14089 FOR Idx IN 1..l_array_event_id.count LOOP
14090    --
14091    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
14092    --
14093    l_event_id := l_array_event_id(idx);  -- 5648433
14094 
14095    --
14096    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14097    --
14098 
14099    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
14100              (g_array_event(l_event_id).array_value_num('header_index'))
14101          ,'N'
14102          ) <> 'Y'
14103    THEN
14104       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14105          trace
14106             (p_msg      => 'Trancaction revesal option is not Y '
14107             ,p_level    => C_LEVEL_STATEMENT
14108             ,p_module   => l_log_module);
14109       END IF;
14110 
14111 --
14112 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
14113 --
14114 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14115 --
14116 -- set event info as cache for other routines to refer event attributes
14117 --
14118 
14119 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
14120    l_previous_event_id := l_event_id;
14121 
14122    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14123       (p_application_id           => p_application_id
14127       ,p_entity_id                => l_array_entity_id(Idx)
14124       ,p_primary_ledger_id        => p_primary_ledger_id
14125       ,p_base_ledger_id           => p_base_ledger_id
14126       ,p_target_ledger_id         => p_target_ledger_id
14128       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
14129       ,p_entity_code              => l_array_entity_code(Idx)
14130       ,p_transaction_num          => l_array_transaction_num(Idx)
14131       ,p_event_id                 => l_array_event_id(Idx)
14132       ,p_event_class_code         => l_array_class_code(Idx)
14133       ,p_event_type_code          => l_array_event_type(Idx)
14134       ,p_event_number             => l_array_event_number(Idx)
14135       ,p_event_date               => l_array_event_date(Idx)
14136       ,p_transaction_date         => l_array_transaction_date(Idx)
14137       ,p_reference_num_1          => l_array_reference_num_1(Idx)
14138       ,p_reference_num_2          => l_array_reference_num_2(Idx)
14139       ,p_reference_num_3          => l_array_reference_num_3(Idx)
14140       ,p_reference_num_4          => l_array_reference_num_4(Idx)
14141       ,p_reference_char_1         => l_array_reference_char_1(Idx)
14142       ,p_reference_char_2         => l_array_reference_char_2(Idx)
14143       ,p_reference_char_3         => l_array_reference_char_3(Idx)
14144       ,p_reference_char_4         => l_array_reference_char_4(Idx)
14145       ,p_reference_date_1         => l_array_reference_date_1(Idx)
14146       ,p_reference_date_2         => l_array_reference_date_2(Idx)
14147       ,p_reference_date_3         => l_array_reference_date_3(Idx)
14148       ,p_reference_date_4         => l_array_reference_date_4(Idx)
14149       ,p_event_created_by         => l_array_event_created_by(Idx)
14150       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
14151        --
14152 END IF;
14153 
14154 
14155 
14156 --
14157 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
14158 
14159 l_acct_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_9'), 1,30);
14160 
14161 IF l_continue_with_lines THEN
14162    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
14163       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14164 
14165       xla_accounting_err_pkg.build_message
14166          (p_appli_s_name            => 'XLA'
14167          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
14168          ,p_token_1                 => 'LINE_NUMBER'
14169          ,p_value_1                 => l_array_extract_line_num(Idx)
14170          ,p_token_2                 => 'PRODUCT_NAME'
14171          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14172          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14173          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14174          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14175 
14176    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
14177       --
14178       -- following sets the accounting attributes needed to reverse
14179       -- accounting for a distributeion
14180       --
14181 
14182       --
14183       -- 5217187
14184       --
14185       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
14186       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
14187                                        g_array_event(l_event_id).array_value_num('header_index'));
14188       --
14189       --
14190 
14191       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
14192       l_rec_rev_acct_attrs.array_char_value(2)  := g_array_event(l_event_id).array_value_char('source_9');
14193       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
14194       l_rec_rev_acct_attrs.array_num_value(3)  := g_array_event(l_event_id).array_value_num('source_10');
14195       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
14196       l_rec_rev_acct_attrs.array_char_value(4)  := g_array_event(l_event_id).array_value_char('source_11');
14197       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
14198       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_12');
14199       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
14200       l_rec_rev_acct_attrs.array_num_value(6)  := g_array_event(l_event_id).array_value_num('source_17');
14201       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_ID2';
14202       l_rec_rev_acct_attrs.array_char_value(7)  := g_array_event(l_event_id).array_value_char('source_18');
14203       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'REVERSED_DISTRIBUTION_TYPE';
14204       l_rec_rev_acct_attrs.array_char_value(8)  := g_array_event(l_event_id).array_value_char('source_19');
14205 
14206 
14207       xla_ae_lines_pkg.SetAcctReversalAttrs
14208          (p_event_id             => l_event_id
14209          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
14210          ,p_calculate_acctd_flag => l_calculate_acctd_flag
14211          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
14212    END IF;
14213 
14214    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
14215        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
14216 
14217 --
14218 AcctLineType_22 (
14219  p_application_id  => p_application_id
14220  ,p_event_id     => l_event_id
14221  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14222  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14223  ,p_actual_flag => l_actual_flag
14224  ,p_balance_type_code => l_balance_type_code
14225  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14226  
14227  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14228  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
14229  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14233  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14230  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14231  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14232  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14234  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14235  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14236  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14237  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14238  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14239  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14240  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14241  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14242  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14243  );
14244 If(l_balance_type_code = 'A') THEN
14245   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14246 END IF;
14247 
14248 --
14249 
14250 
14251 --
14252 AcctLineType_23 (
14253  p_application_id  => p_application_id
14254  ,p_event_id     => l_event_id
14255  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14256  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14257  ,p_actual_flag => l_actual_flag
14258  ,p_balance_type_code => l_balance_type_code
14259  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14260  
14261  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14262  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14263  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14264  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14265  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14266  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14267  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14268  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14269  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14270  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14271  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14272  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14273  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14274  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14275  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14276  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14277  );
14278 If(l_balance_type_code = 'A') THEN
14279   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14280 END IF;
14281 
14282 --
14283 
14284 
14285 --
14286 AcctLineType_24 (
14287  p_application_id  => p_application_id
14288  ,p_event_id     => l_event_id
14289  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14290  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14291  ,p_actual_flag => l_actual_flag
14292  ,p_balance_type_code => l_balance_type_code
14293  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14294  
14295  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14296  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
14297  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14298  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14299  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14300  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14301  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14302  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14303  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14304  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14305  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14306  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14307  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14308  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14309  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14310  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14311  );
14312 If(l_balance_type_code = 'A') THEN
14313   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14314 END IF;
14315 
14316 --
14317 
14318 
14319 --
14320 AcctLineType_25 (
14321  p_application_id  => p_application_id
14322  ,p_event_id     => l_event_id
14323  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14324  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14325  ,p_actual_flag => l_actual_flag
14326  ,p_balance_type_code => l_balance_type_code
14327  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14328  
14329  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14330  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14331  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14332  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14333  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14334  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
14335  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14336  , p_source_14 => g_array_event(l_event_id).array_value_date('source_14')
14337  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14338  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14339  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14340  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14344  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14341  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
14342  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
14343  , p_source_22_meaning => g_array_event(l_event_id).array_value_char('source_22_meaning')
14345  );
14346 If(l_balance_type_code = 'A') THEN
14347   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14348 END IF;
14349 
14350 --
14351 
14352       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
14353       -- or secondary ledger that has different currency with primary
14354       -- or alc that is calculated by sla
14355       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
14356             (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'))
14357 
14358 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
14359 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
14360           AND (l_actual_flag = 'A')) THEN
14361         XLA_AE_LINES_PKG.CreateGainOrLossLines(
14362           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
14363          ,p_application_id   => p_application_id
14364          ,p_amb_context_code => 'DEFAULT'
14365          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
14366          ,p_event_class_code => C_EVENT_CLASS_CODE
14367          ,p_event_type_code  => C_EVENT_TYPE_CODE
14368          
14369          ,p_gain_ccid        => -1
14370          ,p_loss_ccid        => -1
14371 
14372          ,p_actual_flag      => l_actual_flag
14373          ,p_enc_flag         => null
14374          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
14375          ,p_enc_g_l_ref      => null
14376          );
14377       END IF;
14378    END IF;
14379 END IF;
14380 
14381    ELSE
14382       --
14383       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14384       --
14385       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14386          trace
14387             (p_msg      => 'Trancaction revesal option is Y'
14388             ,p_level    => C_LEVEL_STATEMENT
14389             ,p_module   => l_log_module);
14390       END IF;
14391    END IF;
14392 
14393 END LOOP;
14394 l_result := XLA_AE_LINES_PKG.InsertLines ;
14395 end loop;
14396 close line_cur;
14397 
14398 
14399 --
14400 -- insert headers into xla_ae_headers_gt table
14401 --
14402 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
14403 
14404 -- insert into errors table here.
14405 
14406 END LOOP;
14407 
14408 --
14409 -- 4865292
14410 --
14411 -- Compare g_hdr_extract_count with event count in
14412 -- CreateHeadersAndLines.
14413 --
14414 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
14415 
14416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14417    trace (p_msg     => '# rows extracted from header extract objects '
14418                     || ' (running total): '
14419                     || g_hdr_extract_count
14420          ,p_level   => C_LEVEL_STATEMENT
14421          ,p_module  => l_log_module);
14422 END IF;
14423 
14424 CLOSE header_cur;
14425 --
14426 
14427 --
14428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14429    trace
14430       (p_msg      => 'END of EventClass_28'
14431       ,p_level    => C_LEVEL_PROCEDURE
14432       ,p_module   => l_log_module);
14433 END IF;
14434 --
14435 RETURN l_result;
14436 EXCEPTION
14437 WHEN xla_exceptions_pkg.application_exception THEN
14438    
14439 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
14440 
14441    
14442 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
14443 
14444    RAISE;
14445 WHEN OTHERS THEN
14446    xla_exceptions_pkg.raise_message
14447       (p_location => 'XLA_00260_AAD_S_000001_PKG.EventClass_28');
14448 END EventClass_28;
14449 --
14450 
14451 --
14452 --+============================================+
14453 --|                                            |
14454 --|  PRIVATE FUNCTION                          |
14455 --|                                            |
14456 --+============================================+
14457 --
14458 FUNCTION CreateHeadersAndLines
14459        (p_application_id         IN NUMBER
14460        ,p_base_ledger_id         IN NUMBER
14461        ,p_target_ledger_id       IN NUMBER
14462        ,p_pad_start_date         IN DATE
14463        ,p_pad_end_date           IN DATE
14464        ,p_primary_ledger_id      IN NUMBER)
14465 RETURN BOOLEAN IS
14466 l_created                   BOOLEAN:=FALSE;
14467 l_event_id                  NUMBER;
14468 l_event_date                DATE;
14469 l_language                  VARCHAR2(30);
14470 l_currency_code             VARCHAR2(30);
14471 l_sla_ledger_id             NUMBER;
14472 l_log_module                VARCHAR2(240);
14473 
14474 BEGIN
14475 --
14476 IF g_log_enabled THEN
14477    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
14478 END IF;
14479 --
14480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14481    trace
14482       (p_msg      => 'BEGIN of CreateHeadersAndLines'
14483       ,p_level    => C_LEVEL_PROCEDURE
14484       ,p_module   => l_log_module);
14485 END IF;
14486 
14487 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
14488 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
14489 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
14490 
14491 --
14492 -- initialize array of lines with NULL
14493 --
14497 -- initialize header extract count -- Bug 4865292
14494 xla_ae_lines_pkg.SetNullLine;
14495 
14496 --
14498 --
14499 g_hdr_extract_count:= 0;
14500 
14501 
14502  l_created :=  EventType_26(
14503    p_application_id         => p_application_id
14504  , p_base_ledger_id         => p_base_ledger_id
14505  , p_target_ledger_id       => p_target_ledger_id
14506  , p_language               => l_language
14507  , p_currency_code          => l_currency_code
14508  , p_sla_ledger_id          => l_sla_ledger_id
14509  , p_pad_start_date         => p_pad_start_date
14510  , p_pad_end_date           => p_pad_end_date
14511  , p_primary_ledger_id      => p_primary_ledger_id
14512 );
14513 
14514 
14515 
14516      IF ( g_diagnostics_mode ='Y' ) THEN
14517 
14518          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14519           trace
14520               (p_msg      => 'CALL Transaction Objects Diagnostics'
14521               ,p_level    => C_LEVEL_STATEMENT
14522               ,p_module   => l_log_module);
14523 
14524          END IF;
14525 
14526          insert_sources_26(
14527                           p_target_ledger_id => p_target_ledger_id
14528                         , p_language         => l_language
14529                         , p_sla_ledger_id    => l_sla_ledger_id
14530                         , p_pad_start_date   => p_pad_start_date
14531                         , p_pad_end_date     => p_pad_end_date
14532                           );
14533 
14534      END IF;
14535 
14536  l_created :=  EventType_27(
14537    p_application_id         => p_application_id
14538  , p_base_ledger_id         => p_base_ledger_id
14539  , p_target_ledger_id       => p_target_ledger_id
14540  , p_language               => l_language
14541  , p_currency_code          => l_currency_code
14542  , p_sla_ledger_id          => l_sla_ledger_id
14543  , p_pad_start_date         => p_pad_start_date
14544  , p_pad_end_date           => p_pad_end_date
14545  , p_primary_ledger_id      => p_primary_ledger_id
14546 );
14547 
14548 
14549 
14550      IF ( g_diagnostics_mode ='Y' ) THEN
14551 
14552          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14553           trace
14554               (p_msg      => 'CALL Transaction Objects Diagnostics'
14555               ,p_level    => C_LEVEL_STATEMENT
14556               ,p_module   => l_log_module);
14557 
14558          END IF;
14559 
14560          insert_sources_27(
14561                           p_target_ledger_id => p_target_ledger_id
14562                         , p_language         => l_language
14563                         , p_sla_ledger_id    => l_sla_ledger_id
14564                         , p_pad_start_date   => p_pad_start_date
14565                         , p_pad_end_date     => p_pad_end_date
14566                           );
14567 
14568      END IF;
14569 
14570 l_created := EventClass_28(
14571    p_application_id         => p_application_id
14572  , p_base_ledger_id         => p_base_ledger_id
14573  , p_target_ledger_id       => p_target_ledger_id
14574  , p_language               => l_language
14575  , p_currency_code          => l_currency_code
14576  , p_sla_ledger_id          => l_sla_ledger_id
14577  , p_pad_start_date         => p_pad_start_date
14578  , p_pad_end_date           => p_pad_end_date
14579  , p_primary_ledger_id      => p_primary_ledger_id
14580 );
14581 
14582 
14583 
14584      IF ( g_diagnostics_mode ='Y' ) THEN
14585 
14586          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14587           trace
14588               (p_msg      => 'CALL Transaction Objects Diagnostics'
14589               ,p_level    => C_LEVEL_STATEMENT
14590               ,p_module   => l_log_module);
14591 
14592          END IF;
14593 
14594          insert_sources_28(
14595                           p_target_ledger_id => p_target_ledger_id
14596                         , p_language         => l_language
14597                         , p_sla_ledger_id    => l_sla_ledger_id
14598                         , p_pad_start_date   => p_pad_start_date
14599                         , p_pad_end_date     => p_pad_end_date
14600                           );
14601 
14602      END IF;
14603 
14604 
14605  --
14606  -- Bug 4865292
14607  -- When the number of events and that of header extract do not match,
14608  -- set the no header extract flag to indicate there are some issues
14609  -- in header extract.
14610  --
14611  -- Event count context is set in xla_accounting_pkg.unit_processor.
14612  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
14613  -- to report it as a general error.
14614  --
14615  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
14616  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
14617 
14618      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14619         trace
14620           (p_msg      => '# of extracted headers and events does not match'
14621           ,p_level    => C_LEVEL_STATEMENT
14622           ,p_module   => l_log_module);
14623 
14624         trace
14625           (p_msg      => '# of extracted headers: '
14626                          ||g_hdr_extract_count
14627           ,p_level    => C_LEVEL_STATEMENT
14628           ,p_module   => l_log_module);
14629 
14630         trace
14631           (p_msg      => '# of events in xla_events_gt: '
14632                          ||xla_context_pkg.get_event_count_context
14633           ,p_level    => C_LEVEL_STATEMENT
14634           ,p_module   => l_log_module);
14635 
14636         trace
14637           (p_msg      => 'Event No Header Extract Context: '
14638                          ||xla_context_pkg.get_event_nohdr_context
14639           ,p_level    => C_LEVEL_STATEMENT
14640           ,p_module   => l_log_module);
14641 
14645      xla_context_pkg.set_event_nohdr_context
14642      END IF;
14643 
14644 
14646        (p_nohdr_extract_flag => 'Y'
14647        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
14648 
14649      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14650         trace
14651           (p_msg      => 'No Header Extract Flag is set to Y'
14652           ,p_level    => C_LEVEL_STATEMENT
14653           ,p_module   => l_log_module);
14654      END IF;
14655 
14656  END IF;
14657 
14658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14659    trace
14660       (p_msg      => 'END of CreateHeadersAndLines'
14661       ,p_level    => C_LEVEL_PROCEDURE
14662       ,p_module   => l_log_module);
14663 END IF;
14664 
14665 RETURN l_created;
14666 EXCEPTION
14667 WHEN xla_exceptions_pkg.application_exception THEN
14668    RAISE;
14669 WHEN OTHERS THEN
14670    xla_exceptions_pkg.raise_message
14671       (p_location => 'XLA_00260_AAD_S_000001_PKG.CreateHeadersAndLines');
14672 END CreateHeadersAndLines;
14673 --
14674 --
14675 
14676 --
14677 --+============================================+
14678 --|                                            |
14679 --|  PUBLIC FUNCTION                           |
14680 --|                                            |
14681 --+============================================+
14682 --
14683 FUNCTION CreateJournalEntries
14684        (p_application_id         IN NUMBER
14685        ,p_base_ledger_id         IN NUMBER
14686        ,p_pad_start_date         IN DATE
14687        ,p_pad_end_date           IN DATE
14688        ,p_primary_ledger_id      IN NUMBER)
14689 RETURN NUMBER IS
14690 l_log_module                   VARCHAR2(240);
14691 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
14692 l_temp_result                  BOOLEAN;
14693 l_result                       NUMBER;
14694 BEGIN
14695 --
14696 IF g_log_enabled THEN
14697    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
14698 END IF;
14699 --
14700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14701    trace
14702       (p_msg      => 'BEGIN of CreateJournalEntries'||
14703                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
14704       ,p_level    => C_LEVEL_PROCEDURE
14705       ,p_module   => l_log_module);
14706 
14707 END IF;
14708 
14709 --
14710 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
14711 
14712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14713    trace
14714       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
14715       ,p_level    => C_LEVEL_STATEMENT
14716       ,p_module   => l_log_module);
14717 END IF;
14718 --
14719 xla_ae_journal_entry_pkg.SetProductAcctDefinition
14720    (p_product_rule_code      => 'CE_STANDARD_ACCOUNTING'
14721    ,p_product_rule_type_code => 'S'
14722    ,p_product_rule_version   => ''
14723    ,p_product_rule_name      => 'Cash Management Standard Accounting'
14724    ,p_amb_context_code       => 'DEFAULT'
14725    );
14726 
14727 l_array_ledgers :=
14728    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
14729       (p_base_ledger_id  => p_base_ledger_id);
14730 
14731 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
14732    l_temp_result :=
14733       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
14734          (p_application_id           => p_application_id
14735          ,p_base_ledger_id           => p_base_ledger_id
14736          ,p_target_ledger_id         => l_array_ledgers(Idx)
14737          ,p_primary_ledger_id        => p_primary_ledger_id
14738          ,p_pad_start_date           => p_pad_start_date
14739          ,p_pad_end_date             => p_pad_end_date);
14740 
14741    l_temp_result :=
14742       l_temp_result AND
14743       CreateHeadersAndLines
14744          (p_application_id             => p_application_id
14745          ,p_base_ledger_id             => p_base_ledger_id
14746          ,p_target_ledger_id           => l_array_ledgers(Idx)
14747          ,p_pad_start_date             => p_pad_start_date
14748          ,p_pad_end_date               => p_pad_end_date
14749          ,p_primary_ledger_id          => p_primary_ledger_id
14750          );
14751 END LOOP;
14752 
14753 
14754 IF (g_diagnostics_mode = 'Y' AND
14755     C_LEVEL_UNEXPECTED >= g_log_level AND
14756     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
14757 
14758    xla_accounting_dump_pkg.acctg_event_extract_log(
14759     p_application_id  => p_application_id
14760     ,p_request_id     => xla_environment_pkg.g_Req_Id
14761    );
14762 
14763 END IF;
14764 
14765 CASE l_temp_result
14766   WHEN TRUE THEN l_result := 0;
14767   ELSE l_result := 2;
14768 END CASE;
14769 
14770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14771    trace
14772       (p_msg      => 'return value. = '||TO_CHAR(l_result)
14773       ,p_level    => C_LEVEL_PROCEDURE
14774       ,p_module   => l_log_module);
14775    trace
14776       (p_msg      => 'END of CreateJournalEntries '
14777       ,p_level    => C_LEVEL_PROCEDURE
14778       ,p_module   => l_log_module);
14779 END IF;
14780 
14781 RETURN l_result;
14782 EXCEPTION
14783 WHEN xla_exceptions_pkg.application_exception THEN
14784    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14785    trace
14786       (p_msg      => 'ERROR. = '||sqlerrm
14787       ,p_level    => C_LEVEL_PROCEDURE
14788       ,p_module   => l_log_module);
14789    END IF;
14790    RAISE;
14791 WHEN OTHERS THEN
14792    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14793    trace
14794       (p_msg      => 'ERROR. = '||sqlerrm
14795       ,p_level    => C_LEVEL_PROCEDURE
14796       ,p_module   => l_log_module);
14797    END IF;
14798    xla_exceptions_pkg.raise_message
14802 --=============================================================================
14799       (p_location => 'XLA_00260_AAD_S_000001_PKG.CreateJournalEntries');
14800 END CreateJournalEntries;
14801 --
14803 --
14804 --
14805 --
14806 --
14807 --
14808 --
14809 --
14810 --
14811 --
14812 --
14813 --
14814 --
14815 --
14816 --
14817 --
14818 --
14819 --
14820 --
14821 --
14822 --
14823 --
14824 --
14825 --=============================================================================
14826 --=============================================================================
14827 --          *********** Initialization routine **********
14828 --=============================================================================
14829 
14830 BEGIN
14831    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14832    g_log_enabled    := fnd_log.test
14833                           (log_level  => g_log_level
14834                           ,module     => C_DEFAULT_MODULE);
14835 
14836    IF NOT g_log_enabled  THEN
14837       g_log_level := C_LEVEL_LOG_DISABLED;
14838    END IF;
14839 --
14840 END XLA_00260_AAD_S_000001_PKG;
14841 --