DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00540_AAD_S_000014_PKG

Source


1 PACKAGE BODY XLA_00540_AAD_S_000014_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_00540_AAD_S_000014_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Lease Default                                          |
14 |      Code    : OKL_DEFAULT                                            |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 01:11:03 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_00540_AAD_S_000014_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00540_AAD_S_000014_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00540_AAD_S_000014_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_00540_AAD_S_000014_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 --Contract Number
241  , p_source_1            IN VARCHAR2
242 --Contract Product Name
243  , p_source_2            IN VARCHAR2
244 )
245 RETURN VARCHAR2
246 IS
247 l_component_type        VARCHAR2(80)   ;
248 l_component_code        VARCHAR2(30)   ;
249 l_component_type_code   VARCHAR2(1)    ;
250 l_component_appl_id     INTEGER        ;
251 l_amb_context_code      VARCHAR2(30)   ;
252 l_ledger_language       VARCHAR2(30)   ;
253 l_source                VARCHAR2(1996) ;
254 l_description           VARCHAR2(2000) ;
255 l_log_module            VARCHAR2(240)  ;
256 BEGIN
257 IF g_log_enabled THEN
258       l_log_module := C_DEFAULT_MODULE||'.Description_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261       trace
262          (p_msg      => 'BEGIN of Description_1'
263          ,p_level    => C_LEVEL_PROCEDURE
264          ,p_module   => l_log_module);
265 END IF;
266 
267 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
268 l_component_type        := 'AMB_DESCRIPTION';
269 l_component_code        := 'OKL_DEFAULT_CONTRACT_JRNL_DESC';
270 l_component_type_code   := 'S';
271 l_component_appl_id     :=  540;
272 l_amb_context_code      := 'DEFAULT';
273 l_source                := NULL;
274 l_description           := NULL;
275 
276 
277  
278  IF 
279 l_ledger_language = 'US' THEN
280     l_description :=  SUBSTR(CONCAT(l_description,'Contract Number:'),1,2000);
281     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
282  END IF;   
283   l_source := SUBSTR(p_source_1,1,1996);
284   IF l_source IS NOT NULL THEN
285     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
286     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
287   END IF;  
288  IF 
289 l_ledger_language = 'US' THEN
290     l_description :=  SUBSTR(CONCAT(l_description,','),1,2000);
291     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
292  END IF;  
293  IF 
294 l_ledger_language = 'US' THEN
295     l_description :=  SUBSTR(CONCAT(l_description,' Financial Product:'),1,2000);
296     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
297  END IF;   
298   l_source := SUBSTR(p_source_2,1,1996);
299   IF l_source IS NOT NULL THEN
300     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
301     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
302   END IF; 
303  l_description := SUBSTR(l_description,1,1996);
304   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305         trace
306            (p_msg      => 'END of Description_1'
307            ,p_level    => C_LEVEL_PROCEDURE
308            ,p_module   => l_log_module);
309 
310   END IF;
311   RETURN l_description;
312 
313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314       trace
315          (p_msg      => 'END of Description_1'
316          ,p_level    => C_LEVEL_PROCEDURE
317          ,p_module   => l_log_module);
318 END IF;
319 RETURN NULL;
320 EXCEPTION
321   WHEN VALUE_ERROR THEN
322      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
323             trace
324                (p_msg      => 'ERROR: '||sqlerrm
325                ,p_level    => C_LEVEL_EXCEPTION
326                ,p_module   => l_log_module);
327      END IF;
328      RAISE;
329  WHEN xla_exceptions_pkg.application_exception THEN
330       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
331       trace
332          (p_msg      => 'ERROR: '||sqlerrm
333          ,p_level    => C_LEVEL_EXCEPTION
334          ,p_module   => l_log_module);
335       END IF;
336       RAISE;
337  WHEN OTHERS THEN
338        xla_exceptions_pkg.raise_message
339            (p_location => 'XLA_00540_AAD_S_000014_PKG.Description_1');
340 END Description_1;
341 
342 ---------------------------------------
343 --
344 -- PRIVATE FUNCTION
345 --         Description_2
346 --
347 ---------------------------------------
348 FUNCTION Description_2 (
349   p_application_id      IN NUMBER
350 , p_ae_header_id        IN NUMBER DEFAULT NULL 
351 --Investor Agreement Number
352  , p_source_3            IN VARCHAR2
353 --Investor Agreement Product Name
354  , p_source_4            IN VARCHAR2
355 )
356 RETURN VARCHAR2
357 IS
358 l_component_type        VARCHAR2(80)   ;
359 l_component_code        VARCHAR2(30)   ;
360 l_component_type_code   VARCHAR2(1)    ;
361 l_component_appl_id     INTEGER        ;
362 l_amb_context_code      VARCHAR2(30)   ;
363 l_ledger_language       VARCHAR2(30)   ;
364 l_source                VARCHAR2(1996) ;
365 l_description           VARCHAR2(2000) ;
366 l_log_module            VARCHAR2(240)  ;
367 BEGIN
368 IF g_log_enabled THEN
369       l_log_module := C_DEFAULT_MODULE||'.Description_2';
370 END IF;
371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372       trace
373          (p_msg      => 'BEGIN of Description_2'
377 
374          ,p_level    => C_LEVEL_PROCEDURE
375          ,p_module   => l_log_module);
376 END IF;
378 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
379 l_component_type        := 'AMB_DESCRIPTION';
380 l_component_code        := 'OKL_DEFAULT_IA_JRNL_DESC';
381 l_component_type_code   := 'S';
382 l_component_appl_id     :=  540;
383 l_amb_context_code      := 'DEFAULT';
384 l_source                := NULL;
385 l_description           := NULL;
386 
387 
388  
389  IF 
390 l_ledger_language = 'US' THEN
391     l_description :=  SUBSTR(CONCAT(l_description,'Agreement Number:'),1,2000);
392     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
393  END IF;   
394   l_source := SUBSTR(p_source_3,1,1996);
395   IF l_source IS NOT NULL THEN
396     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
397     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
398   END IF;  
399  IF 
400 l_ledger_language = 'US' THEN
401     l_description :=  SUBSTR(CONCAT(l_description,','),1,2000);
402     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
403  END IF;  
404  IF 
405 l_ledger_language = 'US' THEN
406     l_description :=  SUBSTR(CONCAT(l_description,' Financial Product:'),1,2000);
407     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
408  END IF;   
409   l_source := SUBSTR(p_source_4,1,1996);
410   IF l_source IS NOT NULL THEN
411     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
412     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
413   END IF; 
414  l_description := SUBSTR(l_description,1,1996);
415   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
416         trace
417            (p_msg      => 'END of Description_2'
418            ,p_level    => C_LEVEL_PROCEDURE
419            ,p_module   => l_log_module);
420 
421   END IF;
422   RETURN l_description;
423 
424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425       trace
426          (p_msg      => 'END of Description_2'
427          ,p_level    => C_LEVEL_PROCEDURE
428          ,p_module   => l_log_module);
429 END IF;
430 RETURN NULL;
431 EXCEPTION
432   WHEN VALUE_ERROR THEN
433      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
434             trace
435                (p_msg      => 'ERROR: '||sqlerrm
436                ,p_level    => C_LEVEL_EXCEPTION
437                ,p_module   => l_log_module);
438      END IF;
439      RAISE;
440  WHEN xla_exceptions_pkg.application_exception THEN
441       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
442       trace
443          (p_msg      => 'ERROR: '||sqlerrm
444          ,p_level    => C_LEVEL_EXCEPTION
445          ,p_module   => l_log_module);
446       END IF;
447       RAISE;
448  WHEN OTHERS THEN
449        xla_exceptions_pkg.raise_message
450            (p_location => 'XLA_00540_AAD_S_000014_PKG.Description_2');
451 END Description_2;
452 
453 ---------------------------------------
454 --
455 -- PRIVATE FUNCTION
456 --         AcctDerRule_3
457 --
458 ---------------------------------------
459 FUNCTION AcctDerRule_3 (
460   p_application_id              IN NUMBER
461 , p_ae_header_id                IN NUMBER
462 , p_side                        IN VARCHAR2 
463 --Distribution Account
464  , p_source_5            IN NUMBER
465 , x_transaction_coa_id         OUT NOCOPY NUMBER
466 , x_accounting_coa_id          OUT NOCOPY NUMBER
467 , x_value_type_code            OUT NOCOPY VARCHAR2
468 )
469 RETURN NUMBER
470 IS
471 l_component_type       VARCHAR2(80)  ;
472 l_component_code       VARCHAR2(30)  ;
473 l_component_type_code  VARCHAR2(1)   ;
474 l_component_appl_id    INTEGER       ;
475 l_amb_context_code     VARCHAR2(30)  ;
476 l_log_module           VARCHAR2(240) ;
477 l_output_value         NUMBER        ;
478 BEGIN
479 IF g_log_enabled THEN
480       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
481 END IF;
482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
483       trace
484          (p_msg      => 'BEGIN of AcctDerRule_3'
485          ,p_level    => C_LEVEL_PROCEDURE
486          ,p_module   => l_log_module);
487 END IF;
488 --
489 l_component_type         := 'AMB_ADR';
490 l_component_code         := 'OKL_DEFAULT_ACCOUNT';
491 l_component_type_code    := 'S';
492 l_component_appl_id      :=  540;
493 l_amb_context_code       := 'DEFAULT';
494 x_transaction_coa_id     :=  null;
495 x_accounting_coa_id      :=  null;
496 --
497 
498  --
499   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
500       trace
501          (p_msg      => 'END of AcctDerRule_3'
502          ,p_level    => C_LEVEL_PROCEDURE
503          ,p_module   => l_log_module);
504   END IF;
505   x_value_type_code := 'S';
506   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_5));
507   RETURN l_output_value;
508 
509 --
510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
511       trace
512          (p_msg      => 'END of AcctDerRule_3(invalid)'
513          ,p_level    => C_LEVEL_PROCEDURE
514          ,p_module   => l_log_module);
515 END IF;
516 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
517 x_value_type_code := null;
518 l_output_value    := null;
519 xla_accounting_err_pkg.build_message
520                  (p_appli_s_name            => 'XLA'
521                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
522                  ,p_token_1                 => 'COMPONENT_NAME'
523                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
524                                                             l_component_type
528                                                           , l_amb_context_code
525                                                           , l_component_code
526                                                           , l_component_type_code
527                                                           , l_component_appl_id
529                                                           )
530                  ,p_token_2                 => 'OWNER'
531                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
532                                                         'XLA_OWNER_TYPE'
533                                                         ,l_component_type_code
534                                                         )
535                  ,p_token_3                 => 'PAD_NAME'
536                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
537                  ,p_token_4                 => 'PAD_OWNER'
538                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
539                                                         'XLA_OWNER_TYPE'
540                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
541                                                         )
542                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
543                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
544                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
545                  ,p_ae_header_id            => NULL
546 );
547 RETURN l_output_value;
548 EXCEPTION
549   WHEN xla_exceptions_pkg.application_exception THEN
550       RAISE;
551   WHEN OTHERS THEN
552        xla_exceptions_pkg.raise_message
553            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctDerRule_3');
554 END AcctDerRule_3;
555 --
556 
557 ---------------------------------------
558 --
559 -- PRIVATE FUNCTION
560 --         AcctLineType_4
561 --
562 ---------------------------------------
563 PROCEDURE AcctLineType_4 (
564   p_application_id        IN NUMBER
565  ,p_event_id              IN NUMBER
566  ,p_calculate_acctd_flag  IN VARCHAR2
567  ,p_calculate_g_l_flag    IN VARCHAR2
568  ,p_actual_flag           IN OUT VARCHAR2
569  ,p_balance_type_code     OUT VARCHAR2
570  ,p_gain_or_loss_ref      OUT VARCHAR2
571  
572 --Contract Number
573  , p_source_1            IN VARCHAR2
574 --Contract Product Name
575  , p_source_2            IN VARCHAR2
576 --Distribution Account
577  , p_source_5            IN NUMBER
578 --Accounting Line Type
579  , p_source_6            IN VARCHAR2
580  , p_source_6_meaning    IN VARCHAR2
581 --Accounting Distribution Identifier
582  , p_source_7            IN NUMBER
583 --Distribution Type
584  , p_source_8            IN VARCHAR2
585 --Distribution Entered Amount
586  , p_source_9            IN NUMBER
587 --Transaction Currency Code
588  , p_source_10            IN VARCHAR2
589 --Transaction Currency Conversion Date
590  , p_source_11            IN DATE
591 --Transaction Currency Conversion Rate
592  , p_source_12            IN NUMBER
593 --Transaction Currency Conversion Type
594  , p_source_13            IN VARCHAR2
595 )
596 IS
597 
598 l_component_type              VARCHAR2(80);
599 l_component_code              VARCHAR2(30);
600 l_component_type_code         VARCHAR2(1);
601 l_component_appl_id           INTEGER;
602 l_amb_context_code            VARCHAR2(30);
603 l_entity_code                 VARCHAR2(30);
604 l_event_class_code            VARCHAR2(30);
605 l_ae_header_id                NUMBER;
606 l_event_type_code             VARCHAR2(30);
607 l_line_definition_code        VARCHAR2(30);
608 l_line_definition_owner_code  VARCHAR2(1);
609 --
610 -- adr variables
611 l_segment                     VARCHAR2(30);
612 l_ccid                        NUMBER;
613 l_adr_transaction_coa_id      NUMBER;
614 l_adr_accounting_coa_id       NUMBER;
615 l_adr_flexfield_segment_code  VARCHAR2(30);
616 l_adr_flex_value_set_id       NUMBER;
617 l_adr_value_type_code         VARCHAR2(30);
618 l_adr_value_combination_id    NUMBER;
619 l_adr_value_segment_code      VARCHAR2(30);
620 
621 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
622 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
623 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
624 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
625 
626 -- 4262811 Variables ------------------------------------------------------------------------------------------
627 l_entered_amt_idx             NUMBER;
628 l_accted_amt_idx              NUMBER;
629 l_acc_rev_flag                VARCHAR2(1);
630 l_accrual_line_num            NUMBER;
631 l_tmp_amt                     NUMBER;
632 l_acc_rev_natural_side_code   VARCHAR2(1);
633 
634 l_num_entries                 NUMBER;
635 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
636 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
637 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
638 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
639 l_recog_line_1                NUMBER;
640 l_recog_line_2                NUMBER;
641 
642 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
643 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
644 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
645 
646 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
647 
648 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
652 
649 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
650 
651 ---------------------------------------------------------------------------------------------------------------
653 
654 --
655 -- bulk performance
656 --
657 l_balance_type_code           VARCHAR2(1);
658 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
659 l_log_module                  VARCHAR2(240);
660 
661 --
662 -- Upgrade strategy
663 --
664 l_actual_upg_option           VARCHAR2(1);
665 l_enc_upg_option           VARCHAR2(1);
666 
667 --
668 BEGIN
669 --
670 IF g_log_enabled THEN
671       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
672 END IF;
673 --
674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
675 
676       trace
677          (p_msg      => 'BEGIN of AcctLineType_4'
678          ,p_level    => C_LEVEL_PROCEDURE
679          ,p_module   => l_log_module);
680 
681 END IF;
682 --
683 l_component_type             := 'AMB_JLT';
684 l_component_code             := 'OKL_ACCRUAL_CR';
685 l_component_type_code        := 'S';
686 l_component_appl_id          :=  540;
687 l_amb_context_code           := 'DEFAULT';
688 l_entity_code                := 'TRANSACTIONS';
689 l_event_class_code           := 'ACCRUAL';
690 l_event_type_code            := 'ACCRUAL_ALL';
691 l_line_definition_owner_code := 'S';
692 l_line_definition_code       := 'OKL_ACCRUAL';
693 --
694 l_balance_type_code          := 'A';
695 l_segment                     := NULL;
696 l_ccid                        := NULL;
697 l_adr_transaction_coa_id      := NULL;
698 l_adr_accounting_coa_id       := NULL;
699 l_adr_flexfield_segment_code  := NULL;
700 l_adr_flex_value_set_id       := NULL;
701 l_adr_value_type_code         := NULL;
702 l_adr_value_combination_id    := NULL;
703 l_adr_value_segment_code      := NULL;
704 
705 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
706 l_bflow_class_code           := '';    -- 4219869 Business Flow
707 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
708 l_budgetary_control_flag     := 'N';
709 
710 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
711 l_bflow_applied_to_amt       := NULL; -- 5132302
712 l_entered_amt_idx            := NULL;          -- 4262811
713 l_accted_amt_idx             := NULL;          -- 4262811
714 l_acc_rev_flag               := NULL;          -- 4262811
715 l_accrual_line_num           := NULL;          -- 4262811
716 l_tmp_amt                    := NULL;          -- 4262811
717 --
718  
719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
720     l_balance_type_code <> 'B' THEN
721 IF NVL(p_source_6,'
722 ') =  'LEASE_CREDIT'
723  THEN 
724 
725    --
726    XLA_AE_LINES_PKG.SetNewLine;
727 
728    p_balance_type_code          := l_balance_type_code;
729    -- set the flag so later we will know whether the gain loss line needs to be created
730    
731    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
732      p_actual_flag :='A';
733    END IF;
734 
735    --
736    -- bulk performance
737    --
738    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
739                                       p_header_num   => 0); -- 4262811
740    --
741    -- set accounting line options
742    --
743    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
744            p_natural_side_code          => 'C'
745          , p_gain_or_loss_flag          => 'N'
746          , p_gl_transfer_mode_code      => 'S'
747          , p_acct_entry_type_code       => 'A'
748          , p_switch_side_flag           => 'Y'
749          , p_merge_duplicate_code       => 'N'
750          );
751    --
752    l_acc_rev_natural_side_code := 'D';  -- 4262811
753    -- 
754    --
755    -- set accounting line type info
756    --
757    xla_ae_lines_pkg.SetAcctLineType
758       (p_component_type             => l_component_type
759       ,p_event_type_code            => l_event_type_code
760       ,p_line_definition_owner_code => l_line_definition_owner_code
761       ,p_line_definition_code       => l_line_definition_code
762       ,p_accounting_line_code       => l_component_code
763       ,p_accounting_line_type_code  => l_component_type_code
764       ,p_accounting_line_appl_id    => l_component_appl_id
765       ,p_amb_context_code           => l_amb_context_code
766       ,p_entity_code                => l_entity_code
767       ,p_event_class_code           => l_event_class_code);
768    --
769    -- set accounting class
770    --
771    xla_ae_lines_pkg.SetAcctClass(
772            p_accounting_class_code  => 'LEASE_ACCRUAL'
773          , p_ae_header_id           => l_ae_header_id
774          );
775 
776    --
777    -- set rounding class
778    --
779    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
780                       'LEASE_ACCRUAL';
781 
782    --
783    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
784    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
785    --
786    -- bulk performance
787    --
788    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
789 
790    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
791       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
792 
793    -- 4955764
794    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
798    
795       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
796 
797    -- 4458381 Public Sector Enh
799    --
803    l_accted_amt_idx  := NULL;
800    -- set accounting attributes for the line type
801    --
802    l_entered_amt_idx := 3;
804    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
805    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
806    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
807    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
808    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
809    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
810    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
811    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
812    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
813    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
814    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
815    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
816    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
817    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
818    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
819 
820    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
821    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
822 
823    ---------------------------------------------------------------------------------------------------------------
824    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
825    ---------------------------------------------------------------------------------------------------------------
826    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
827 
828    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
829    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
830 
831    IF xla_accounting_cache_pkg.GetValueChar
832          (p_source_code         => 'LEDGER_CATEGORY_CODE'
833          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
834    AND l_bflow_method_code = 'PRIOR_ENTRY'
835 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
836    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
837          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
838        )
839    THEN
840          xla_ae_lines_pkg.BflowUpgEntry
841            (p_business_method_code    => l_bflow_method_code
842            ,p_business_class_code     => l_bflow_class_code
843            ,p_balance_type            => l_balance_type_code);
844    ELSE
845       NULL;
846 -- No business flow processing for business flow method of NONE.
847    END IF;
848 
849    --
850    -- call analytical criteria
851    --
852    
853    --
854    -- call description
855    --
856    
857 xla_ae_lines_pkg.SetLineDescription(
858    p_ae_header_id => l_ae_header_id
859   ,p_description  => Description_1 (
860      p_application_id         => p_application_id
861    , p_ae_header_id           => l_ae_header_id 
862 , p_source_1 => p_source_1
863 , p_source_2 => p_source_2
864    )
865 );
866 
867 
868    --
869    -- call ADRs
870    -- Bug 4922099
871    --
872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
873         (NVL(l_actual_upg_option, 'N') = 'O') OR
874         (NVL(l_enc_upg_option, 'N') = 'O')
875       )
876    THEN
877    NULL;
878    --
879    --
880    
881   l_ccid := AcctDerRule_3(
885          , x_transaction_coa_id       => l_adr_transaction_coa_id
882            p_application_id           => p_application_id
883          , p_ae_header_id             => l_ae_header_id 
884 , p_source_5 => p_source_5
886          , x_accounting_coa_id        => l_adr_accounting_coa_id
887          , x_value_type_code          => l_adr_value_type_code
888          , p_side                     => 'NA'
889    );
890 
891    xla_ae_lines_pkg.set_ccid(
892     p_code_combination_id          => l_ccid
893   , p_value_type_code              => l_adr_value_type_code
894   , p_transaction_coa_id           => l_adr_transaction_coa_id
895   , p_accounting_coa_id            => l_adr_accounting_coa_id
896   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
897   , p_adr_type_code                => 'S'
898   , p_component_type               => l_component_type
899   , p_component_code               => l_component_code
900   , p_component_type_code          => l_component_type_code
901   , p_component_appl_id            => l_component_appl_id
902   , p_amb_context_code             => l_amb_context_code
903   , p_side                         => 'NA'
904   );
905 
906 
907    --
908    --
909    END IF;
910    --
911    -- Bug 4922099
912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
913           (NVL(l_enc_upg_option, 'N') = 'O')
914         ) AND
915         (l_bflow_method_code = 'PRIOR_ENTRY')
916       )
917    THEN
918       IF
919       --
920       1 = 2
921       --
922       THEN
923       xla_accounting_err_pkg.build_message
924                                     (p_appli_s_name            => 'XLA'
925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
926                                     ,p_token_1                 => 'LINE_NUMBER'
927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
930                                                                              l_component_type
931                                                                             ,l_component_code
932                                                                             ,l_component_type_code
933                                                                             ,l_component_appl_id
934                                                                             ,l_amb_context_code
935                                                                             ,l_entity_code
936                                                                             ,l_event_class_code
937                                                                            )
938                                     ,p_token_3                 => 'OWNER'
939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
941                                                                           ,p_lookup_code    => l_component_type_code
942                                                                          )
943                                     ,p_token_4                 => 'PRODUCT_NAME'
944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
948                                     ,p_ae_header_id            =>  NULL
949                                        );
950 
951         IF (C_LEVEL_ERROR>= g_log_level) THEN
952                  trace
953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
954                       ,p_level    => C_LEVEL_ERROR
955                       ,p_module   => l_log_module);
956         END IF;
957       END IF;
958    END IF;
959    --
960    --
961    ------------------------------------------------------------------------------------------------
962    -- 4219869 Business Flow
963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
964    -- Prior Entry.  Currently, the following code is always generated.
965    ------------------------------------------------------------------------------------------------
966    XLA_AE_LINES_PKG.ValidateCurrentLine;
967 
968    ------------------------------------------------------------------------------------
969    -- 4219869 Business Flow
970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
971    ------------------------------------------------------------------------------------
972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
973 
974    ----------------------------------------------------------------------------------
975    -- 4219869 Business Flow
976    -- Update journal entry status -- Need to generate this within IF <condition>
977    ----------------------------------------------------------------------------------
978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
980          ,p_balance_type_code => l_balance_type_code
981          );
982 
983    -------------------------------------------------------------------------------------------
984    -- 4262811 - Generate the Accrual Reversal lines
985    -------------------------------------------------------------------------------------------
986    BEGIN
990          l_acc_rev_flag := 'N';
987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
988                               (g_array_event(p_event_id).array_value_num('header_index'));
989       IF l_acc_rev_flag IS NULL THEN
991       END IF;
992    EXCEPTION
993       WHEN OTHERS THEN
994          l_acc_rev_flag := 'N';
995    END;
996    --
997    IF (l_acc_rev_flag = 'Y') THEN
998 
999        -- 4645092  ------------------------------------------------------------------------------
1000        -- To allow MPA report to determine if it should generate report process
1001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1002        ------------------------------------------------------------------------------------------
1003 
1004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1006 
1007        --
1008        -- Update the line information that should be overwritten
1009        --
1010        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1011                                          p_header_num   => 1);
1012        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1013 
1014        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1015 
1016        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1017           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1018        END IF;
1019 
1020       --
1021       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1022       --
1023       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1024           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1025       ELSE
1026           ---------------------------------------------------------------------------------------------------
1027           -- 4262811a Switch Sign
1028           ---------------------------------------------------------------------------------------------------
1029           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1030           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1031                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1032           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1033                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1034           -- 5132302
1035           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1036                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1037 
1038       END IF;
1039 
1040       -- 4955764
1041       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1043 
1044 
1045       XLA_AE_LINES_PKG.ValidateCurrentLine;
1046       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1047 
1048       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1049                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1050                ,p_balance_type_code => l_balance_type_code);
1051 
1052    END IF;
1053 
1054    -----------------------------------------------------------------------------------------
1055    -- 4262811 Multiperiod Accounting
1056    -----------------------------------------------------------------------------------------
1057      -- No MPA option is assigned.
1058 
1059 
1060 END IF;
1061 END IF;
1062 --
1063 
1064 --
1065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1066    trace
1067       (p_msg      => 'END of AcctLineType_4'
1068       ,p_level    => C_LEVEL_PROCEDURE
1069       ,p_module   => l_log_module);
1070 END IF;
1071 --
1072 EXCEPTION
1073   WHEN xla_exceptions_pkg.application_exception THEN
1074       RAISE;
1075   WHEN OTHERS THEN
1076        xla_exceptions_pkg.raise_message
1077            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_4');
1078 END AcctLineType_4;
1079 --
1080 
1081 ---------------------------------------
1082 --
1083 -- PRIVATE FUNCTION
1084 --         AcctLineType_5
1085 --
1086 ---------------------------------------
1087 PROCEDURE AcctLineType_5 (
1088   p_application_id        IN NUMBER
1089  ,p_event_id              IN NUMBER
1090  ,p_calculate_acctd_flag  IN VARCHAR2
1091  ,p_calculate_g_l_flag    IN VARCHAR2
1092  ,p_actual_flag           IN OUT VARCHAR2
1093  ,p_balance_type_code     OUT VARCHAR2
1094  ,p_gain_or_loss_ref      OUT VARCHAR2
1095  
1096 --Contract Number
1097  , p_source_1            IN VARCHAR2
1098 --Contract Product Name
1099  , p_source_2            IN VARCHAR2
1100 --Distribution Account
1101  , p_source_5            IN NUMBER
1102 --Accounting Line Type
1103  , p_source_6            IN VARCHAR2
1104  , p_source_6_meaning    IN VARCHAR2
1105 --Accounting Distribution Identifier
1106  , p_source_7            IN NUMBER
1107 --Distribution Type
1108  , p_source_8            IN VARCHAR2
1109 --Distribution Entered Amount
1110  , p_source_9            IN NUMBER
1111 --Transaction Currency Code
1112  , p_source_10            IN VARCHAR2
1113 --Transaction Currency Conversion Date
1114  , p_source_11            IN DATE
1115 --Transaction Currency Conversion Rate
1116  , p_source_12            IN NUMBER
1117 --Transaction Currency Conversion Type
1118  , p_source_13            IN VARCHAR2
1119 )
1120 IS
1121 
1125 l_component_appl_id           INTEGER;
1122 l_component_type              VARCHAR2(80);
1123 l_component_code              VARCHAR2(30);
1124 l_component_type_code         VARCHAR2(1);
1126 l_amb_context_code            VARCHAR2(30);
1127 l_entity_code                 VARCHAR2(30);
1128 l_event_class_code            VARCHAR2(30);
1129 l_ae_header_id                NUMBER;
1130 l_event_type_code             VARCHAR2(30);
1131 l_line_definition_code        VARCHAR2(30);
1132 l_line_definition_owner_code  VARCHAR2(1);
1133 --
1134 -- adr variables
1135 l_segment                     VARCHAR2(30);
1136 l_ccid                        NUMBER;
1137 l_adr_transaction_coa_id      NUMBER;
1138 l_adr_accounting_coa_id       NUMBER;
1139 l_adr_flexfield_segment_code  VARCHAR2(30);
1140 l_adr_flex_value_set_id       NUMBER;
1141 l_adr_value_type_code         VARCHAR2(30);
1142 l_adr_value_combination_id    NUMBER;
1143 l_adr_value_segment_code      VARCHAR2(30);
1144 
1145 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1146 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1147 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1148 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1149 
1150 -- 4262811 Variables ------------------------------------------------------------------------------------------
1151 l_entered_amt_idx             NUMBER;
1152 l_accted_amt_idx              NUMBER;
1153 l_acc_rev_flag                VARCHAR2(1);
1154 l_accrual_line_num            NUMBER;
1155 l_tmp_amt                     NUMBER;
1156 l_acc_rev_natural_side_code   VARCHAR2(1);
1157 
1158 l_num_entries                 NUMBER;
1159 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1160 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1161 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1162 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1163 l_recog_line_1                NUMBER;
1164 l_recog_line_2                NUMBER;
1165 
1166 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1167 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1168 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1169 
1170 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1171 
1172 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1173 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1174 
1175 ---------------------------------------------------------------------------------------------------------------
1176 
1177 
1178 --
1179 -- bulk performance
1180 --
1181 l_balance_type_code           VARCHAR2(1);
1185 --
1182 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1183 l_log_module                  VARCHAR2(240);
1184 
1186 -- Upgrade strategy
1187 --
1188 l_actual_upg_option           VARCHAR2(1);
1189 l_enc_upg_option           VARCHAR2(1);
1190 
1191 --
1192 BEGIN
1193 --
1194 IF g_log_enabled THEN
1195       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
1196 END IF;
1197 --
1198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1199 
1200       trace
1201          (p_msg      => 'BEGIN of AcctLineType_5'
1202          ,p_level    => C_LEVEL_PROCEDURE
1203          ,p_module   => l_log_module);
1204 
1205 END IF;
1206 --
1207 l_component_type             := 'AMB_JLT';
1208 l_component_code             := 'OKL_ACCRUAL_DR';
1209 l_component_type_code        := 'S';
1210 l_component_appl_id          :=  540;
1211 l_amb_context_code           := 'DEFAULT';
1212 l_entity_code                := 'TRANSACTIONS';
1213 l_event_class_code           := 'ACCRUAL';
1214 l_event_type_code            := 'ACCRUAL_ALL';
1215 l_line_definition_owner_code := 'S';
1216 l_line_definition_code       := 'OKL_ACCRUAL';
1217 --
1218 l_balance_type_code          := 'A';
1219 l_segment                     := NULL;
1220 l_ccid                        := NULL;
1221 l_adr_transaction_coa_id      := NULL;
1222 l_adr_accounting_coa_id       := NULL;
1223 l_adr_flexfield_segment_code  := NULL;
1224 l_adr_flex_value_set_id       := NULL;
1225 l_adr_value_type_code         := NULL;
1226 l_adr_value_combination_id    := NULL;
1227 l_adr_value_segment_code      := NULL;
1228 
1229 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1230 l_bflow_class_code           := '';    -- 4219869 Business Flow
1231 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1232 l_budgetary_control_flag     := 'N';
1233 
1234 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1235 l_bflow_applied_to_amt       := NULL; -- 5132302
1236 l_entered_amt_idx            := NULL;          -- 4262811
1237 l_accted_amt_idx             := NULL;          -- 4262811
1238 l_acc_rev_flag               := NULL;          -- 4262811
1239 l_accrual_line_num           := NULL;          -- 4262811
1240 l_tmp_amt                    := NULL;          -- 4262811
1241 --
1242  
1243 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1244     l_balance_type_code <> 'B' THEN
1245 IF NVL(p_source_6,'
1246 ') =  'LEASE_DEBIT'
1247  THEN 
1248 
1249    --
1250    XLA_AE_LINES_PKG.SetNewLine;
1251 
1252    p_balance_type_code          := l_balance_type_code;
1253    -- set the flag so later we will know whether the gain loss line needs to be created
1254    
1255    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1256      p_actual_flag :='A';
1257    END IF;
1258 
1259    --
1260    -- bulk performance
1261    --
1262    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1263                                       p_header_num   => 0); -- 4262811
1264    --
1265    -- set accounting line options
1266    --
1267    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1268            p_natural_side_code          => 'D'
1269          , p_gain_or_loss_flag          => 'N'
1270          , p_gl_transfer_mode_code      => 'S'
1271          , p_acct_entry_type_code       => 'A'
1272          , p_switch_side_flag           => 'Y'
1273          , p_merge_duplicate_code       => 'N'
1274          );
1275    --
1276    l_acc_rev_natural_side_code := 'C';  -- 4262811
1277    -- 
1278    --
1279    -- set accounting line type info
1280    --
1281    xla_ae_lines_pkg.SetAcctLineType
1282       (p_component_type             => l_component_type
1283       ,p_event_type_code            => l_event_type_code
1284       ,p_line_definition_owner_code => l_line_definition_owner_code
1285       ,p_line_definition_code       => l_line_definition_code
1286       ,p_accounting_line_code       => l_component_code
1287       ,p_accounting_line_type_code  => l_component_type_code
1288       ,p_accounting_line_appl_id    => l_component_appl_id
1289       ,p_amb_context_code           => l_amb_context_code
1290       ,p_entity_code                => l_entity_code
1291       ,p_event_class_code           => l_event_class_code);
1292    --
1293    -- set accounting class
1294    --
1295    xla_ae_lines_pkg.SetAcctClass(
1296            p_accounting_class_code  => 'LEASE_ACCRUAL'
1297          , p_ae_header_id           => l_ae_header_id
1298          );
1299 
1300    --
1301    -- set rounding class
1302    --
1303    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1304                       'LEASE_ACCRUAL';
1305 
1306    --
1307    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1308    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1309    --
1310    -- bulk performance
1311    --
1312    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1313 
1314    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1315       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1316 
1317    -- 4955764
1318    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1319       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1320 
1321    -- 4458381 Public Sector Enh
1322    
1323    --
1324    -- set accounting attributes for the line type
1325    --
1326    l_entered_amt_idx := 3;
1327    l_accted_amt_idx  := NULL;
1328    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1332    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
1329    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1330    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
1331    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1333    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1334    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
1335    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1336    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
1337    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1338    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
1339    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1340    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
1341    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1342    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
1343 
1344    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1345    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1346 
1347    ---------------------------------------------------------------------------------------------------------------
1348    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1349    ---------------------------------------------------------------------------------------------------------------
1350    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1351 
1352    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1353    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1354 
1355    IF xla_accounting_cache_pkg.GetValueChar
1356          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1357          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1358    AND l_bflow_method_code = 'PRIOR_ENTRY'
1359 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1360    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1361          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1362        )
1363    THEN
1364          xla_ae_lines_pkg.BflowUpgEntry
1365            (p_business_method_code    => l_bflow_method_code
1366            ,p_business_class_code     => l_bflow_class_code
1367            ,p_balance_type            => l_balance_type_code);
1368    ELSE
1369       NULL;
1370 -- No business flow processing for business flow method of NONE.
1371    END IF;
1372 
1373    --
1374    -- call analytical criteria
1375    --
1376    
1377    --
1378    -- call description
1379    --
1380    
1381 xla_ae_lines_pkg.SetLineDescription(
1382    p_ae_header_id => l_ae_header_id
1383   ,p_description  => Description_1 (
1384      p_application_id         => p_application_id
1385    , p_ae_header_id           => l_ae_header_id 
1386 , p_source_1 => p_source_1
1387 , p_source_2 => p_source_2
1388    )
1389 );
1390 
1391 
1392    --
1393    -- call ADRs
1394    -- Bug 4922099
1395    --
1396    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1397         (NVL(l_actual_upg_option, 'N') = 'O') OR
1398         (NVL(l_enc_upg_option, 'N') = 'O')
1399       )
1400    THEN
1401    NULL;
1402    --
1403    --
1404    
1405   l_ccid := AcctDerRule_3(
1406            p_application_id           => p_application_id
1407          , p_ae_header_id             => l_ae_header_id 
1408 , p_source_5 => p_source_5
1409          , x_transaction_coa_id       => l_adr_transaction_coa_id
1410          , x_accounting_coa_id        => l_adr_accounting_coa_id
1411          , x_value_type_code          => l_adr_value_type_code
1412          , p_side                     => 'NA'
1413    );
1414 
1415    xla_ae_lines_pkg.set_ccid(
1416     p_code_combination_id          => l_ccid
1417   , p_value_type_code              => l_adr_value_type_code
1418   , p_transaction_coa_id           => l_adr_transaction_coa_id
1419   , p_accounting_coa_id            => l_adr_accounting_coa_id
1420   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
1421   , p_adr_type_code                => 'S'
1422   , p_component_type               => l_component_type
1423   , p_component_code               => l_component_code
1424   , p_component_type_code          => l_component_type_code
1425   , p_component_appl_id            => l_component_appl_id
1426   , p_amb_context_code             => l_amb_context_code
1427   , p_side                         => 'NA'
1428   );
1429 
1430 
1431    --
1432    --
1433    END IF;
1434    --
1435    -- Bug 4922099
1436    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1437           (NVL(l_enc_upg_option, 'N') = 'O')
1438         ) AND
1439         (l_bflow_method_code = 'PRIOR_ENTRY')
1440       )
1441    THEN
1442       IF
1443       --
1444       1 = 2
1445       --
1446       THEN
1447       xla_accounting_err_pkg.build_message
1448                                     (p_appli_s_name            => 'XLA'
1449                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1450                                     ,p_token_1                 => 'LINE_NUMBER'
1451                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1452                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1453                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1454                                                                              l_component_type
1455                                                                             ,l_component_code
1456                                                                             ,l_component_type_code
1460                                                                             ,l_event_class_code
1457                                                                             ,l_component_appl_id
1458                                                                             ,l_amb_context_code
1459                                                                             ,l_entity_code
1461                                                                            )
1462                                     ,p_token_3                 => 'OWNER'
1463                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1464                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1465                                                                           ,p_lookup_code    => l_component_type_code
1466                                                                          )
1467                                     ,p_token_4                 => 'PRODUCT_NAME'
1468                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1469                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1470                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1471                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1472                                     ,p_ae_header_id            =>  NULL
1473                                        );
1474 
1475         IF (C_LEVEL_ERROR>= g_log_level) THEN
1476                  trace
1477                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1478                       ,p_level    => C_LEVEL_ERROR
1479                       ,p_module   => l_log_module);
1480         END IF;
1481       END IF;
1482    END IF;
1483    --
1484    --
1485    ------------------------------------------------------------------------------------------------
1486    -- 4219869 Business Flow
1487    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1488    -- Prior Entry.  Currently, the following code is always generated.
1489    ------------------------------------------------------------------------------------------------
1490    XLA_AE_LINES_PKG.ValidateCurrentLine;
1491 
1492    ------------------------------------------------------------------------------------
1493    -- 4219869 Business Flow
1494    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1495    ------------------------------------------------------------------------------------
1496    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1497 
1498    ----------------------------------------------------------------------------------
1499    -- 4219869 Business Flow
1500    -- Update journal entry status -- Need to generate this within IF <condition>
1501    ----------------------------------------------------------------------------------
1502    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1503          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1504          ,p_balance_type_code => l_balance_type_code
1505          );
1506 
1507    -------------------------------------------------------------------------------------------
1508    -- 4262811 - Generate the Accrual Reversal lines
1509    -------------------------------------------------------------------------------------------
1510    BEGIN
1511       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1512                               (g_array_event(p_event_id).array_value_num('header_index'));
1513       IF l_acc_rev_flag IS NULL THEN
1514          l_acc_rev_flag := 'N';
1515       END IF;
1516    EXCEPTION
1517       WHEN OTHERS THEN
1518          l_acc_rev_flag := 'N';
1519    END;
1520    --
1521    IF (l_acc_rev_flag = 'Y') THEN
1522 
1523        -- 4645092  ------------------------------------------------------------------------------
1524        -- To allow MPA report to determine if it should generate report process
1525        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1526        ------------------------------------------------------------------------------------------
1527 
1528        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1529        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1530 
1531        --
1532        -- Update the line information that should be overwritten
1533        --
1534        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1535                                          p_header_num   => 1);
1536        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1537 
1538        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1539 
1540        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1541           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1542        END IF;
1543 
1544       --
1545       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1546       --
1547       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1548           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1549       ELSE
1550           ---------------------------------------------------------------------------------------------------
1551           -- 4262811a Switch Sign
1552           ---------------------------------------------------------------------------------------------------
1553           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1554           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1555                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1559           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1556           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1557                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1558           -- 5132302
1560                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1561 
1562       END IF;
1563 
1564       -- 4955764
1565       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1567 
1568 
1569       XLA_AE_LINES_PKG.ValidateCurrentLine;
1570       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1571 
1572       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1573                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1574                ,p_balance_type_code => l_balance_type_code);
1575 
1576    END IF;
1577 
1578    -----------------------------------------------------------------------------------------
1579    -- 4262811 Multiperiod Accounting
1580    -----------------------------------------------------------------------------------------
1581      -- No MPA option is assigned.
1582 
1583 
1584 END IF;
1585 END IF;
1586 --
1587 
1588 --
1589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1590    trace
1591       (p_msg      => 'END of AcctLineType_5'
1592       ,p_level    => C_LEVEL_PROCEDURE
1593       ,p_module   => l_log_module);
1594 END IF;
1595 --
1596 EXCEPTION
1597   WHEN xla_exceptions_pkg.application_exception THEN
1598       RAISE;
1599   WHEN OTHERS THEN
1600        xla_exceptions_pkg.raise_message
1601            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_5');
1602 END AcctLineType_5;
1603 --
1604 
1605 ---------------------------------------
1606 --
1607 -- PRIVATE FUNCTION
1608 --         AcctLineType_6
1609 --
1610 ---------------------------------------
1611 PROCEDURE AcctLineType_6 (
1612   p_application_id        IN NUMBER
1613  ,p_event_id              IN NUMBER
1614  ,p_calculate_acctd_flag  IN VARCHAR2
1615  ,p_calculate_g_l_flag    IN VARCHAR2
1616  ,p_actual_flag           IN OUT VARCHAR2
1617  ,p_balance_type_code     OUT VARCHAR2
1618  ,p_gain_or_loss_ref      OUT VARCHAR2
1619  
1620 --Contract Number
1621  , p_source_1            IN VARCHAR2
1622 --Contract Product Name
1623  , p_source_2            IN VARCHAR2
1624 --Distribution Account
1625  , p_source_5            IN NUMBER
1626 --Accounting Line Type
1627  , p_source_6            IN VARCHAR2
1628  , p_source_6_meaning    IN VARCHAR2
1629 --Accounting Distribution Identifier
1630  , p_source_7            IN NUMBER
1631 --Distribution Type
1632  , p_source_8            IN VARCHAR2
1633 --Distribution Entered Amount
1634  , p_source_9            IN NUMBER
1635 --Transaction Currency Code
1636  , p_source_10            IN VARCHAR2
1637 --Transaction Currency Conversion Date
1638  , p_source_11            IN DATE
1639 --Transaction Currency Conversion Rate
1640  , p_source_12            IN NUMBER
1641 --Transaction Currency Conversion Type
1642  , p_source_13            IN VARCHAR2
1643 )
1644 IS
1645 
1646 l_component_type              VARCHAR2(80);
1647 l_component_code              VARCHAR2(30);
1648 l_component_type_code         VARCHAR2(1);
1649 l_component_appl_id           INTEGER;
1650 l_amb_context_code            VARCHAR2(30);
1651 l_entity_code                 VARCHAR2(30);
1652 l_event_class_code            VARCHAR2(30);
1653 l_ae_header_id                NUMBER;
1654 l_event_type_code             VARCHAR2(30);
1655 l_line_definition_code        VARCHAR2(30);
1656 l_line_definition_owner_code  VARCHAR2(1);
1657 --
1658 -- adr variables
1659 l_segment                     VARCHAR2(30);
1660 l_ccid                        NUMBER;
1661 l_adr_transaction_coa_id      NUMBER;
1662 l_adr_accounting_coa_id       NUMBER;
1663 l_adr_flexfield_segment_code  VARCHAR2(30);
1664 l_adr_flex_value_set_id       NUMBER;
1665 l_adr_value_type_code         VARCHAR2(30);
1666 l_adr_value_combination_id    NUMBER;
1667 l_adr_value_segment_code      VARCHAR2(30);
1668 
1669 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1670 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1671 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1672 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1673 
1674 -- 4262811 Variables ------------------------------------------------------------------------------------------
1675 l_entered_amt_idx             NUMBER;
1676 l_accted_amt_idx              NUMBER;
1677 l_acc_rev_flag                VARCHAR2(1);
1678 l_accrual_line_num            NUMBER;
1679 l_tmp_amt                     NUMBER;
1680 l_acc_rev_natural_side_code   VARCHAR2(1);
1681 
1682 l_num_entries                 NUMBER;
1683 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1684 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1685 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1686 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1687 l_recog_line_1                NUMBER;
1688 l_recog_line_2                NUMBER;
1689 
1690 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1691 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1692 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1693 
1694 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1695 
1699 ---------------------------------------------------------------------------------------------------------------
1696 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1697 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1698 
1700 
1701 
1702 --
1703 -- bulk performance
1704 --
1705 l_balance_type_code           VARCHAR2(1);
1706 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1707 l_log_module                  VARCHAR2(240);
1708 
1709 --
1710 -- Upgrade strategy
1711 --
1712 l_actual_upg_option           VARCHAR2(1);
1713 l_enc_upg_option           VARCHAR2(1);
1714 
1715 --
1716 BEGIN
1717 --
1718 IF g_log_enabled THEN
1719       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
1720 END IF;
1721 --
1722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1723 
1724       trace
1725          (p_msg      => 'BEGIN of AcctLineType_6'
1726          ,p_level    => C_LEVEL_PROCEDURE
1727          ,p_module   => l_log_module);
1728 
1729 END IF;
1730 --
1731 l_component_type             := 'AMB_JLT';
1732 l_component_code             := 'OKL_ASSET_DISPOSITION_CR';
1733 l_component_type_code        := 'S';
1734 l_component_appl_id          :=  540;
1735 l_amb_context_code           := 'DEFAULT';
1736 l_entity_code                := 'CONTRACTS';
1737 l_event_class_code           := 'ASSET_DISPOSITION';
1738 l_event_type_code            := 'ASSET_DISPOSITION_ALL';
1739 l_line_definition_owner_code := 'S';
1740 l_line_definition_code       := 'OKL_ASSET_DISPOSION';
1741 --
1742 l_balance_type_code          := 'A';
1743 l_segment                     := NULL;
1744 l_ccid                        := NULL;
1745 l_adr_transaction_coa_id      := NULL;
1746 l_adr_accounting_coa_id       := NULL;
1747 l_adr_flexfield_segment_code  := NULL;
1748 l_adr_flex_value_set_id       := NULL;
1749 l_adr_value_type_code         := NULL;
1750 l_adr_value_combination_id    := NULL;
1751 l_adr_value_segment_code      := NULL;
1752 
1753 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1754 l_bflow_class_code           := '';    -- 4219869 Business Flow
1755 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1756 l_budgetary_control_flag     := 'N';
1757 
1758 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1759 l_bflow_applied_to_amt       := NULL; -- 5132302
1760 l_entered_amt_idx            := NULL;          -- 4262811
1761 l_accted_amt_idx             := NULL;          -- 4262811
1762 l_acc_rev_flag               := NULL;          -- 4262811
1763 l_accrual_line_num           := NULL;          -- 4262811
1764 l_tmp_amt                    := NULL;          -- 4262811
1765 --
1766  
1767 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1768     l_balance_type_code <> 'B' THEN
1769 IF NVL(p_source_6,'
1770 ') =  'LEASE_CREDIT'
1771  THEN 
1772 
1773    --
1774    XLA_AE_LINES_PKG.SetNewLine;
1775 
1776    p_balance_type_code          := l_balance_type_code;
1777    -- set the flag so later we will know whether the gain loss line needs to be created
1778    
1779    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1780      p_actual_flag :='A';
1781    END IF;
1782 
1783    --
1784    -- bulk performance
1785    --
1786    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1787                                       p_header_num   => 0); -- 4262811
1788    --
1789    -- set accounting line options
1790    --
1791    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1792            p_natural_side_code          => 'C'
1793          , p_gain_or_loss_flag          => 'N'
1794          , p_gl_transfer_mode_code      => 'S'
1795          , p_acct_entry_type_code       => 'A'
1796          , p_switch_side_flag           => 'Y'
1797          , p_merge_duplicate_code       => 'N'
1798          );
1799    --
1800    l_acc_rev_natural_side_code := 'D';  -- 4262811
1801    -- 
1802    --
1803    -- set accounting line type info
1804    --
1805    xla_ae_lines_pkg.SetAcctLineType
1806       (p_component_type             => l_component_type
1807       ,p_event_type_code            => l_event_type_code
1808       ,p_line_definition_owner_code => l_line_definition_owner_code
1809       ,p_line_definition_code       => l_line_definition_code
1810       ,p_accounting_line_code       => l_component_code
1811       ,p_accounting_line_type_code  => l_component_type_code
1812       ,p_accounting_line_appl_id    => l_component_appl_id
1813       ,p_amb_context_code           => l_amb_context_code
1814       ,p_entity_code                => l_entity_code
1815       ,p_event_class_code           => l_event_class_code);
1816    --
1817    -- set accounting class
1818    --
1819    xla_ae_lines_pkg.SetAcctClass(
1820            p_accounting_class_code  => 'ASSET_DISPOSITION'
1821          , p_ae_header_id           => l_ae_header_id
1822          );
1823 
1824    --
1825    -- set rounding class
1826    --
1827    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1828                       'ASSET_DISPOSITION';
1829 
1830    --
1831    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1832    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1833    --
1834    -- bulk performance
1835    --
1836    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1837 
1838    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1839       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1840 
1841    -- 4955764
1845    -- 4458381 Public Sector Enh
1842    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1843       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1844 
1846    
1847    --
1848    -- set accounting attributes for the line type
1849    --
1850    l_entered_amt_idx := 3;
1851    l_accted_amt_idx  := NULL;
1852    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1853    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1854    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
1855    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1856    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
1857    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1858    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
1859    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1860    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
1861    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1862    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
1863    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1864    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
1865    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1866    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
1867 
1868    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1869    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1870 
1871    ---------------------------------------------------------------------------------------------------------------
1872    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1873    ---------------------------------------------------------------------------------------------------------------
1874    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1875 
1876    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1877    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1878 
1879    IF xla_accounting_cache_pkg.GetValueChar
1880          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1881          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1882    AND l_bflow_method_code = 'PRIOR_ENTRY'
1883 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1884    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1885          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1886        )
1887    THEN
1888          xla_ae_lines_pkg.BflowUpgEntry
1889            (p_business_method_code    => l_bflow_method_code
1890            ,p_business_class_code     => l_bflow_class_code
1891            ,p_balance_type            => l_balance_type_code);
1892    ELSE
1893       NULL;
1894 -- No business flow processing for business flow method of NONE.
1895    END IF;
1896 
1897    --
1898    -- call analytical criteria
1899    --
1900    
1901    --
1902    -- call description
1903    --
1904    
1905 xla_ae_lines_pkg.SetLineDescription(
1906    p_ae_header_id => l_ae_header_id
1907   ,p_description  => Description_1 (
1908      p_application_id         => p_application_id
1909    , p_ae_header_id           => l_ae_header_id 
1910 , p_source_1 => p_source_1
1911 , p_source_2 => p_source_2
1912    )
1913 );
1914 
1915 
1916    --
1917    -- call ADRs
1918    -- Bug 4922099
1919    --
1920    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1921         (NVL(l_actual_upg_option, 'N') = 'O') OR
1922         (NVL(l_enc_upg_option, 'N') = 'O')
1923       )
1924    THEN
1925    NULL;
1926    --
1927    --
1928    
1929   l_ccid := AcctDerRule_3(
1930            p_application_id           => p_application_id
1931          , p_ae_header_id             => l_ae_header_id 
1932 , p_source_5 => p_source_5
1933          , x_transaction_coa_id       => l_adr_transaction_coa_id
1934          , x_accounting_coa_id        => l_adr_accounting_coa_id
1935          , x_value_type_code          => l_adr_value_type_code
1936          , p_side                     => 'NA'
1937    );
1938 
1939    xla_ae_lines_pkg.set_ccid(
1940     p_code_combination_id          => l_ccid
1941   , p_value_type_code              => l_adr_value_type_code
1942   , p_transaction_coa_id           => l_adr_transaction_coa_id
1943   , p_accounting_coa_id            => l_adr_accounting_coa_id
1944   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
1945   , p_adr_type_code                => 'S'
1946   , p_component_type               => l_component_type
1947   , p_component_code               => l_component_code
1948   , p_component_type_code          => l_component_type_code
1949   , p_component_appl_id            => l_component_appl_id
1950   , p_amb_context_code             => l_amb_context_code
1951   , p_side                         => 'NA'
1952   );
1953 
1954 
1955    --
1956    --
1957    END IF;
1958    --
1959    -- Bug 4922099
1960    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1961           (NVL(l_enc_upg_option, 'N') = 'O')
1962         ) AND
1963         (l_bflow_method_code = 'PRIOR_ENTRY')
1964       )
1965    THEN
1966       IF
1967       --
1968       1 = 2
1969       --
1970       THEN
1971       xla_accounting_err_pkg.build_message
1972                                     (p_appli_s_name            => 'XLA'
1973                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1974                                     ,p_token_1                 => 'LINE_NUMBER'
1975                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1979                                                                             ,l_component_code
1976                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1977                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1978                                                                              l_component_type
1980                                                                             ,l_component_type_code
1981                                                                             ,l_component_appl_id
1982                                                                             ,l_amb_context_code
1983                                                                             ,l_entity_code
1984                                                                             ,l_event_class_code
1985                                                                            )
1986                                     ,p_token_3                 => 'OWNER'
1987                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1988                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1989                                                                           ,p_lookup_code    => l_component_type_code
1990                                                                          )
1991                                     ,p_token_4                 => 'PRODUCT_NAME'
1992                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1993                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1994                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1995                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1996                                     ,p_ae_header_id            =>  NULL
1997                                        );
1998 
1999         IF (C_LEVEL_ERROR>= g_log_level) THEN
2000                  trace
2001                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2002                       ,p_level    => C_LEVEL_ERROR
2003                       ,p_module   => l_log_module);
2004         END IF;
2005       END IF;
2006    END IF;
2007    --
2008    --
2009    ------------------------------------------------------------------------------------------------
2010    -- 4219869 Business Flow
2011    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2012    -- Prior Entry.  Currently, the following code is always generated.
2013    ------------------------------------------------------------------------------------------------
2014    XLA_AE_LINES_PKG.ValidateCurrentLine;
2015 
2016    ------------------------------------------------------------------------------------
2017    -- 4219869 Business Flow
2018    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2019    ------------------------------------------------------------------------------------
2023    -- 4219869 Business Flow
2020    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2021 
2022    ----------------------------------------------------------------------------------
2024    -- Update journal entry status -- Need to generate this within IF <condition>
2025    ----------------------------------------------------------------------------------
2026    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2027          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2028          ,p_balance_type_code => l_balance_type_code
2029          );
2030 
2031    -------------------------------------------------------------------------------------------
2032    -- 4262811 - Generate the Accrual Reversal lines
2033    -------------------------------------------------------------------------------------------
2034    BEGIN
2035       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2036                               (g_array_event(p_event_id).array_value_num('header_index'));
2037       IF l_acc_rev_flag IS NULL THEN
2038          l_acc_rev_flag := 'N';
2039       END IF;
2040    EXCEPTION
2041       WHEN OTHERS THEN
2042          l_acc_rev_flag := 'N';
2043    END;
2044    --
2045    IF (l_acc_rev_flag = 'Y') THEN
2046 
2047        -- 4645092  ------------------------------------------------------------------------------
2048        -- To allow MPA report to determine if it should generate report process
2049        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2050        ------------------------------------------------------------------------------------------
2051 
2052        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2053        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2054 
2055        --
2056        -- Update the line information that should be overwritten
2057        --
2058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2059                                          p_header_num   => 1);
2060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2061 
2062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2063 
2064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2066        END IF;
2067 
2068       --
2069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2070       --
2071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2073       ELSE
2074           ---------------------------------------------------------------------------------------------------
2075           -- 4262811a Switch Sign
2076           ---------------------------------------------------------------------------------------------------
2077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2082           -- 5132302
2083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2085 
2086       END IF;
2087 
2088       -- 4955764
2089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2091 
2092 
2093       XLA_AE_LINES_PKG.ValidateCurrentLine;
2094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2095 
2096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2098                ,p_balance_type_code => l_balance_type_code);
2099 
2100    END IF;
2101 
2102    -----------------------------------------------------------------------------------------
2103    -- 4262811 Multiperiod Accounting
2104    -----------------------------------------------------------------------------------------
2105      -- No MPA option is assigned.
2106 
2107 
2108 END IF;
2109 END IF;
2110 --
2111 
2112 --
2113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2114    trace
2115       (p_msg      => 'END of AcctLineType_6'
2116       ,p_level    => C_LEVEL_PROCEDURE
2117       ,p_module   => l_log_module);
2118 END IF;
2119 --
2120 EXCEPTION
2121   WHEN xla_exceptions_pkg.application_exception THEN
2122       RAISE;
2123   WHEN OTHERS THEN
2124        xla_exceptions_pkg.raise_message
2125            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_6');
2126 END AcctLineType_6;
2127 --
2128 
2129 ---------------------------------------
2130 --
2131 -- PRIVATE FUNCTION
2132 --         AcctLineType_7
2133 --
2134 ---------------------------------------
2135 PROCEDURE AcctLineType_7 (
2136   p_application_id        IN NUMBER
2137  ,p_event_id              IN NUMBER
2138  ,p_calculate_acctd_flag  IN VARCHAR2
2139  ,p_calculate_g_l_flag    IN VARCHAR2
2140  ,p_actual_flag           IN OUT VARCHAR2
2141  ,p_balance_type_code     OUT VARCHAR2
2142  ,p_gain_or_loss_ref      OUT VARCHAR2
2143  
2144 --Contract Number
2145  , p_source_1            IN VARCHAR2
2146 --Contract Product Name
2150 --Accounting Line Type
2147  , p_source_2            IN VARCHAR2
2148 --Distribution Account
2149  , p_source_5            IN NUMBER
2151  , p_source_6            IN VARCHAR2
2152  , p_source_6_meaning    IN VARCHAR2
2153 --Accounting Distribution Identifier
2154  , p_source_7            IN NUMBER
2155 --Distribution Type
2156  , p_source_8            IN VARCHAR2
2157 --Distribution Entered Amount
2158  , p_source_9            IN NUMBER
2159 --Transaction Currency Code
2160  , p_source_10            IN VARCHAR2
2161 --Transaction Currency Conversion Date
2162  , p_source_11            IN DATE
2163 --Transaction Currency Conversion Rate
2164  , p_source_12            IN NUMBER
2165 --Transaction Currency Conversion Type
2166  , p_source_13            IN VARCHAR2
2167 )
2168 IS
2169 
2170 l_component_type              VARCHAR2(80);
2171 l_component_code              VARCHAR2(30);
2172 l_component_type_code         VARCHAR2(1);
2173 l_component_appl_id           INTEGER;
2174 l_amb_context_code            VARCHAR2(30);
2175 l_entity_code                 VARCHAR2(30);
2176 l_event_class_code            VARCHAR2(30);
2177 l_ae_header_id                NUMBER;
2178 l_event_type_code             VARCHAR2(30);
2179 l_line_definition_code        VARCHAR2(30);
2180 l_line_definition_owner_code  VARCHAR2(1);
2181 --
2182 -- adr variables
2183 l_segment                     VARCHAR2(30);
2184 l_ccid                        NUMBER;
2185 l_adr_transaction_coa_id      NUMBER;
2186 l_adr_accounting_coa_id       NUMBER;
2187 l_adr_flexfield_segment_code  VARCHAR2(30);
2188 l_adr_flex_value_set_id       NUMBER;
2189 l_adr_value_type_code         VARCHAR2(30);
2190 l_adr_value_combination_id    NUMBER;
2191 l_adr_value_segment_code      VARCHAR2(30);
2192 
2193 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2194 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2195 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2196 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2197 
2198 -- 4262811 Variables ------------------------------------------------------------------------------------------
2199 l_entered_amt_idx             NUMBER;
2200 l_accted_amt_idx              NUMBER;
2201 l_acc_rev_flag                VARCHAR2(1);
2202 l_accrual_line_num            NUMBER;
2203 l_tmp_amt                     NUMBER;
2204 l_acc_rev_natural_side_code   VARCHAR2(1);
2205 
2206 l_num_entries                 NUMBER;
2207 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2208 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2209 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2210 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2211 l_recog_line_1                NUMBER;
2212 l_recog_line_2                NUMBER;
2213 
2214 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2215 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2216 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2217 
2218 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2219 
2220 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2221 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2222 
2223 ---------------------------------------------------------------------------------------------------------------
2224 
2225 
2226 --
2227 -- bulk performance
2228 --
2229 l_balance_type_code           VARCHAR2(1);
2230 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2231 l_log_module                  VARCHAR2(240);
2232 
2233 --
2234 -- Upgrade strategy
2235 --
2236 l_actual_upg_option           VARCHAR2(1);
2237 l_enc_upg_option           VARCHAR2(1);
2238 
2239 --
2240 BEGIN
2241 --
2242 IF g_log_enabled THEN
2243       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
2244 END IF;
2245 --
2246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2247 
2248       trace
2249          (p_msg      => 'BEGIN of AcctLineType_7'
2250          ,p_level    => C_LEVEL_PROCEDURE
2251          ,p_module   => l_log_module);
2252 
2253 END IF;
2254 --
2255 l_component_type             := 'AMB_JLT';
2256 l_component_code             := 'OKL_ASSET_DISPOSITION_DR';
2257 l_component_type_code        := 'S';
2258 l_component_appl_id          :=  540;
2259 l_amb_context_code           := 'DEFAULT';
2260 l_entity_code                := 'CONTRACTS';
2261 l_event_class_code           := 'ASSET_DISPOSITION';
2262 l_event_type_code            := 'ASSET_DISPOSITION_ALL';
2263 l_line_definition_owner_code := 'S';
2264 l_line_definition_code       := 'OKL_ASSET_DISPOSION';
2265 --
2266 l_balance_type_code          := 'A';
2267 l_segment                     := NULL;
2268 l_ccid                        := NULL;
2269 l_adr_transaction_coa_id      := NULL;
2270 l_adr_accounting_coa_id       := NULL;
2271 l_adr_flexfield_segment_code  := NULL;
2272 l_adr_flex_value_set_id       := NULL;
2273 l_adr_value_type_code         := NULL;
2274 l_adr_value_combination_id    := NULL;
2275 l_adr_value_segment_code      := NULL;
2276 
2277 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2278 l_bflow_class_code           := '';    -- 4219869 Business Flow
2279 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2280 l_budgetary_control_flag     := 'N';
2281 
2282 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2283 l_bflow_applied_to_amt       := NULL; -- 5132302
2284 l_entered_amt_idx            := NULL;          -- 4262811
2285 l_accted_amt_idx             := NULL;          -- 4262811
2286 l_acc_rev_flag               := NULL;          -- 4262811
2290  
2287 l_accrual_line_num           := NULL;          -- 4262811
2288 l_tmp_amt                    := NULL;          -- 4262811
2289 --
2291 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2292     l_balance_type_code <> 'B' THEN
2293 IF NVL(p_source_6,'
2294 ') =  'LEASE_DEBIT'
2295  THEN 
2296 
2297    --
2298    XLA_AE_LINES_PKG.SetNewLine;
2299 
2300    p_balance_type_code          := l_balance_type_code;
2301    -- set the flag so later we will know whether the gain loss line needs to be created
2302    
2303    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2304      p_actual_flag :='A';
2305    END IF;
2306 
2307    --
2308    -- bulk performance
2309    --
2310    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2311                                       p_header_num   => 0); -- 4262811
2312    --
2313    -- set accounting line options
2314    --
2315    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2316            p_natural_side_code          => 'D'
2317          , p_gain_or_loss_flag          => 'N'
2318          , p_gl_transfer_mode_code      => 'S'
2319          , p_acct_entry_type_code       => 'A'
2320          , p_switch_side_flag           => 'Y'
2321          , p_merge_duplicate_code       => 'N'
2322          );
2323    --
2324    l_acc_rev_natural_side_code := 'C';  -- 4262811
2325    -- 
2326    --
2327    -- set accounting line type info
2328    --
2329    xla_ae_lines_pkg.SetAcctLineType
2330       (p_component_type             => l_component_type
2331       ,p_event_type_code            => l_event_type_code
2332       ,p_line_definition_owner_code => l_line_definition_owner_code
2333       ,p_line_definition_code       => l_line_definition_code
2334       ,p_accounting_line_code       => l_component_code
2335       ,p_accounting_line_type_code  => l_component_type_code
2336       ,p_accounting_line_appl_id    => l_component_appl_id
2337       ,p_amb_context_code           => l_amb_context_code
2338       ,p_entity_code                => l_entity_code
2339       ,p_event_class_code           => l_event_class_code);
2340    --
2341    -- set accounting class
2342    --
2343    xla_ae_lines_pkg.SetAcctClass(
2344            p_accounting_class_code  => 'ASSET_DISPOSITION'
2345          , p_ae_header_id           => l_ae_header_id
2346          );
2347 
2348    --
2349    -- set rounding class
2350    --
2351    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2352                       'ASSET_DISPOSITION';
2353 
2354    --
2355    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2356    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2357    --
2358    -- bulk performance
2359    --
2360    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2361 
2362    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2363       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2364 
2365    -- 4955764
2366    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2367       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2368 
2369    -- 4458381 Public Sector Enh
2370    
2371    --
2372    -- set accounting attributes for the line type
2373    --
2374    l_entered_amt_idx := 3;
2375    l_accted_amt_idx  := NULL;
2376    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2377    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2378    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
2379    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2380    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
2381    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2382    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
2383    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2384    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
2385    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2386    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
2387    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2388    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
2389    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2390    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
2391 
2392    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2393    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2394 
2395    ---------------------------------------------------------------------------------------------------------------
2396    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2397    ---------------------------------------------------------------------------------------------------------------
2398    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2399 
2400    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2401    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2402 
2403    IF xla_accounting_cache_pkg.GetValueChar
2404          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2405          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2406    AND l_bflow_method_code = 'PRIOR_ENTRY'
2407 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2408    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2409          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2410        )
2411    THEN
2415            ,p_balance_type            => l_balance_type_code);
2412          xla_ae_lines_pkg.BflowUpgEntry
2413            (p_business_method_code    => l_bflow_method_code
2414            ,p_business_class_code     => l_bflow_class_code
2416    ELSE
2417       NULL;
2418 -- No business flow processing for business flow method of NONE.
2419    END IF;
2420 
2421    --
2422    -- call analytical criteria
2423    --
2424    
2425    --
2426    -- call description
2427    --
2428    
2429 xla_ae_lines_pkg.SetLineDescription(
2430    p_ae_header_id => l_ae_header_id
2431   ,p_description  => Description_1 (
2432      p_application_id         => p_application_id
2433    , p_ae_header_id           => l_ae_header_id 
2434 , p_source_1 => p_source_1
2435 , p_source_2 => p_source_2
2436    )
2437 );
2438 
2439 
2440    --
2441    -- call ADRs
2442    -- Bug 4922099
2443    --
2444    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2445         (NVL(l_actual_upg_option, 'N') = 'O') OR
2446         (NVL(l_enc_upg_option, 'N') = 'O')
2447       )
2448    THEN
2449    NULL;
2450    --
2451    --
2452    
2453   l_ccid := AcctDerRule_3(
2454            p_application_id           => p_application_id
2455          , p_ae_header_id             => l_ae_header_id 
2456 , p_source_5 => p_source_5
2457          , x_transaction_coa_id       => l_adr_transaction_coa_id
2458          , x_accounting_coa_id        => l_adr_accounting_coa_id
2459          , x_value_type_code          => l_adr_value_type_code
2460          , p_side                     => 'NA'
2461    );
2462 
2463    xla_ae_lines_pkg.set_ccid(
2464     p_code_combination_id          => l_ccid
2465   , p_value_type_code              => l_adr_value_type_code
2466   , p_transaction_coa_id           => l_adr_transaction_coa_id
2467   , p_accounting_coa_id            => l_adr_accounting_coa_id
2468   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
2469   , p_adr_type_code                => 'S'
2470   , p_component_type               => l_component_type
2471   , p_component_code               => l_component_code
2472   , p_component_type_code          => l_component_type_code
2473   , p_component_appl_id            => l_component_appl_id
2474   , p_amb_context_code             => l_amb_context_code
2475   , p_side                         => 'NA'
2476   );
2477 
2478 
2479    --
2480    --
2481    END IF;
2482    --
2483    -- Bug 4922099
2484    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2485           (NVL(l_enc_upg_option, 'N') = 'O')
2486         ) AND
2487         (l_bflow_method_code = 'PRIOR_ENTRY')
2488       )
2489    THEN
2490       IF
2491       --
2492       1 = 2
2493       --
2494       THEN
2495       xla_accounting_err_pkg.build_message
2496                                     (p_appli_s_name            => 'XLA'
2497                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2498                                     ,p_token_1                 => 'LINE_NUMBER'
2499                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2500                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2501                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2502                                                                              l_component_type
2503                                                                             ,l_component_code
2504                                                                             ,l_component_type_code
2505                                                                             ,l_component_appl_id
2506                                                                             ,l_amb_context_code
2507                                                                             ,l_entity_code
2508                                                                             ,l_event_class_code
2509                                                                            )
2510                                     ,p_token_3                 => 'OWNER'
2511                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2512                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2513                                                                           ,p_lookup_code    => l_component_type_code
2514                                                                          )
2515                                     ,p_token_4                 => 'PRODUCT_NAME'
2516                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2517                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2518                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2519                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2520                                     ,p_ae_header_id            =>  NULL
2521                                        );
2522 
2523         IF (C_LEVEL_ERROR>= g_log_level) THEN
2524                  trace
2525                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2526                       ,p_level    => C_LEVEL_ERROR
2527                       ,p_module   => l_log_module);
2528         END IF;
2529       END IF;
2530    END IF;
2531    --
2532    --
2533    ------------------------------------------------------------------------------------------------
2534    -- 4219869 Business Flow
2535    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2536    -- Prior Entry.  Currently, the following code is always generated.
2540    ------------------------------------------------------------------------------------
2537    ------------------------------------------------------------------------------------------------
2538    XLA_AE_LINES_PKG.ValidateCurrentLine;
2539 
2541    -- 4219869 Business Flow
2542    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2543    ------------------------------------------------------------------------------------
2544    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2545 
2546    ----------------------------------------------------------------------------------
2547    -- 4219869 Business Flow
2548    -- Update journal entry status -- Need to generate this within IF <condition>
2549    ----------------------------------------------------------------------------------
2550    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2551          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2552          ,p_balance_type_code => l_balance_type_code
2553          );
2554 
2555    -------------------------------------------------------------------------------------------
2556    -- 4262811 - Generate the Accrual Reversal lines
2557    -------------------------------------------------------------------------------------------
2558    BEGIN
2559       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2560                               (g_array_event(p_event_id).array_value_num('header_index'));
2561       IF l_acc_rev_flag IS NULL THEN
2562          l_acc_rev_flag := 'N';
2563       END IF;
2564    EXCEPTION
2565       WHEN OTHERS THEN
2566          l_acc_rev_flag := 'N';
2567    END;
2568    --
2569    IF (l_acc_rev_flag = 'Y') THEN
2570 
2571        -- 4645092  ------------------------------------------------------------------------------
2572        -- To allow MPA report to determine if it should generate report process
2573        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2574        ------------------------------------------------------------------------------------------
2575 
2576        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2577        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2578 
2579        --
2580        -- Update the line information that should be overwritten
2581        --
2582        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2583                                          p_header_num   => 1);
2584        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2585 
2586        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2587 
2588        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2589           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2590        END IF;
2591 
2592       --
2593       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2594       --
2595       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2596           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2597       ELSE
2598           ---------------------------------------------------------------------------------------------------
2599           -- 4262811a Switch Sign
2600           ---------------------------------------------------------------------------------------------------
2601           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2602           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2603                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2604           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2605                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2606           -- 5132302
2607           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2608                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2609 
2610       END IF;
2611 
2612       -- 4955764
2613       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2614       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2615 
2616 
2617       XLA_AE_LINES_PKG.ValidateCurrentLine;
2618       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2619 
2620       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2621                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2622                ,p_balance_type_code => l_balance_type_code);
2623 
2624    END IF;
2625 
2626    -----------------------------------------------------------------------------------------
2627    -- 4262811 Multiperiod Accounting
2628    -----------------------------------------------------------------------------------------
2629      -- No MPA option is assigned.
2630 
2631 
2632 END IF;
2633 END IF;
2634 --
2635 
2636 --
2637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2638    trace
2639       (p_msg      => 'END of AcctLineType_7'
2640       ,p_level    => C_LEVEL_PROCEDURE
2641       ,p_module   => l_log_module);
2642 END IF;
2643 --
2644 EXCEPTION
2645   WHEN xla_exceptions_pkg.application_exception THEN
2646       RAISE;
2647   WHEN OTHERS THEN
2648        xla_exceptions_pkg.raise_message
2649            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_7');
2650 END AcctLineType_7;
2651 --
2652 
2653 ---------------------------------------
2654 --
2655 -- PRIVATE FUNCTION
2656 --         AcctLineType_8
2657 --
2658 ---------------------------------------
2659 PROCEDURE AcctLineType_8 (
2663  ,p_calculate_g_l_flag    IN VARCHAR2
2660   p_application_id        IN NUMBER
2661  ,p_event_id              IN NUMBER
2662  ,p_calculate_acctd_flag  IN VARCHAR2
2664  ,p_actual_flag           IN OUT VARCHAR2
2665  ,p_balance_type_code     OUT VARCHAR2
2666  ,p_gain_or_loss_ref      OUT VARCHAR2
2667  
2668 --Contract Number
2669  , p_source_1            IN VARCHAR2
2670 --Contract Product Name
2671  , p_source_2            IN VARCHAR2
2672 --Distribution Account
2673  , p_source_5            IN NUMBER
2674 --Accounting Line Type
2675  , p_source_6            IN VARCHAR2
2676  , p_source_6_meaning    IN VARCHAR2
2677 --Accounting Distribution Identifier
2678  , p_source_7            IN NUMBER
2679 --Distribution Type
2680  , p_source_8            IN VARCHAR2
2681 --Distribution Entered Amount
2682  , p_source_9            IN NUMBER
2683 --Transaction Currency Code
2684  , p_source_10            IN VARCHAR2
2685 --Transaction Currency Conversion Date
2686  , p_source_11            IN DATE
2687 --Transaction Currency Conversion Rate
2688  , p_source_12            IN NUMBER
2689 --Transaction Currency Conversion Type
2690  , p_source_13            IN VARCHAR2
2691 )
2692 IS
2693 
2694 l_component_type              VARCHAR2(80);
2695 l_component_code              VARCHAR2(30);
2696 l_component_type_code         VARCHAR2(1);
2697 l_component_appl_id           INTEGER;
2698 l_amb_context_code            VARCHAR2(30);
2699 l_entity_code                 VARCHAR2(30);
2700 l_event_class_code            VARCHAR2(30);
2701 l_ae_header_id                NUMBER;
2702 l_event_type_code             VARCHAR2(30);
2703 l_line_definition_code        VARCHAR2(30);
2704 l_line_definition_owner_code  VARCHAR2(1);
2705 --
2706 -- adr variables
2707 l_segment                     VARCHAR2(30);
2708 l_ccid                        NUMBER;
2709 l_adr_transaction_coa_id      NUMBER;
2710 l_adr_accounting_coa_id       NUMBER;
2711 l_adr_flexfield_segment_code  VARCHAR2(30);
2712 l_adr_flex_value_set_id       NUMBER;
2713 l_adr_value_type_code         VARCHAR2(30);
2714 l_adr_value_combination_id    NUMBER;
2715 l_adr_value_segment_code      VARCHAR2(30);
2716 
2717 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2718 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2719 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2720 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2721 
2722 -- 4262811 Variables ------------------------------------------------------------------------------------------
2723 l_entered_amt_idx             NUMBER;
2724 l_accted_amt_idx              NUMBER;
2725 l_acc_rev_flag                VARCHAR2(1);
2726 l_accrual_line_num            NUMBER;
2727 l_tmp_amt                     NUMBER;
2728 l_acc_rev_natural_side_code   VARCHAR2(1);
2729 
2730 l_num_entries                 NUMBER;
2731 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2732 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2733 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2734 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2735 l_recog_line_1                NUMBER;
2736 l_recog_line_2                NUMBER;
2737 
2738 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2739 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2740 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2741 
2742 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2743 
2744 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2745 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2746 
2747 ---------------------------------------------------------------------------------------------------------------
2748 
2749 
2750 --
2751 -- bulk performance
2752 --
2753 l_balance_type_code           VARCHAR2(1);
2754 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2755 l_log_module                  VARCHAR2(240);
2756 
2757 --
2758 -- Upgrade strategy
2759 --
2760 l_actual_upg_option           VARCHAR2(1);
2761 l_enc_upg_option           VARCHAR2(1);
2762 
2763 --
2764 BEGIN
2765 --
2766 IF g_log_enabled THEN
2767       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
2768 END IF;
2769 --
2770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2771 
2772       trace
2773          (p_msg      => 'BEGIN of AcctLineType_8'
2774          ,p_level    => C_LEVEL_PROCEDURE
2775          ,p_module   => l_log_module);
2776 
2777 END IF;
2778 --
2779 l_component_type             := 'AMB_JLT';
2780 l_component_code             := 'OKL_BOOKING_CR';
2781 l_component_type_code        := 'S';
2782 l_component_appl_id          :=  540;
2783 l_amb_context_code           := 'DEFAULT';
2784 l_entity_code                := 'CONTRACTS';
2785 l_event_class_code           := 'BOOKING';
2786 l_event_type_code            := 'BOOKING_ALL';
2787 l_line_definition_owner_code := 'S';
2788 l_line_definition_code       := 'OKL_BOOKING';
2789 --
2790 l_balance_type_code          := 'A';
2791 l_segment                     := NULL;
2792 l_ccid                        := NULL;
2793 l_adr_transaction_coa_id      := NULL;
2794 l_adr_accounting_coa_id       := NULL;
2795 l_adr_flexfield_segment_code  := NULL;
2796 l_adr_flex_value_set_id       := NULL;
2797 l_adr_value_type_code         := NULL;
2798 l_adr_value_combination_id    := NULL;
2799 l_adr_value_segment_code      := NULL;
2800 
2801 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2802 l_bflow_class_code           := '';    -- 4219869 Business Flow
2806 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2803 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2804 l_budgetary_control_flag     := 'N';
2805 
2807 l_bflow_applied_to_amt       := NULL; -- 5132302
2808 l_entered_amt_idx            := NULL;          -- 4262811
2809 l_accted_amt_idx             := NULL;          -- 4262811
2810 l_acc_rev_flag               := NULL;          -- 4262811
2811 l_accrual_line_num           := NULL;          -- 4262811
2812 l_tmp_amt                    := NULL;          -- 4262811
2813 --
2814  
2815 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2816     l_balance_type_code <> 'B' THEN
2817 IF NVL(p_source_6,'
2818 ') =  'LEASE_CREDIT'
2819  THEN 
2820 
2821    --
2822    XLA_AE_LINES_PKG.SetNewLine;
2823 
2824    p_balance_type_code          := l_balance_type_code;
2825    -- set the flag so later we will know whether the gain loss line needs to be created
2826    
2827    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2828      p_actual_flag :='A';
2829    END IF;
2830 
2831    --
2832    -- bulk performance
2833    --
2834    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2835                                       p_header_num   => 0); -- 4262811
2836    --
2837    -- set accounting line options
2838    --
2839    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2840            p_natural_side_code          => 'C'
2841          , p_gain_or_loss_flag          => 'N'
2842          , p_gl_transfer_mode_code      => 'S'
2843          , p_acct_entry_type_code       => 'A'
2844          , p_switch_side_flag           => 'Y'
2845          , p_merge_duplicate_code       => 'N'
2846          );
2847    --
2848    l_acc_rev_natural_side_code := 'D';  -- 4262811
2849    -- 
2850    --
2851    -- set accounting line type info
2852    --
2853    xla_ae_lines_pkg.SetAcctLineType
2854       (p_component_type             => l_component_type
2855       ,p_event_type_code            => l_event_type_code
2856       ,p_line_definition_owner_code => l_line_definition_owner_code
2857       ,p_line_definition_code       => l_line_definition_code
2858       ,p_accounting_line_code       => l_component_code
2859       ,p_accounting_line_type_code  => l_component_type_code
2860       ,p_accounting_line_appl_id    => l_component_appl_id
2861       ,p_amb_context_code           => l_amb_context_code
2862       ,p_entity_code                => l_entity_code
2863       ,p_event_class_code           => l_event_class_code);
2864    --
2865    -- set accounting class
2866    --
2867    xla_ae_lines_pkg.SetAcctClass(
2868            p_accounting_class_code  => 'BOOKING'
2869          , p_ae_header_id           => l_ae_header_id
2870          );
2871 
2872    --
2873    -- set rounding class
2874    --
2875    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2876                       'BOOKING';
2877 
2878    --
2879    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2880    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2881    --
2882    -- bulk performance
2883    --
2884    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2885 
2886    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2887       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2888 
2889    -- 4955764
2890    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2891       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2892 
2893    -- 4458381 Public Sector Enh
2894    
2895    --
2896    -- set accounting attributes for the line type
2897    --
2898    l_entered_amt_idx := 3;
2899    l_accted_amt_idx  := NULL;
2900    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2901    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2902    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
2903    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2904    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
2905    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2906    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
2907    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2908    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
2909    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2910    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
2911    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2912    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
2913    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2914    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
2915 
2916    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2917    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2918 
2919    ---------------------------------------------------------------------------------------------------------------
2920    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2921    ---------------------------------------------------------------------------------------------------------------
2922    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2923 
2924    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2925    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2926 
2927    IF xla_accounting_cache_pkg.GetValueChar
2931 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2928          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2929          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2930    AND l_bflow_method_code = 'PRIOR_ENTRY'
2932    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2933          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2934        )
2935    THEN
2936          xla_ae_lines_pkg.BflowUpgEntry
2937            (p_business_method_code    => l_bflow_method_code
2938            ,p_business_class_code     => l_bflow_class_code
2939            ,p_balance_type            => l_balance_type_code);
2940    ELSE
2941       NULL;
2942 -- No business flow processing for business flow method of NONE.
2943    END IF;
2944 
2945    --
2946    -- call analytical criteria
2947    --
2948    
2949    --
2950    -- call description
2951    --
2952    
2953 xla_ae_lines_pkg.SetLineDescription(
2954    p_ae_header_id => l_ae_header_id
2955   ,p_description  => Description_1 (
2956      p_application_id         => p_application_id
2957    , p_ae_header_id           => l_ae_header_id 
2958 , p_source_1 => p_source_1
2959 , p_source_2 => p_source_2
2960    )
2961 );
2962 
2963 
2964    --
2965    -- call ADRs
2966    -- Bug 4922099
2967    --
2968    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2969         (NVL(l_actual_upg_option, 'N') = 'O') OR
2970         (NVL(l_enc_upg_option, 'N') = 'O')
2971       )
2972    THEN
2973    NULL;
2974    --
2975    --
2976    
2977   l_ccid := AcctDerRule_3(
2978            p_application_id           => p_application_id
2979          , p_ae_header_id             => l_ae_header_id 
2980 , p_source_5 => p_source_5
2981          , x_transaction_coa_id       => l_adr_transaction_coa_id
2982          , x_accounting_coa_id        => l_adr_accounting_coa_id
2983          , x_value_type_code          => l_adr_value_type_code
2984          , p_side                     => 'NA'
2985    );
2986 
2987    xla_ae_lines_pkg.set_ccid(
2988     p_code_combination_id          => l_ccid
2989   , p_value_type_code              => l_adr_value_type_code
2990   , p_transaction_coa_id           => l_adr_transaction_coa_id
2991   , p_accounting_coa_id            => l_adr_accounting_coa_id
2992   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
2993   , p_adr_type_code                => 'S'
2994   , p_component_type               => l_component_type
2995   , p_component_code               => l_component_code
2996   , p_component_type_code          => l_component_type_code
2997   , p_component_appl_id            => l_component_appl_id
2998   , p_amb_context_code             => l_amb_context_code
2999   , p_side                         => 'NA'
3000   );
3001 
3002 
3003    --
3004    --
3005    END IF;
3006    --
3007    -- Bug 4922099
3008    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3009           (NVL(l_enc_upg_option, 'N') = 'O')
3010         ) AND
3011         (l_bflow_method_code = 'PRIOR_ENTRY')
3012       )
3013    THEN
3014       IF
3015       --
3016       1 = 2
3017       --
3018       THEN
3019       xla_accounting_err_pkg.build_message
3020                                     (p_appli_s_name            => 'XLA'
3021                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3022                                     ,p_token_1                 => 'LINE_NUMBER'
3023                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3024                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3025                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3026                                                                              l_component_type
3027                                                                             ,l_component_code
3028                                                                             ,l_component_type_code
3029                                                                             ,l_component_appl_id
3030                                                                             ,l_amb_context_code
3031                                                                             ,l_entity_code
3032                                                                             ,l_event_class_code
3033                                                                            )
3034                                     ,p_token_3                 => 'OWNER'
3035                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3036                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3037                                                                           ,p_lookup_code    => l_component_type_code
3038                                                                          )
3039                                     ,p_token_4                 => 'PRODUCT_NAME'
3040                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3041                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3042                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3043                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3044                                     ,p_ae_header_id            =>  NULL
3045                                        );
3046 
3047         IF (C_LEVEL_ERROR>= g_log_level) THEN
3048                  trace
3049                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3050                       ,p_level    => C_LEVEL_ERROR
3051                       ,p_module   => l_log_module);
3055    --
3052         END IF;
3053       END IF;
3054    END IF;
3056    --
3057    ------------------------------------------------------------------------------------------------
3058    -- 4219869 Business Flow
3059    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3060    -- Prior Entry.  Currently, the following code is always generated.
3061    ------------------------------------------------------------------------------------------------
3062    XLA_AE_LINES_PKG.ValidateCurrentLine;
3063 
3064    ------------------------------------------------------------------------------------
3065    -- 4219869 Business Flow
3066    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3067    ------------------------------------------------------------------------------------
3068    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3069 
3070    ----------------------------------------------------------------------------------
3071    -- 4219869 Business Flow
3072    -- Update journal entry status -- Need to generate this within IF <condition>
3073    ----------------------------------------------------------------------------------
3074    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3075          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3076          ,p_balance_type_code => l_balance_type_code
3077          );
3078 
3079    -------------------------------------------------------------------------------------------
3080    -- 4262811 - Generate the Accrual Reversal lines
3081    -------------------------------------------------------------------------------------------
3082    BEGIN
3083       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3084                               (g_array_event(p_event_id).array_value_num('header_index'));
3085       IF l_acc_rev_flag IS NULL THEN
3086          l_acc_rev_flag := 'N';
3087       END IF;
3088    EXCEPTION
3089       WHEN OTHERS THEN
3090          l_acc_rev_flag := 'N';
3091    END;
3092    --
3093    IF (l_acc_rev_flag = 'Y') THEN
3094 
3095        -- 4645092  ------------------------------------------------------------------------------
3096        -- To allow MPA report to determine if it should generate report process
3097        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3098        ------------------------------------------------------------------------------------------
3099 
3100        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3101        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3102 
3103        --
3104        -- Update the line information that should be overwritten
3105        --
3106        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3107                                          p_header_num   => 1);
3108        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3109 
3110        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3111 
3112        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3113           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3114        END IF;
3115 
3116       --
3117       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3118       --
3119       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3120           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3121       ELSE
3122           ---------------------------------------------------------------------------------------------------
3123           -- 4262811a Switch Sign
3124           ---------------------------------------------------------------------------------------------------
3125           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3126           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3127                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3128           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3129                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3130           -- 5132302
3131           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3132                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3133 
3134       END IF;
3135 
3136       -- 4955764
3137       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3138       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3139 
3140 
3141       XLA_AE_LINES_PKG.ValidateCurrentLine;
3142       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3143 
3144       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3145                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3146                ,p_balance_type_code => l_balance_type_code);
3147 
3148    END IF;
3149 
3150    -----------------------------------------------------------------------------------------
3151    -- 4262811 Multiperiod Accounting
3152    -----------------------------------------------------------------------------------------
3153      -- No MPA option is assigned.
3154 
3155 
3156 END IF;
3157 END IF;
3158 --
3159 
3160 --
3161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3162    trace
3163       (p_msg      => 'END of AcctLineType_8'
3164       ,p_level    => C_LEVEL_PROCEDURE
3165       ,p_module   => l_log_module);
3166 END IF;
3167 --
3168 EXCEPTION
3169   WHEN xla_exceptions_pkg.application_exception THEN
3170       RAISE;
3174 END AcctLineType_8;
3171   WHEN OTHERS THEN
3172        xla_exceptions_pkg.raise_message
3173            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_8');
3175 --
3176 
3177 ---------------------------------------
3178 --
3179 -- PRIVATE FUNCTION
3180 --         AcctLineType_9
3181 --
3182 ---------------------------------------
3183 PROCEDURE AcctLineType_9 (
3184   p_application_id        IN NUMBER
3185  ,p_event_id              IN NUMBER
3186  ,p_calculate_acctd_flag  IN VARCHAR2
3187  ,p_calculate_g_l_flag    IN VARCHAR2
3188  ,p_actual_flag           IN OUT VARCHAR2
3189  ,p_balance_type_code     OUT VARCHAR2
3190  ,p_gain_or_loss_ref      OUT VARCHAR2
3191  
3192 --Contract Number
3193  , p_source_1            IN VARCHAR2
3194 --Contract Product Name
3195  , p_source_2            IN VARCHAR2
3196 --Distribution Account
3197  , p_source_5            IN NUMBER
3198 --Accounting Line Type
3199  , p_source_6            IN VARCHAR2
3200  , p_source_6_meaning    IN VARCHAR2
3201 --Accounting Distribution Identifier
3202  , p_source_7            IN NUMBER
3203 --Distribution Type
3204  , p_source_8            IN VARCHAR2
3205 --Distribution Entered Amount
3206  , p_source_9            IN NUMBER
3207 --Transaction Currency Code
3208  , p_source_10            IN VARCHAR2
3209 --Transaction Currency Conversion Date
3210  , p_source_11            IN DATE
3211 --Transaction Currency Conversion Rate
3212  , p_source_12            IN NUMBER
3213 --Transaction Currency Conversion Type
3214  , p_source_13            IN VARCHAR2
3215 )
3216 IS
3217 
3218 l_component_type              VARCHAR2(80);
3219 l_component_code              VARCHAR2(30);
3220 l_component_type_code         VARCHAR2(1);
3221 l_component_appl_id           INTEGER;
3222 l_amb_context_code            VARCHAR2(30);
3223 l_entity_code                 VARCHAR2(30);
3224 l_event_class_code            VARCHAR2(30);
3225 l_ae_header_id                NUMBER;
3226 l_event_type_code             VARCHAR2(30);
3227 l_line_definition_code        VARCHAR2(30);
3228 l_line_definition_owner_code  VARCHAR2(1);
3229 --
3230 -- adr variables
3231 l_segment                     VARCHAR2(30);
3232 l_ccid                        NUMBER;
3233 l_adr_transaction_coa_id      NUMBER;
3234 l_adr_accounting_coa_id       NUMBER;
3235 l_adr_flexfield_segment_code  VARCHAR2(30);
3236 l_adr_flex_value_set_id       NUMBER;
3237 l_adr_value_type_code         VARCHAR2(30);
3238 l_adr_value_combination_id    NUMBER;
3239 l_adr_value_segment_code      VARCHAR2(30);
3240 
3241 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3242 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3243 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3244 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3245 
3246 -- 4262811 Variables ------------------------------------------------------------------------------------------
3247 l_entered_amt_idx             NUMBER;
3248 l_accted_amt_idx              NUMBER;
3249 l_acc_rev_flag                VARCHAR2(1);
3250 l_accrual_line_num            NUMBER;
3251 l_tmp_amt                     NUMBER;
3252 l_acc_rev_natural_side_code   VARCHAR2(1);
3253 
3254 l_num_entries                 NUMBER;
3255 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3256 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3257 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3258 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3259 l_recog_line_1                NUMBER;
3260 l_recog_line_2                NUMBER;
3261 
3262 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3263 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3264 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3265 
3266 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3267 
3268 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3269 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3270 
3271 ---------------------------------------------------------------------------------------------------------------
3272 
3273 
3274 --
3275 -- bulk performance
3276 --
3277 l_balance_type_code           VARCHAR2(1);
3278 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3279 l_log_module                  VARCHAR2(240);
3280 
3281 --
3282 -- Upgrade strategy
3283 --
3284 l_actual_upg_option           VARCHAR2(1);
3285 l_enc_upg_option           VARCHAR2(1);
3286 
3287 --
3288 BEGIN
3289 --
3290 IF g_log_enabled THEN
3291       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3292 END IF;
3293 --
3294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3295 
3296       trace
3297          (p_msg      => 'BEGIN of AcctLineType_9'
3298          ,p_level    => C_LEVEL_PROCEDURE
3299          ,p_module   => l_log_module);
3300 
3301 END IF;
3302 --
3303 l_component_type             := 'AMB_JLT';
3304 l_component_code             := 'OKL_BOOKING_DR';
3305 l_component_type_code        := 'S';
3306 l_component_appl_id          :=  540;
3307 l_amb_context_code           := 'DEFAULT';
3308 l_entity_code                := 'CONTRACTS';
3309 l_event_class_code           := 'BOOKING';
3310 l_event_type_code            := 'BOOKING_ALL';
3311 l_line_definition_owner_code := 'S';
3312 l_line_definition_code       := 'OKL_BOOKING';
3313 --
3314 l_balance_type_code          := 'A';
3315 l_segment                     := NULL;
3316 l_ccid                        := NULL;
3317 l_adr_transaction_coa_id      := NULL;
3321 l_adr_value_type_code         := NULL;
3318 l_adr_accounting_coa_id       := NULL;
3319 l_adr_flexfield_segment_code  := NULL;
3320 l_adr_flex_value_set_id       := NULL;
3322 l_adr_value_combination_id    := NULL;
3323 l_adr_value_segment_code      := NULL;
3324 
3325 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3326 l_bflow_class_code           := '';    -- 4219869 Business Flow
3327 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3328 l_budgetary_control_flag     := 'N';
3329 
3330 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3331 l_bflow_applied_to_amt       := NULL; -- 5132302
3332 l_entered_amt_idx            := NULL;          -- 4262811
3333 l_accted_amt_idx             := NULL;          -- 4262811
3334 l_acc_rev_flag               := NULL;          -- 4262811
3335 l_accrual_line_num           := NULL;          -- 4262811
3336 l_tmp_amt                    := NULL;          -- 4262811
3337 --
3338  
3339 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3340     l_balance_type_code <> 'B' THEN
3341 IF NVL(p_source_6,'
3342 ') =  'LEASE_DEBIT'
3343  THEN 
3344 
3345    --
3346    XLA_AE_LINES_PKG.SetNewLine;
3347 
3348    p_balance_type_code          := l_balance_type_code;
3349    -- set the flag so later we will know whether the gain loss line needs to be created
3350    
3351    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3352      p_actual_flag :='A';
3353    END IF;
3354 
3355    --
3356    -- bulk performance
3357    --
3358    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3359                                       p_header_num   => 0); -- 4262811
3360    --
3361    -- set accounting line options
3362    --
3363    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3364            p_natural_side_code          => 'D'
3365          , p_gain_or_loss_flag          => 'N'
3366          , p_gl_transfer_mode_code      => 'S'
3367          , p_acct_entry_type_code       => 'A'
3368          , p_switch_side_flag           => 'Y'
3369          , p_merge_duplicate_code       => 'N'
3370          );
3371    --
3372    l_acc_rev_natural_side_code := 'C';  -- 4262811
3373    -- 
3374    --
3375    -- set accounting line type info
3376    --
3377    xla_ae_lines_pkg.SetAcctLineType
3378       (p_component_type             => l_component_type
3379       ,p_event_type_code            => l_event_type_code
3380       ,p_line_definition_owner_code => l_line_definition_owner_code
3381       ,p_line_definition_code       => l_line_definition_code
3382       ,p_accounting_line_code       => l_component_code
3383       ,p_accounting_line_type_code  => l_component_type_code
3384       ,p_accounting_line_appl_id    => l_component_appl_id
3385       ,p_amb_context_code           => l_amb_context_code
3386       ,p_entity_code                => l_entity_code
3387       ,p_event_class_code           => l_event_class_code);
3388    --
3389    -- set accounting class
3390    --
3391    xla_ae_lines_pkg.SetAcctClass(
3392            p_accounting_class_code  => 'BOOKING'
3393          , p_ae_header_id           => l_ae_header_id
3394          );
3395 
3396    --
3397    -- set rounding class
3398    --
3399    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3400                       'BOOKING';
3401 
3402    --
3403    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3404    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3405    --
3406    -- bulk performance
3407    --
3408    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3409 
3410    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3411       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3412 
3413    -- 4955764
3414    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3416 
3417    -- 4458381 Public Sector Enh
3418    
3419    --
3420    -- set accounting attributes for the line type
3421    --
3422    l_entered_amt_idx := 3;
3423    l_accted_amt_idx  := NULL;
3424    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3425    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3426    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
3427    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3428    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
3429    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3430    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
3431    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3432    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
3433    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3434    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
3435    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3436    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
3437    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3438    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
3439 
3440    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3441    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3442 
3443    ---------------------------------------------------------------------------------------------------------------
3444    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3445    ---------------------------------------------------------------------------------------------------------------
3449    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3446    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3447 
3448    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3450 
3451    IF xla_accounting_cache_pkg.GetValueChar
3452          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3453          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3454    AND l_bflow_method_code = 'PRIOR_ENTRY'
3455 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3456    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3457          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3458        )
3459    THEN
3460          xla_ae_lines_pkg.BflowUpgEntry
3461            (p_business_method_code    => l_bflow_method_code
3462            ,p_business_class_code     => l_bflow_class_code
3463            ,p_balance_type            => l_balance_type_code);
3464    ELSE
3465       NULL;
3466 -- No business flow processing for business flow method of NONE.
3467    END IF;
3468 
3469    --
3470    -- call analytical criteria
3471    --
3472    
3473    --
3474    -- call description
3475    --
3476    
3477 xla_ae_lines_pkg.SetLineDescription(
3478    p_ae_header_id => l_ae_header_id
3479   ,p_description  => Description_1 (
3480      p_application_id         => p_application_id
3481    , p_ae_header_id           => l_ae_header_id 
3482 , p_source_1 => p_source_1
3483 , p_source_2 => p_source_2
3484    )
3485 );
3486 
3487 
3488    --
3489    -- call ADRs
3490    -- Bug 4922099
3491    --
3492    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3493         (NVL(l_actual_upg_option, 'N') = 'O') OR
3494         (NVL(l_enc_upg_option, 'N') = 'O')
3495       )
3496    THEN
3497    NULL;
3498    --
3499    --
3500    
3501   l_ccid := AcctDerRule_3(
3502            p_application_id           => p_application_id
3503          , p_ae_header_id             => l_ae_header_id 
3504 , p_source_5 => p_source_5
3505          , x_transaction_coa_id       => l_adr_transaction_coa_id
3506          , x_accounting_coa_id        => l_adr_accounting_coa_id
3507          , x_value_type_code          => l_adr_value_type_code
3508          , p_side                     => 'NA'
3509    );
3510 
3511    xla_ae_lines_pkg.set_ccid(
3512     p_code_combination_id          => l_ccid
3513   , p_value_type_code              => l_adr_value_type_code
3514   , p_transaction_coa_id           => l_adr_transaction_coa_id
3515   , p_accounting_coa_id            => l_adr_accounting_coa_id
3516   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
3517   , p_adr_type_code                => 'S'
3518   , p_component_type               => l_component_type
3519   , p_component_code               => l_component_code
3520   , p_component_type_code          => l_component_type_code
3521   , p_component_appl_id            => l_component_appl_id
3522   , p_amb_context_code             => l_amb_context_code
3523   , p_side                         => 'NA'
3524   );
3525 
3526 
3527    --
3528    --
3529    END IF;
3530    --
3531    -- Bug 4922099
3532    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3533           (NVL(l_enc_upg_option, 'N') = 'O')
3534         ) AND
3535         (l_bflow_method_code = 'PRIOR_ENTRY')
3536       )
3537    THEN
3538       IF
3539       --
3540       1 = 2
3541       --
3542       THEN
3543       xla_accounting_err_pkg.build_message
3544                                     (p_appli_s_name            => 'XLA'
3545                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3546                                     ,p_token_1                 => 'LINE_NUMBER'
3547                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3548                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3549                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3550                                                                              l_component_type
3551                                                                             ,l_component_code
3552                                                                             ,l_component_type_code
3553                                                                             ,l_component_appl_id
3554                                                                             ,l_amb_context_code
3555                                                                             ,l_entity_code
3556                                                                             ,l_event_class_code
3557                                                                            )
3558                                     ,p_token_3                 => 'OWNER'
3559                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3560                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3561                                                                           ,p_lookup_code    => l_component_type_code
3562                                                                          )
3563                                     ,p_token_4                 => 'PRODUCT_NAME'
3564                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3565                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3566                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3567                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3571         IF (C_LEVEL_ERROR>= g_log_level) THEN
3568                                     ,p_ae_header_id            =>  NULL
3569                                        );
3570 
3572                  trace
3573                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3574                       ,p_level    => C_LEVEL_ERROR
3575                       ,p_module   => l_log_module);
3576         END IF;
3577       END IF;
3578    END IF;
3579    --
3580    --
3581    ------------------------------------------------------------------------------------------------
3582    -- 4219869 Business Flow
3583    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3584    -- Prior Entry.  Currently, the following code is always generated.
3585    ------------------------------------------------------------------------------------------------
3586    XLA_AE_LINES_PKG.ValidateCurrentLine;
3587 
3588    ------------------------------------------------------------------------------------
3589    -- 4219869 Business Flow
3590    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3591    ------------------------------------------------------------------------------------
3592    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3593 
3594    ----------------------------------------------------------------------------------
3595    -- 4219869 Business Flow
3596    -- Update journal entry status -- Need to generate this within IF <condition>
3597    ----------------------------------------------------------------------------------
3598    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3599          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3600          ,p_balance_type_code => l_balance_type_code
3601          );
3602 
3603    -------------------------------------------------------------------------------------------
3604    -- 4262811 - Generate the Accrual Reversal lines
3605    -------------------------------------------------------------------------------------------
3606    BEGIN
3607       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3608                               (g_array_event(p_event_id).array_value_num('header_index'));
3609       IF l_acc_rev_flag IS NULL THEN
3610          l_acc_rev_flag := 'N';
3611       END IF;
3612    EXCEPTION
3613       WHEN OTHERS THEN
3614          l_acc_rev_flag := 'N';
3615    END;
3616    --
3617    IF (l_acc_rev_flag = 'Y') THEN
3618 
3619        -- 4645092  ------------------------------------------------------------------------------
3620        -- To allow MPA report to determine if it should generate report process
3621        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3622        ------------------------------------------------------------------------------------------
3623 
3624        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3625        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3626 
3627        --
3628        -- Update the line information that should be overwritten
3629        --
3630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3631                                          p_header_num   => 1);
3632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3633 
3634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3635 
3636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3638        END IF;
3639 
3640       --
3641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3642       --
3643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3645       ELSE
3646           ---------------------------------------------------------------------------------------------------
3647           -- 4262811a Switch Sign
3648           ---------------------------------------------------------------------------------------------------
3649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3654           -- 5132302
3655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3657 
3658       END IF;
3659 
3660       -- 4955764
3661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3663 
3664 
3665       XLA_AE_LINES_PKG.ValidateCurrentLine;
3666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3667 
3668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3670                ,p_balance_type_code => l_balance_type_code);
3671 
3672    END IF;
3673 
3674    -----------------------------------------------------------------------------------------
3675    -- 4262811 Multiperiod Accounting
3676    -----------------------------------------------------------------------------------------
3677      -- No MPA option is assigned.
3678 
3679 
3680 END IF;
3681 END IF;
3685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3682 --
3683 
3684 --
3686    trace
3687       (p_msg      => 'END of AcctLineType_9'
3688       ,p_level    => C_LEVEL_PROCEDURE
3689       ,p_module   => l_log_module);
3690 END IF;
3691 --
3692 EXCEPTION
3693   WHEN xla_exceptions_pkg.application_exception THEN
3694       RAISE;
3695   WHEN OTHERS THEN
3696        xla_exceptions_pkg.raise_message
3697            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_9');
3698 END AcctLineType_9;
3699 --
3700 
3701 ---------------------------------------
3702 --
3703 -- PRIVATE FUNCTION
3704 --         AcctLineType_10
3705 --
3706 ---------------------------------------
3707 PROCEDURE AcctLineType_10 (
3708   p_application_id        IN NUMBER
3709  ,p_event_id              IN NUMBER
3710  ,p_calculate_acctd_flag  IN VARCHAR2
3711  ,p_calculate_g_l_flag    IN VARCHAR2
3712  ,p_actual_flag           IN OUT VARCHAR2
3713  ,p_balance_type_code     OUT VARCHAR2
3714  ,p_gain_or_loss_ref      OUT VARCHAR2
3715  
3716 --Contract Number
3717  , p_source_1            IN VARCHAR2
3718 --Contract Product Name
3719  , p_source_2            IN VARCHAR2
3720 --Distribution Account
3721  , p_source_5            IN NUMBER
3722 --Accounting Line Type
3723  , p_source_6            IN VARCHAR2
3724  , p_source_6_meaning    IN VARCHAR2
3725 --Accounting Distribution Identifier
3726  , p_source_7            IN NUMBER
3727 --Distribution Type
3728  , p_source_8            IN VARCHAR2
3729 --Distribution Entered Amount
3730  , p_source_9            IN NUMBER
3731 --Transaction Currency Code
3732  , p_source_10            IN VARCHAR2
3733 --Transaction Currency Conversion Date
3734  , p_source_11            IN DATE
3735 --Transaction Currency Conversion Rate
3736  , p_source_12            IN NUMBER
3737 --Transaction Currency Conversion Type
3738  , p_source_13            IN VARCHAR2
3739 )
3740 IS
3741 
3742 l_component_type              VARCHAR2(80);
3743 l_component_code              VARCHAR2(30);
3744 l_component_type_code         VARCHAR2(1);
3745 l_component_appl_id           INTEGER;
3746 l_amb_context_code            VARCHAR2(30);
3747 l_entity_code                 VARCHAR2(30);
3748 l_event_class_code            VARCHAR2(30);
3749 l_ae_header_id                NUMBER;
3750 l_event_type_code             VARCHAR2(30);
3751 l_line_definition_code        VARCHAR2(30);
3752 l_line_definition_owner_code  VARCHAR2(1);
3753 --
3754 -- adr variables
3755 l_segment                     VARCHAR2(30);
3756 l_ccid                        NUMBER;
3757 l_adr_transaction_coa_id      NUMBER;
3758 l_adr_accounting_coa_id       NUMBER;
3759 l_adr_flexfield_segment_code  VARCHAR2(30);
3760 l_adr_flex_value_set_id       NUMBER;
3761 l_adr_value_type_code         VARCHAR2(30);
3762 l_adr_value_combination_id    NUMBER;
3763 l_adr_value_segment_code      VARCHAR2(30);
3764 
3765 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3766 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3767 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3768 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3769 
3770 -- 4262811 Variables ------------------------------------------------------------------------------------------
3771 l_entered_amt_idx             NUMBER;
3772 l_accted_amt_idx              NUMBER;
3773 l_acc_rev_flag                VARCHAR2(1);
3774 l_accrual_line_num            NUMBER;
3775 l_tmp_amt                     NUMBER;
3776 l_acc_rev_natural_side_code   VARCHAR2(1);
3777 
3778 l_num_entries                 NUMBER;
3779 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3780 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3781 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3782 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3783 l_recog_line_1                NUMBER;
3784 l_recog_line_2                NUMBER;
3785 
3786 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3787 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3788 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3789 
3790 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3791 
3792 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3793 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3794 
3795 ---------------------------------------------------------------------------------------------------------------
3796 
3797 
3798 --
3799 -- bulk performance
3800 --
3801 l_balance_type_code           VARCHAR2(1);
3802 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3803 l_log_module                  VARCHAR2(240);
3804 
3805 --
3806 -- Upgrade strategy
3807 --
3808 l_actual_upg_option           VARCHAR2(1);
3809 l_enc_upg_option           VARCHAR2(1);
3810 
3811 --
3812 BEGIN
3813 --
3814 IF g_log_enabled THEN
3815       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3816 END IF;
3817 --
3818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3819 
3820       trace
3821          (p_msg      => 'BEGIN of AcctLineType_10'
3822          ,p_level    => C_LEVEL_PROCEDURE
3823          ,p_module   => l_log_module);
3824 
3825 END IF;
3826 --
3827 l_component_type             := 'AMB_JLT';
3828 l_component_code             := 'OKL_EVERGREEN_CR';
3829 l_component_type_code        := 'S';
3830 l_component_appl_id          :=  540;
3831 l_amb_context_code           := 'DEFAULT';
3832 l_entity_code                := 'CONTRACTS';
3836 l_line_definition_code       := 'OKL_EVERGREEN';
3833 l_event_class_code           := 'EVERGREEN';
3834 l_event_type_code            := 'EVERGREEN_ALL';
3835 l_line_definition_owner_code := 'S';
3837 --
3838 l_balance_type_code          := 'A';
3839 l_segment                     := NULL;
3840 l_ccid                        := NULL;
3841 l_adr_transaction_coa_id      := NULL;
3842 l_adr_accounting_coa_id       := NULL;
3843 l_adr_flexfield_segment_code  := NULL;
3844 l_adr_flex_value_set_id       := NULL;
3845 l_adr_value_type_code         := NULL;
3846 l_adr_value_combination_id    := NULL;
3847 l_adr_value_segment_code      := NULL;
3848 
3849 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3850 l_bflow_class_code           := '';    -- 4219869 Business Flow
3851 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3852 l_budgetary_control_flag     := 'N';
3853 
3854 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3855 l_bflow_applied_to_amt       := NULL; -- 5132302
3856 l_entered_amt_idx            := NULL;          -- 4262811
3857 l_accted_amt_idx             := NULL;          -- 4262811
3858 l_acc_rev_flag               := NULL;          -- 4262811
3859 l_accrual_line_num           := NULL;          -- 4262811
3860 l_tmp_amt                    := NULL;          -- 4262811
3861 --
3862  
3863 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3864     l_balance_type_code <> 'B' THEN
3865 IF NVL(p_source_6,'
3866 ') =  'LEASE_CREDIT'
3867  THEN 
3868 
3869    --
3870    XLA_AE_LINES_PKG.SetNewLine;
3871 
3872    p_balance_type_code          := l_balance_type_code;
3873    -- set the flag so later we will know whether the gain loss line needs to be created
3874    
3875    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3876      p_actual_flag :='A';
3877    END IF;
3878 
3879    --
3880    -- bulk performance
3881    --
3882    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3883                                       p_header_num   => 0); -- 4262811
3884    --
3885    -- set accounting line options
3886    --
3887    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3888            p_natural_side_code          => 'C'
3889          , p_gain_or_loss_flag          => 'N'
3890          , p_gl_transfer_mode_code      => 'S'
3891          , p_acct_entry_type_code       => 'A'
3892          , p_switch_side_flag           => 'Y'
3893          , p_merge_duplicate_code       => 'N'
3894          );
3895    --
3896    l_acc_rev_natural_side_code := 'D';  -- 4262811
3897    -- 
3898    --
3899    -- set accounting line type info
3900    --
3901    xla_ae_lines_pkg.SetAcctLineType
3902       (p_component_type             => l_component_type
3903       ,p_event_type_code            => l_event_type_code
3904       ,p_line_definition_owner_code => l_line_definition_owner_code
3905       ,p_line_definition_code       => l_line_definition_code
3906       ,p_accounting_line_code       => l_component_code
3907       ,p_accounting_line_type_code  => l_component_type_code
3908       ,p_accounting_line_appl_id    => l_component_appl_id
3909       ,p_amb_context_code           => l_amb_context_code
3910       ,p_entity_code                => l_entity_code
3911       ,p_event_class_code           => l_event_class_code);
3912    --
3913    -- set accounting class
3914    --
3915    xla_ae_lines_pkg.SetAcctClass(
3916            p_accounting_class_code  => 'EVERGREEN'
3917          , p_ae_header_id           => l_ae_header_id
3918          );
3919 
3920    --
3921    -- set rounding class
3922    --
3923    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3924                       'EVERGREEN';
3925 
3926    --
3927    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3928    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3929    --
3930    -- bulk performance
3931    --
3932    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3933 
3934    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3935       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3936 
3937    -- 4955764
3938    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3939       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3940 
3941    -- 4458381 Public Sector Enh
3942    
3943    --
3944    -- set accounting attributes for the line type
3945    --
3946    l_entered_amt_idx := 3;
3947    l_accted_amt_idx  := NULL;
3948    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3949    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3950    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
3951    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3952    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
3953    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3954    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
3955    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3956    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
3957    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3958    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
3959    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3960    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
3961    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3962    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
3963 
3964    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3968    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3965    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3966 
3967    ---------------------------------------------------------------------------------------------------------------
3969    ---------------------------------------------------------------------------------------------------------------
3970    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3971 
3972    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3973    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3974 
3975    IF xla_accounting_cache_pkg.GetValueChar
3976          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3977          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3978    AND l_bflow_method_code = 'PRIOR_ENTRY'
3979 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3980    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3981          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3982        )
3983    THEN
3984          xla_ae_lines_pkg.BflowUpgEntry
3985            (p_business_method_code    => l_bflow_method_code
3986            ,p_business_class_code     => l_bflow_class_code
3987            ,p_balance_type            => l_balance_type_code);
3988    ELSE
3989       NULL;
3990 -- No business flow processing for business flow method of NONE.
3991    END IF;
3992 
3993    --
3994    -- call analytical criteria
3995    --
3996    
3997    --
3998    -- call description
3999    --
4000    
4001 xla_ae_lines_pkg.SetLineDescription(
4002    p_ae_header_id => l_ae_header_id
4003   ,p_description  => Description_1 (
4004      p_application_id         => p_application_id
4005    , p_ae_header_id           => l_ae_header_id 
4006 , p_source_1 => p_source_1
4007 , p_source_2 => p_source_2
4008    )
4009 );
4010 
4011 
4012    --
4013    -- call ADRs
4014    -- Bug 4922099
4015    --
4016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4017         (NVL(l_actual_upg_option, 'N') = 'O') OR
4018         (NVL(l_enc_upg_option, 'N') = 'O')
4019       )
4020    THEN
4021    NULL;
4022    --
4023    --
4024    
4025   l_ccid := AcctDerRule_3(
4026            p_application_id           => p_application_id
4027          , p_ae_header_id             => l_ae_header_id 
4028 , p_source_5 => p_source_5
4029          , x_transaction_coa_id       => l_adr_transaction_coa_id
4030          , x_accounting_coa_id        => l_adr_accounting_coa_id
4031          , x_value_type_code          => l_adr_value_type_code
4032          , p_side                     => 'NA'
4033    );
4034 
4035    xla_ae_lines_pkg.set_ccid(
4036     p_code_combination_id          => l_ccid
4037   , p_value_type_code              => l_adr_value_type_code
4038   , p_transaction_coa_id           => l_adr_transaction_coa_id
4039   , p_accounting_coa_id            => l_adr_accounting_coa_id
4040   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
4041   , p_adr_type_code                => 'S'
4042   , p_component_type               => l_component_type
4043   , p_component_code               => l_component_code
4044   , p_component_type_code          => l_component_type_code
4045   , p_component_appl_id            => l_component_appl_id
4046   , p_amb_context_code             => l_amb_context_code
4047   , p_side                         => 'NA'
4048   );
4049 
4050 
4051    --
4052    --
4053    END IF;
4054    --
4055    -- Bug 4922099
4056    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4057           (NVL(l_enc_upg_option, 'N') = 'O')
4058         ) AND
4059         (l_bflow_method_code = 'PRIOR_ENTRY')
4060       )
4061    THEN
4062       IF
4063       --
4064       1 = 2
4065       --
4066       THEN
4067       xla_accounting_err_pkg.build_message
4068                                     (p_appli_s_name            => 'XLA'
4069                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4070                                     ,p_token_1                 => 'LINE_NUMBER'
4071                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4072                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4073                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4074                                                                              l_component_type
4075                                                                             ,l_component_code
4076                                                                             ,l_component_type_code
4077                                                                             ,l_component_appl_id
4078                                                                             ,l_amb_context_code
4079                                                                             ,l_entity_code
4080                                                                             ,l_event_class_code
4081                                                                            )
4082                                     ,p_token_3                 => 'OWNER'
4083                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4084                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4085                                                                           ,p_lookup_code    => l_component_type_code
4086                                                                          )
4087                                     ,p_token_4                 => 'PRODUCT_NAME'
4091                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4088                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4089                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4090                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4092                                     ,p_ae_header_id            =>  NULL
4093                                        );
4094 
4095         IF (C_LEVEL_ERROR>= g_log_level) THEN
4096                  trace
4097                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4098                       ,p_level    => C_LEVEL_ERROR
4099                       ,p_module   => l_log_module);
4100         END IF;
4101       END IF;
4102    END IF;
4103    --
4104    --
4105    ------------------------------------------------------------------------------------------------
4106    -- 4219869 Business Flow
4107    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4108    -- Prior Entry.  Currently, the following code is always generated.
4109    ------------------------------------------------------------------------------------------------
4110    XLA_AE_LINES_PKG.ValidateCurrentLine;
4111 
4112    ------------------------------------------------------------------------------------
4113    -- 4219869 Business Flow
4114    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4115    ------------------------------------------------------------------------------------
4116    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4117 
4118    ----------------------------------------------------------------------------------
4119    -- 4219869 Business Flow
4120    -- Update journal entry status -- Need to generate this within IF <condition>
4121    ----------------------------------------------------------------------------------
4122    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4123          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4124          ,p_balance_type_code => l_balance_type_code
4125          );
4126 
4127    -------------------------------------------------------------------------------------------
4128    -- 4262811 - Generate the Accrual Reversal lines
4129    -------------------------------------------------------------------------------------------
4130    BEGIN
4131       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4132                               (g_array_event(p_event_id).array_value_num('header_index'));
4133       IF l_acc_rev_flag IS NULL THEN
4134          l_acc_rev_flag := 'N';
4135       END IF;
4136    EXCEPTION
4137       WHEN OTHERS THEN
4138          l_acc_rev_flag := 'N';
4139    END;
4140    --
4141    IF (l_acc_rev_flag = 'Y') THEN
4142 
4143        -- 4645092  ------------------------------------------------------------------------------
4144        -- To allow MPA report to determine if it should generate report process
4145        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4146        ------------------------------------------------------------------------------------------
4147 
4148        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4149        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4150 
4151        --
4152        -- Update the line information that should be overwritten
4153        --
4154        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4155                                          p_header_num   => 1);
4156        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4157 
4158        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4159 
4160        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4161           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4162        END IF;
4163 
4164       --
4165       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4166       --
4167       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4168           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4169       ELSE
4170           ---------------------------------------------------------------------------------------------------
4171           -- 4262811a Switch Sign
4172           ---------------------------------------------------------------------------------------------------
4173           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4174           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4175                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4176           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4177                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4178           -- 5132302
4179           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4180                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4181 
4182       END IF;
4183 
4184       -- 4955764
4185       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4186       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4187 
4188 
4189       XLA_AE_LINES_PKG.ValidateCurrentLine;
4190       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4191 
4192       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4196    END IF;
4193                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4194                ,p_balance_type_code => l_balance_type_code);
4195 
4197 
4198    -----------------------------------------------------------------------------------------
4199    -- 4262811 Multiperiod Accounting
4200    -----------------------------------------------------------------------------------------
4201      -- No MPA option is assigned.
4202 
4203 
4204 END IF;
4205 END IF;
4206 --
4207 
4208 --
4209 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4210    trace
4211       (p_msg      => 'END of AcctLineType_10'
4212       ,p_level    => C_LEVEL_PROCEDURE
4213       ,p_module   => l_log_module);
4214 END IF;
4215 --
4216 EXCEPTION
4217   WHEN xla_exceptions_pkg.application_exception THEN
4218       RAISE;
4219   WHEN OTHERS THEN
4220        xla_exceptions_pkg.raise_message
4221            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_10');
4222 END AcctLineType_10;
4223 --
4224 
4225 ---------------------------------------
4226 --
4227 -- PRIVATE FUNCTION
4228 --         AcctLineType_11
4229 --
4230 ---------------------------------------
4231 PROCEDURE AcctLineType_11 (
4232   p_application_id        IN NUMBER
4233  ,p_event_id              IN NUMBER
4234  ,p_calculate_acctd_flag  IN VARCHAR2
4235  ,p_calculate_g_l_flag    IN VARCHAR2
4236  ,p_actual_flag           IN OUT VARCHAR2
4237  ,p_balance_type_code     OUT VARCHAR2
4238  ,p_gain_or_loss_ref      OUT VARCHAR2
4239  
4240 --Contract Number
4241  , p_source_1            IN VARCHAR2
4242 --Contract Product Name
4243  , p_source_2            IN VARCHAR2
4244 --Distribution Account
4245  , p_source_5            IN NUMBER
4246 --Accounting Line Type
4247  , p_source_6            IN VARCHAR2
4248  , p_source_6_meaning    IN VARCHAR2
4249 --Accounting Distribution Identifier
4250  , p_source_7            IN NUMBER
4251 --Distribution Type
4252  , p_source_8            IN VARCHAR2
4253 --Distribution Entered Amount
4254  , p_source_9            IN NUMBER
4255 --Transaction Currency Code
4256  , p_source_10            IN VARCHAR2
4257 --Transaction Currency Conversion Date
4258  , p_source_11            IN DATE
4259 --Transaction Currency Conversion Rate
4260  , p_source_12            IN NUMBER
4261 --Transaction Currency Conversion Type
4262  , p_source_13            IN VARCHAR2
4263 )
4264 IS
4265 
4266 l_component_type              VARCHAR2(80);
4267 l_component_code              VARCHAR2(30);
4268 l_component_type_code         VARCHAR2(1);
4269 l_component_appl_id           INTEGER;
4270 l_amb_context_code            VARCHAR2(30);
4271 l_entity_code                 VARCHAR2(30);
4272 l_event_class_code            VARCHAR2(30);
4273 l_ae_header_id                NUMBER;
4274 l_event_type_code             VARCHAR2(30);
4275 l_line_definition_code        VARCHAR2(30);
4276 l_line_definition_owner_code  VARCHAR2(1);
4277 --
4278 -- adr variables
4279 l_segment                     VARCHAR2(30);
4280 l_ccid                        NUMBER;
4281 l_adr_transaction_coa_id      NUMBER;
4282 l_adr_accounting_coa_id       NUMBER;
4283 l_adr_flexfield_segment_code  VARCHAR2(30);
4284 l_adr_flex_value_set_id       NUMBER;
4285 l_adr_value_type_code         VARCHAR2(30);
4286 l_adr_value_combination_id    NUMBER;
4287 l_adr_value_segment_code      VARCHAR2(30);
4288 
4289 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4290 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4291 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4292 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4293 
4294 -- 4262811 Variables ------------------------------------------------------------------------------------------
4295 l_entered_amt_idx             NUMBER;
4296 l_accted_amt_idx              NUMBER;
4297 l_acc_rev_flag                VARCHAR2(1);
4298 l_accrual_line_num            NUMBER;
4299 l_tmp_amt                     NUMBER;
4300 l_acc_rev_natural_side_code   VARCHAR2(1);
4301 
4302 l_num_entries                 NUMBER;
4303 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4304 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4305 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4306 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4307 l_recog_line_1                NUMBER;
4308 l_recog_line_2                NUMBER;
4309 
4310 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4311 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4312 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4313 
4314 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4315 
4316 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4317 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4318 
4319 ---------------------------------------------------------------------------------------------------------------
4320 
4321 
4322 --
4323 -- bulk performance
4324 --
4325 l_balance_type_code           VARCHAR2(1);
4326 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4327 l_log_module                  VARCHAR2(240);
4328 
4329 --
4330 -- Upgrade strategy
4331 --
4332 l_actual_upg_option           VARCHAR2(1);
4333 l_enc_upg_option           VARCHAR2(1);
4334 
4335 --
4336 BEGIN
4337 --
4338 IF g_log_enabled THEN
4339       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4340 END IF;
4341 --
4342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4343 
4347          ,p_module   => l_log_module);
4344       trace
4345          (p_msg      => 'BEGIN of AcctLineType_11'
4346          ,p_level    => C_LEVEL_PROCEDURE
4348 
4349 END IF;
4350 --
4351 l_component_type             := 'AMB_JLT';
4352 l_component_code             := 'OKL_EVERGREEN_DR';
4353 l_component_type_code        := 'S';
4354 l_component_appl_id          :=  540;
4355 l_amb_context_code           := 'DEFAULT';
4356 l_entity_code                := 'CONTRACTS';
4357 l_event_class_code           := 'EVERGREEN';
4358 l_event_type_code            := 'EVERGREEN_ALL';
4359 l_line_definition_owner_code := 'S';
4360 l_line_definition_code       := 'OKL_EVERGREEN';
4361 --
4362 l_balance_type_code          := 'A';
4363 l_segment                     := NULL;
4364 l_ccid                        := NULL;
4365 l_adr_transaction_coa_id      := NULL;
4366 l_adr_accounting_coa_id       := NULL;
4367 l_adr_flexfield_segment_code  := NULL;
4368 l_adr_flex_value_set_id       := NULL;
4369 l_adr_value_type_code         := NULL;
4370 l_adr_value_combination_id    := NULL;
4371 l_adr_value_segment_code      := NULL;
4372 
4373 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4374 l_bflow_class_code           := '';    -- 4219869 Business Flow
4375 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4376 l_budgetary_control_flag     := 'N';
4377 
4378 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4379 l_bflow_applied_to_amt       := NULL; -- 5132302
4380 l_entered_amt_idx            := NULL;          -- 4262811
4381 l_accted_amt_idx             := NULL;          -- 4262811
4382 l_acc_rev_flag               := NULL;          -- 4262811
4383 l_accrual_line_num           := NULL;          -- 4262811
4384 l_tmp_amt                    := NULL;          -- 4262811
4385 --
4386  
4387 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4388     l_balance_type_code <> 'B' THEN
4389 IF NVL(p_source_6,'
4390 ') =  'LEASE_DEBIT'
4391  THEN 
4392 
4393    --
4394    XLA_AE_LINES_PKG.SetNewLine;
4395 
4396    p_balance_type_code          := l_balance_type_code;
4397    -- set the flag so later we will know whether the gain loss line needs to be created
4398    
4399    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4400      p_actual_flag :='A';
4401    END IF;
4402 
4403    --
4404    -- bulk performance
4405    --
4406    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4407                                       p_header_num   => 0); -- 4262811
4408    --
4409    -- set accounting line options
4410    --
4411    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4412            p_natural_side_code          => 'D'
4413          , p_gain_or_loss_flag          => 'N'
4414          , p_gl_transfer_mode_code      => 'S'
4415          , p_acct_entry_type_code       => 'A'
4416          , p_switch_side_flag           => 'Y'
4417          , p_merge_duplicate_code       => 'N'
4418          );
4419    --
4420    l_acc_rev_natural_side_code := 'C';  -- 4262811
4421    -- 
4422    --
4423    -- set accounting line type info
4424    --
4425    xla_ae_lines_pkg.SetAcctLineType
4426       (p_component_type             => l_component_type
4427       ,p_event_type_code            => l_event_type_code
4428       ,p_line_definition_owner_code => l_line_definition_owner_code
4429       ,p_line_definition_code       => l_line_definition_code
4430       ,p_accounting_line_code       => l_component_code
4431       ,p_accounting_line_type_code  => l_component_type_code
4432       ,p_accounting_line_appl_id    => l_component_appl_id
4433       ,p_amb_context_code           => l_amb_context_code
4434       ,p_entity_code                => l_entity_code
4435       ,p_event_class_code           => l_event_class_code);
4436    --
4437    -- set accounting class
4438    --
4439    xla_ae_lines_pkg.SetAcctClass(
4440            p_accounting_class_code  => 'EVERGREEN'
4441          , p_ae_header_id           => l_ae_header_id
4442          );
4443 
4444    --
4445    -- set rounding class
4446    --
4447    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4448                       'EVERGREEN';
4449 
4450    --
4451    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4452    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4453    --
4454    -- bulk performance
4455    --
4456    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4457 
4458    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4459       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4460 
4461    -- 4955764
4462    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4463       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4464 
4465    -- 4458381 Public Sector Enh
4466    
4467    --
4468    -- set accounting attributes for the line type
4469    --
4470    l_entered_amt_idx := 3;
4471    l_accted_amt_idx  := NULL;
4472    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4473    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4474    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
4475    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
4476    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
4477    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
4478    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
4479    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
4480    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
4484    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
4481    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
4482    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
4483    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
4485    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
4486    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
4487 
4488    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4489    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4490 
4491    ---------------------------------------------------------------------------------------------------------------
4492    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4493    ---------------------------------------------------------------------------------------------------------------
4494    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4495 
4496    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4497    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4498 
4499    IF xla_accounting_cache_pkg.GetValueChar
4500          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4501          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4502    AND l_bflow_method_code = 'PRIOR_ENTRY'
4503 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4504    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4505          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4506        )
4507    THEN
4508          xla_ae_lines_pkg.BflowUpgEntry
4509            (p_business_method_code    => l_bflow_method_code
4510            ,p_business_class_code     => l_bflow_class_code
4511            ,p_balance_type            => l_balance_type_code);
4512    ELSE
4513       NULL;
4514 -- No business flow processing for business flow method of NONE.
4515    END IF;
4516 
4517    --
4518    -- call analytical criteria
4519    --
4520    
4521    --
4522    -- call description
4523    --
4524    
4525 xla_ae_lines_pkg.SetLineDescription(
4526    p_ae_header_id => l_ae_header_id
4527   ,p_description  => Description_1 (
4528      p_application_id         => p_application_id
4529    , p_ae_header_id           => l_ae_header_id 
4530 , p_source_1 => p_source_1
4531 , p_source_2 => p_source_2
4532    )
4533 );
4534 
4535 
4536    --
4537    -- call ADRs
4538    -- Bug 4922099
4539    --
4540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4541         (NVL(l_actual_upg_option, 'N') = 'O') OR
4542         (NVL(l_enc_upg_option, 'N') = 'O')
4543       )
4544    THEN
4545    NULL;
4546    --
4547    --
4548    
4549   l_ccid := AcctDerRule_3(
4550            p_application_id           => p_application_id
4551          , p_ae_header_id             => l_ae_header_id 
4552 , p_source_5 => p_source_5
4553          , x_transaction_coa_id       => l_adr_transaction_coa_id
4554          , x_accounting_coa_id        => l_adr_accounting_coa_id
4555          , x_value_type_code          => l_adr_value_type_code
4556          , p_side                     => 'NA'
4557    );
4558 
4559    xla_ae_lines_pkg.set_ccid(
4560     p_code_combination_id          => l_ccid
4561   , p_value_type_code              => l_adr_value_type_code
4562   , p_transaction_coa_id           => l_adr_transaction_coa_id
4563   , p_accounting_coa_id            => l_adr_accounting_coa_id
4564   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
4565   , p_adr_type_code                => 'S'
4566   , p_component_type               => l_component_type
4567   , p_component_code               => l_component_code
4568   , p_component_type_code          => l_component_type_code
4569   , p_component_appl_id            => l_component_appl_id
4570   , p_amb_context_code             => l_amb_context_code
4571   , p_side                         => 'NA'
4572   );
4573 
4574 
4575    --
4576    --
4577    END IF;
4578    --
4579    -- Bug 4922099
4580    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4581           (NVL(l_enc_upg_option, 'N') = 'O')
4582         ) AND
4583         (l_bflow_method_code = 'PRIOR_ENTRY')
4584       )
4585    THEN
4586       IF
4587       --
4588       1 = 2
4589       --
4590       THEN
4591       xla_accounting_err_pkg.build_message
4592                                     (p_appli_s_name            => 'XLA'
4593                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4594                                     ,p_token_1                 => 'LINE_NUMBER'
4595                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4596                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4597                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4598                                                                              l_component_type
4599                                                                             ,l_component_code
4600                                                                             ,l_component_type_code
4601                                                                             ,l_component_appl_id
4602                                                                             ,l_amb_context_code
4603                                                                             ,l_entity_code
4604                                                                             ,l_event_class_code
4605                                                                            )
4606                                     ,p_token_3                 => 'OWNER'
4610                                                                          )
4607                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4608                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4609                                                                           ,p_lookup_code    => l_component_type_code
4611                                     ,p_token_4                 => 'PRODUCT_NAME'
4612                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4613                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4614                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4615                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4616                                     ,p_ae_header_id            =>  NULL
4617                                        );
4618 
4619         IF (C_LEVEL_ERROR>= g_log_level) THEN
4620                  trace
4621                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4622                       ,p_level    => C_LEVEL_ERROR
4623                       ,p_module   => l_log_module);
4624         END IF;
4625       END IF;
4626    END IF;
4627    --
4628    --
4629    ------------------------------------------------------------------------------------------------
4630    -- 4219869 Business Flow
4631    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4632    -- Prior Entry.  Currently, the following code is always generated.
4633    ------------------------------------------------------------------------------------------------
4634    XLA_AE_LINES_PKG.ValidateCurrentLine;
4635 
4636    ------------------------------------------------------------------------------------
4637    -- 4219869 Business Flow
4638    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4639    ------------------------------------------------------------------------------------
4640    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4641 
4642    ----------------------------------------------------------------------------------
4643    -- 4219869 Business Flow
4644    -- Update journal entry status -- Need to generate this within IF <condition>
4645    ----------------------------------------------------------------------------------
4646    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4647          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4648          ,p_balance_type_code => l_balance_type_code
4649          );
4650 
4651    -------------------------------------------------------------------------------------------
4652    -- 4262811 - Generate the Accrual Reversal lines
4653    -------------------------------------------------------------------------------------------
4654    BEGIN
4655       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4656                               (g_array_event(p_event_id).array_value_num('header_index'));
4657       IF l_acc_rev_flag IS NULL THEN
4658          l_acc_rev_flag := 'N';
4659       END IF;
4660    EXCEPTION
4661       WHEN OTHERS THEN
4662          l_acc_rev_flag := 'N';
4663    END;
4664    --
4665    IF (l_acc_rev_flag = 'Y') THEN
4666 
4667        -- 4645092  ------------------------------------------------------------------------------
4668        -- To allow MPA report to determine if it should generate report process
4669        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4670        ------------------------------------------------------------------------------------------
4671 
4672        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4673        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4674 
4675        --
4676        -- Update the line information that should be overwritten
4677        --
4678        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4679                                          p_header_num   => 1);
4680        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4681 
4682        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4683 
4684        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4685           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4686        END IF;
4687 
4688       --
4689       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4690       --
4691       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4692           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4693       ELSE
4694           ---------------------------------------------------------------------------------------------------
4695           -- 4262811a Switch Sign
4696           ---------------------------------------------------------------------------------------------------
4697           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4698           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4699                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4700           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4701                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4702           -- 5132302
4703           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4704                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4705 
4706       END IF;
4707 
4708       -- 4955764
4712 
4709       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4711 
4713       XLA_AE_LINES_PKG.ValidateCurrentLine;
4714       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4715 
4716       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4717                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4718                ,p_balance_type_code => l_balance_type_code);
4719 
4720    END IF;
4721 
4722    -----------------------------------------------------------------------------------------
4723    -- 4262811 Multiperiod Accounting
4724    -----------------------------------------------------------------------------------------
4725      -- No MPA option is assigned.
4726 
4727 
4728 END IF;
4729 END IF;
4730 --
4731 
4732 --
4733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4734    trace
4735       (p_msg      => 'END of AcctLineType_11'
4736       ,p_level    => C_LEVEL_PROCEDURE
4737       ,p_module   => l_log_module);
4738 END IF;
4739 --
4740 EXCEPTION
4741   WHEN xla_exceptions_pkg.application_exception THEN
4742       RAISE;
4743   WHEN OTHERS THEN
4744        xla_exceptions_pkg.raise_message
4745            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_11');
4746 END AcctLineType_11;
4747 --
4748 
4749 ---------------------------------------
4750 --
4751 -- PRIVATE FUNCTION
4752 --         AcctLineType_12
4753 --
4754 ---------------------------------------
4755 PROCEDURE AcctLineType_12 (
4756   p_application_id        IN NUMBER
4757  ,p_event_id              IN NUMBER
4758  ,p_calculate_acctd_flag  IN VARCHAR2
4759  ,p_calculate_g_l_flag    IN VARCHAR2
4760  ,p_actual_flag           IN OUT VARCHAR2
4761  ,p_balance_type_code     OUT VARCHAR2
4762  ,p_gain_or_loss_ref      OUT VARCHAR2
4763  
4764 --Contract Number
4765  , p_source_1            IN VARCHAR2
4766 --Contract Product Name
4767  , p_source_2            IN VARCHAR2
4768 --Distribution Account
4769  , p_source_5            IN NUMBER
4770 --Accounting Line Type
4771  , p_source_6            IN VARCHAR2
4772  , p_source_6_meaning    IN VARCHAR2
4773 --Accounting Distribution Identifier
4774  , p_source_7            IN NUMBER
4775 --Distribution Type
4776  , p_source_8            IN VARCHAR2
4777 --Distribution Entered Amount
4778  , p_source_9            IN NUMBER
4779 --Transaction Currency Code
4780  , p_source_10            IN VARCHAR2
4781 --Transaction Currency Conversion Date
4782  , p_source_11            IN DATE
4783 --Transaction Currency Conversion Rate
4784  , p_source_12            IN NUMBER
4785 --Transaction Currency Conversion Type
4786  , p_source_13            IN VARCHAR2
4787 )
4788 IS
4789 
4790 l_component_type              VARCHAR2(80);
4791 l_component_code              VARCHAR2(30);
4792 l_component_type_code         VARCHAR2(1);
4793 l_component_appl_id           INTEGER;
4794 l_amb_context_code            VARCHAR2(30);
4795 l_entity_code                 VARCHAR2(30);
4796 l_event_class_code            VARCHAR2(30);
4797 l_ae_header_id                NUMBER;
4798 l_event_type_code             VARCHAR2(30);
4799 l_line_definition_code        VARCHAR2(30);
4800 l_line_definition_owner_code  VARCHAR2(1);
4801 --
4802 -- adr variables
4803 l_segment                     VARCHAR2(30);
4804 l_ccid                        NUMBER;
4805 l_adr_transaction_coa_id      NUMBER;
4806 l_adr_accounting_coa_id       NUMBER;
4807 l_adr_flexfield_segment_code  VARCHAR2(30);
4808 l_adr_flex_value_set_id       NUMBER;
4809 l_adr_value_type_code         VARCHAR2(30);
4810 l_adr_value_combination_id    NUMBER;
4811 l_adr_value_segment_code      VARCHAR2(30);
4812 
4813 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4814 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4815 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4816 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4817 
4818 -- 4262811 Variables ------------------------------------------------------------------------------------------
4819 l_entered_amt_idx             NUMBER;
4820 l_accted_amt_idx              NUMBER;
4821 l_acc_rev_flag                VARCHAR2(1);
4822 l_accrual_line_num            NUMBER;
4823 l_tmp_amt                     NUMBER;
4824 l_acc_rev_natural_side_code   VARCHAR2(1);
4825 
4826 l_num_entries                 NUMBER;
4827 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4828 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4829 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4830 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4831 l_recog_line_1                NUMBER;
4832 l_recog_line_2                NUMBER;
4833 
4834 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4835 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4836 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4837 
4838 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4839 
4840 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4841 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4842 
4843 ---------------------------------------------------------------------------------------------------------------
4844 
4845 
4846 --
4847 -- bulk performance
4848 --
4849 l_balance_type_code           VARCHAR2(1);
4850 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4851 l_log_module                  VARCHAR2(240);
4852 
4856 l_actual_upg_option           VARCHAR2(1);
4853 --
4854 -- Upgrade strategy
4855 --
4857 l_enc_upg_option           VARCHAR2(1);
4858 
4859 --
4860 BEGIN
4861 --
4862 IF g_log_enabled THEN
4863       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4864 END IF;
4865 --
4866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4867 
4868       trace
4869          (p_msg      => 'BEGIN of AcctLineType_12'
4870          ,p_level    => C_LEVEL_PROCEDURE
4871          ,p_module   => l_log_module);
4872 
4873 END IF;
4874 --
4875 l_component_type             := 'AMB_JLT';
4876 l_component_code             := 'OKL_GENERAL_LOSS_PROVISION_CR';
4877 l_component_type_code        := 'S';
4878 l_component_appl_id          :=  540;
4879 l_amb_context_code           := 'DEFAULT';
4880 l_entity_code                := 'TRANSACTIONS';
4881 l_event_class_code           := 'GENERAL_LOSS_PROVISION';
4882 l_event_type_code            := 'GENERAL_LOSS_PROVISION_ALL';
4883 l_line_definition_owner_code := 'S';
4884 l_line_definition_code       := 'OKL_GENERAL_LOSS_PROVISION';
4885 --
4886 l_balance_type_code          := 'A';
4887 l_segment                     := NULL;
4888 l_ccid                        := NULL;
4889 l_adr_transaction_coa_id      := NULL;
4890 l_adr_accounting_coa_id       := NULL;
4891 l_adr_flexfield_segment_code  := NULL;
4892 l_adr_flex_value_set_id       := NULL;
4893 l_adr_value_type_code         := NULL;
4894 l_adr_value_combination_id    := NULL;
4895 l_adr_value_segment_code      := NULL;
4896 
4897 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4898 l_bflow_class_code           := '';    -- 4219869 Business Flow
4899 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4900 l_budgetary_control_flag     := 'N';
4901 
4902 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4903 l_bflow_applied_to_amt       := NULL; -- 5132302
4904 l_entered_amt_idx            := NULL;          -- 4262811
4905 l_accted_amt_idx             := NULL;          -- 4262811
4906 l_acc_rev_flag               := NULL;          -- 4262811
4907 l_accrual_line_num           := NULL;          -- 4262811
4908 l_tmp_amt                    := NULL;          -- 4262811
4909 --
4910  
4911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4912     l_balance_type_code <> 'B' THEN
4913 IF NVL(p_source_6,'
4914 ') =  'LEASE_CREDIT'
4915  THEN 
4916 
4917    --
4918    XLA_AE_LINES_PKG.SetNewLine;
4919 
4920    p_balance_type_code          := l_balance_type_code;
4921    -- set the flag so later we will know whether the gain loss line needs to be created
4922    
4923    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4924      p_actual_flag :='A';
4925    END IF;
4926 
4927    --
4928    -- bulk performance
4929    --
4930    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4931                                       p_header_num   => 0); -- 4262811
4932    --
4933    -- set accounting line options
4934    --
4935    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4936            p_natural_side_code          => 'C'
4937          , p_gain_or_loss_flag          => 'N'
4938          , p_gl_transfer_mode_code      => 'S'
4939          , p_acct_entry_type_code       => 'A'
4940          , p_switch_side_flag           => 'Y'
4941          , p_merge_duplicate_code       => 'N'
4942          );
4943    --
4944    l_acc_rev_natural_side_code := 'D';  -- 4262811
4945    -- 
4946    --
4947    -- set accounting line type info
4948    --
4949    xla_ae_lines_pkg.SetAcctLineType
4950       (p_component_type             => l_component_type
4951       ,p_event_type_code            => l_event_type_code
4952       ,p_line_definition_owner_code => l_line_definition_owner_code
4953       ,p_line_definition_code       => l_line_definition_code
4954       ,p_accounting_line_code       => l_component_code
4955       ,p_accounting_line_type_code  => l_component_type_code
4956       ,p_accounting_line_appl_id    => l_component_appl_id
4957       ,p_amb_context_code           => l_amb_context_code
4958       ,p_entity_code                => l_entity_code
4959       ,p_event_class_code           => l_event_class_code);
4960    --
4961    -- set accounting class
4962    --
4963    xla_ae_lines_pkg.SetAcctClass(
4964            p_accounting_class_code  => 'GENERAL_LOSS_PROVISION'
4965          , p_ae_header_id           => l_ae_header_id
4966          );
4967 
4968    --
4969    -- set rounding class
4970    --
4971    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4972                       'GENERAL_LOSS_PROVISION';
4973 
4974    --
4975    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4976    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4977    --
4978    -- bulk performance
4979    --
4980    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4981 
4982    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4983       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4984 
4985    -- 4955764
4986    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4988 
4989    -- 4458381 Public Sector Enh
4990    
4991    --
4992    -- set accounting attributes for the line type
4993    --
4994    l_entered_amt_idx := 3;
4995    l_accted_amt_idx  := NULL;
4996    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5000    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
4997    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4998    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
4999    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5001    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5002    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
5003    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5004    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
5005    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5006    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
5007    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5008    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
5009    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5010    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
5011 
5012    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5013    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5014 
5015    ---------------------------------------------------------------------------------------------------------------
5016    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5017    ---------------------------------------------------------------------------------------------------------------
5018    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5019 
5020    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5021    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5022 
5023    IF xla_accounting_cache_pkg.GetValueChar
5024          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5025          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5026    AND l_bflow_method_code = 'PRIOR_ENTRY'
5027 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5028    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5029          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5030        )
5031    THEN
5032          xla_ae_lines_pkg.BflowUpgEntry
5033            (p_business_method_code    => l_bflow_method_code
5034            ,p_business_class_code     => l_bflow_class_code
5035            ,p_balance_type            => l_balance_type_code);
5036    ELSE
5037       NULL;
5038 -- No business flow processing for business flow method of NONE.
5039    END IF;
5040 
5041    --
5042    -- call analytical criteria
5043    --
5044    
5045    --
5046    -- call description
5047    --
5048    
5049 xla_ae_lines_pkg.SetLineDescription(
5050    p_ae_header_id => l_ae_header_id
5051   ,p_description  => Description_1 (
5052      p_application_id         => p_application_id
5053    , p_ae_header_id           => l_ae_header_id 
5054 , p_source_1 => p_source_1
5055 , p_source_2 => p_source_2
5056    )
5057 );
5058 
5059 
5060    --
5061    -- call ADRs
5062    -- Bug 4922099
5063    --
5064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5065         (NVL(l_actual_upg_option, 'N') = 'O') OR
5066         (NVL(l_enc_upg_option, 'N') = 'O')
5067       )
5068    THEN
5069    NULL;
5070    --
5071    --
5072    
5073   l_ccid := AcctDerRule_3(
5074            p_application_id           => p_application_id
5075          , p_ae_header_id             => l_ae_header_id 
5076 , p_source_5 => p_source_5
5077          , x_transaction_coa_id       => l_adr_transaction_coa_id
5078          , x_accounting_coa_id        => l_adr_accounting_coa_id
5079          , x_value_type_code          => l_adr_value_type_code
5080          , p_side                     => 'NA'
5081    );
5082 
5083    xla_ae_lines_pkg.set_ccid(
5084     p_code_combination_id          => l_ccid
5085   , p_value_type_code              => l_adr_value_type_code
5086   , p_transaction_coa_id           => l_adr_transaction_coa_id
5087   , p_accounting_coa_id            => l_adr_accounting_coa_id
5088   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
5089   , p_adr_type_code                => 'S'
5090   , p_component_type               => l_component_type
5091   , p_component_code               => l_component_code
5092   , p_component_type_code          => l_component_type_code
5093   , p_component_appl_id            => l_component_appl_id
5094   , p_amb_context_code             => l_amb_context_code
5095   , p_side                         => 'NA'
5096   );
5097 
5098 
5099    --
5100    --
5101    END IF;
5102    --
5103    -- Bug 4922099
5104    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5105           (NVL(l_enc_upg_option, 'N') = 'O')
5106         ) AND
5107         (l_bflow_method_code = 'PRIOR_ENTRY')
5108       )
5109    THEN
5110       IF
5111       --
5112       1 = 2
5113       --
5114       THEN
5115       xla_accounting_err_pkg.build_message
5116                                     (p_appli_s_name            => 'XLA'
5117                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5118                                     ,p_token_1                 => 'LINE_NUMBER'
5119                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5120                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5121                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5122                                                                              l_component_type
5123                                                                             ,l_component_code
5124                                                                             ,l_component_type_code
5128                                                                             ,l_event_class_code
5125                                                                             ,l_component_appl_id
5126                                                                             ,l_amb_context_code
5127                                                                             ,l_entity_code
5129                                                                            )
5130                                     ,p_token_3                 => 'OWNER'
5131                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5132                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5133                                                                           ,p_lookup_code    => l_component_type_code
5134                                                                          )
5135                                     ,p_token_4                 => 'PRODUCT_NAME'
5136                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5137                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5138                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5139                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5140                                     ,p_ae_header_id            =>  NULL
5141                                        );
5142 
5143         IF (C_LEVEL_ERROR>= g_log_level) THEN
5144                  trace
5145                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5146                       ,p_level    => C_LEVEL_ERROR
5147                       ,p_module   => l_log_module);
5148         END IF;
5149       END IF;
5150    END IF;
5151    --
5152    --
5153    ------------------------------------------------------------------------------------------------
5154    -- 4219869 Business Flow
5155    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5156    -- Prior Entry.  Currently, the following code is always generated.
5157    ------------------------------------------------------------------------------------------------
5158    XLA_AE_LINES_PKG.ValidateCurrentLine;
5159 
5160    ------------------------------------------------------------------------------------
5161    -- 4219869 Business Flow
5162    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5163    ------------------------------------------------------------------------------------
5164    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5165 
5166    ----------------------------------------------------------------------------------
5167    -- 4219869 Business Flow
5168    -- Update journal entry status -- Need to generate this within IF <condition>
5169    ----------------------------------------------------------------------------------
5170    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5171          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5172          ,p_balance_type_code => l_balance_type_code
5173          );
5174 
5175    -------------------------------------------------------------------------------------------
5176    -- 4262811 - Generate the Accrual Reversal lines
5177    -------------------------------------------------------------------------------------------
5178    BEGIN
5179       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5180                               (g_array_event(p_event_id).array_value_num('header_index'));
5181       IF l_acc_rev_flag IS NULL THEN
5182          l_acc_rev_flag := 'N';
5183       END IF;
5184    EXCEPTION
5185       WHEN OTHERS THEN
5186          l_acc_rev_flag := 'N';
5187    END;
5188    --
5189    IF (l_acc_rev_flag = 'Y') THEN
5190 
5191        -- 4645092  ------------------------------------------------------------------------------
5192        -- To allow MPA report to determine if it should generate report process
5193        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5194        ------------------------------------------------------------------------------------------
5195 
5196        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5197        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5198 
5199        --
5200        -- Update the line information that should be overwritten
5201        --
5202        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5203                                          p_header_num   => 1);
5204        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5205 
5206        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5207 
5208        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5209           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5210        END IF;
5211 
5212       --
5213       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5214       --
5215       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5216           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5217       ELSE
5218           ---------------------------------------------------------------------------------------------------
5219           -- 4262811a Switch Sign
5220           ---------------------------------------------------------------------------------------------------
5221           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5222           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5223                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5227           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5224           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5225                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5226           -- 5132302
5228                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5229 
5230       END IF;
5231 
5232       -- 4955764
5233       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5235 
5236 
5237       XLA_AE_LINES_PKG.ValidateCurrentLine;
5238       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5239 
5240       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5241                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5242                ,p_balance_type_code => l_balance_type_code);
5243 
5244    END IF;
5245 
5246    -----------------------------------------------------------------------------------------
5247    -- 4262811 Multiperiod Accounting
5248    -----------------------------------------------------------------------------------------
5249      -- No MPA option is assigned.
5250 
5251 
5252 END IF;
5253 END IF;
5254 --
5255 
5256 --
5257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5258    trace
5259       (p_msg      => 'END of AcctLineType_12'
5260       ,p_level    => C_LEVEL_PROCEDURE
5261       ,p_module   => l_log_module);
5262 END IF;
5263 --
5264 EXCEPTION
5265   WHEN xla_exceptions_pkg.application_exception THEN
5266       RAISE;
5267   WHEN OTHERS THEN
5268        xla_exceptions_pkg.raise_message
5269            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_12');
5270 END AcctLineType_12;
5271 --
5272 
5273 ---------------------------------------
5274 --
5275 -- PRIVATE FUNCTION
5276 --         AcctLineType_13
5277 --
5278 ---------------------------------------
5279 PROCEDURE AcctLineType_13 (
5280   p_application_id        IN NUMBER
5281  ,p_event_id              IN NUMBER
5282  ,p_calculate_acctd_flag  IN VARCHAR2
5283  ,p_calculate_g_l_flag    IN VARCHAR2
5284  ,p_actual_flag           IN OUT VARCHAR2
5285  ,p_balance_type_code     OUT VARCHAR2
5286  ,p_gain_or_loss_ref      OUT VARCHAR2
5287  
5288 --Contract Number
5289  , p_source_1            IN VARCHAR2
5290 --Contract Product Name
5291  , p_source_2            IN VARCHAR2
5292 --Distribution Account
5293  , p_source_5            IN NUMBER
5294 --Accounting Line Type
5295  , p_source_6            IN VARCHAR2
5296  , p_source_6_meaning    IN VARCHAR2
5297 --Accounting Distribution Identifier
5298  , p_source_7            IN NUMBER
5299 --Distribution Type
5300  , p_source_8            IN VARCHAR2
5301 --Distribution Entered Amount
5302  , p_source_9            IN NUMBER
5303 --Transaction Currency Code
5304  , p_source_10            IN VARCHAR2
5305 --Transaction Currency Conversion Date
5306  , p_source_11            IN DATE
5307 --Transaction Currency Conversion Rate
5308  , p_source_12            IN NUMBER
5309 --Transaction Currency Conversion Type
5310  , p_source_13            IN VARCHAR2
5311 )
5312 IS
5313 
5314 l_component_type              VARCHAR2(80);
5315 l_component_code              VARCHAR2(30);
5316 l_component_type_code         VARCHAR2(1);
5317 l_component_appl_id           INTEGER;
5318 l_amb_context_code            VARCHAR2(30);
5319 l_entity_code                 VARCHAR2(30);
5320 l_event_class_code            VARCHAR2(30);
5321 l_ae_header_id                NUMBER;
5322 l_event_type_code             VARCHAR2(30);
5323 l_line_definition_code        VARCHAR2(30);
5324 l_line_definition_owner_code  VARCHAR2(1);
5325 --
5326 -- adr variables
5327 l_segment                     VARCHAR2(30);
5328 l_ccid                        NUMBER;
5329 l_adr_transaction_coa_id      NUMBER;
5330 l_adr_accounting_coa_id       NUMBER;
5331 l_adr_flexfield_segment_code  VARCHAR2(30);
5332 l_adr_flex_value_set_id       NUMBER;
5333 l_adr_value_type_code         VARCHAR2(30);
5334 l_adr_value_combination_id    NUMBER;
5335 l_adr_value_segment_code      VARCHAR2(30);
5336 
5337 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5338 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5339 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5340 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5341 
5342 -- 4262811 Variables ------------------------------------------------------------------------------------------
5343 l_entered_amt_idx             NUMBER;
5344 l_accted_amt_idx              NUMBER;
5345 l_acc_rev_flag                VARCHAR2(1);
5346 l_accrual_line_num            NUMBER;
5347 l_tmp_amt                     NUMBER;
5348 l_acc_rev_natural_side_code   VARCHAR2(1);
5349 
5350 l_num_entries                 NUMBER;
5351 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5352 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5353 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5354 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5355 l_recog_line_1                NUMBER;
5356 l_recog_line_2                NUMBER;
5357 
5358 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5359 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5360 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5361 
5362 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5363 
5367 ---------------------------------------------------------------------------------------------------------------
5364 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5365 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5366 
5368 
5369 
5370 --
5371 -- bulk performance
5372 --
5373 l_balance_type_code           VARCHAR2(1);
5374 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5375 l_log_module                  VARCHAR2(240);
5376 
5377 --
5378 -- Upgrade strategy
5379 --
5380 l_actual_upg_option           VARCHAR2(1);
5381 l_enc_upg_option           VARCHAR2(1);
5382 
5383 --
5384 BEGIN
5385 --
5386 IF g_log_enabled THEN
5387       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5388 END IF;
5389 --
5390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5391 
5392       trace
5393          (p_msg      => 'BEGIN of AcctLineType_13'
5394          ,p_level    => C_LEVEL_PROCEDURE
5395          ,p_module   => l_log_module);
5396 
5397 END IF;
5398 --
5399 l_component_type             := 'AMB_JLT';
5400 l_component_code             := 'OKL_GENERAL_LOSS_PROVISION_DR';
5401 l_component_type_code        := 'S';
5402 l_component_appl_id          :=  540;
5403 l_amb_context_code           := 'DEFAULT';
5404 l_entity_code                := 'TRANSACTIONS';
5405 l_event_class_code           := 'GENERAL_LOSS_PROVISION';
5406 l_event_type_code            := 'GENERAL_LOSS_PROVISION_ALL';
5407 l_line_definition_owner_code := 'S';
5408 l_line_definition_code       := 'OKL_GENERAL_LOSS_PROVISION';
5409 --
5410 l_balance_type_code          := 'A';
5411 l_segment                     := NULL;
5412 l_ccid                        := NULL;
5413 l_adr_transaction_coa_id      := NULL;
5414 l_adr_accounting_coa_id       := NULL;
5415 l_adr_flexfield_segment_code  := NULL;
5416 l_adr_flex_value_set_id       := NULL;
5417 l_adr_value_type_code         := NULL;
5418 l_adr_value_combination_id    := NULL;
5419 l_adr_value_segment_code      := NULL;
5420 
5421 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5422 l_bflow_class_code           := '';    -- 4219869 Business Flow
5423 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5424 l_budgetary_control_flag     := 'N';
5425 
5426 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5427 l_bflow_applied_to_amt       := NULL; -- 5132302
5428 l_entered_amt_idx            := NULL;          -- 4262811
5429 l_accted_amt_idx             := NULL;          -- 4262811
5430 l_acc_rev_flag               := NULL;          -- 4262811
5431 l_accrual_line_num           := NULL;          -- 4262811
5432 l_tmp_amt                    := NULL;          -- 4262811
5433 --
5434  
5435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5436     l_balance_type_code <> 'B' THEN
5437 IF NVL(p_source_6,'
5438 ') =  'LEASE_DEBIT'
5439  THEN 
5440 
5441    --
5442    XLA_AE_LINES_PKG.SetNewLine;
5443 
5444    p_balance_type_code          := l_balance_type_code;
5445    -- set the flag so later we will know whether the gain loss line needs to be created
5446    
5447    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5448      p_actual_flag :='A';
5449    END IF;
5450 
5451    --
5452    -- bulk performance
5453    --
5454    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5455                                       p_header_num   => 0); -- 4262811
5456    --
5457    -- set accounting line options
5458    --
5459    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5460            p_natural_side_code          => 'D'
5461          , p_gain_or_loss_flag          => 'N'
5462          , p_gl_transfer_mode_code      => 'S'
5463          , p_acct_entry_type_code       => 'A'
5464          , p_switch_side_flag           => 'Y'
5465          , p_merge_duplicate_code       => 'N'
5466          );
5467    --
5468    l_acc_rev_natural_side_code := 'C';  -- 4262811
5469    -- 
5470    --
5471    -- set accounting line type info
5472    --
5473    xla_ae_lines_pkg.SetAcctLineType
5474       (p_component_type             => l_component_type
5475       ,p_event_type_code            => l_event_type_code
5476       ,p_line_definition_owner_code => l_line_definition_owner_code
5477       ,p_line_definition_code       => l_line_definition_code
5478       ,p_accounting_line_code       => l_component_code
5479       ,p_accounting_line_type_code  => l_component_type_code
5480       ,p_accounting_line_appl_id    => l_component_appl_id
5481       ,p_amb_context_code           => l_amb_context_code
5482       ,p_entity_code                => l_entity_code
5483       ,p_event_class_code           => l_event_class_code);
5484    --
5485    -- set accounting class
5486    --
5487    xla_ae_lines_pkg.SetAcctClass(
5488            p_accounting_class_code  => 'GENERAL_LOSS_PROVISION'
5489          , p_ae_header_id           => l_ae_header_id
5490          );
5491 
5492    --
5493    -- set rounding class
5494    --
5495    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5496                       'GENERAL_LOSS_PROVISION';
5497 
5498    --
5499    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5500    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5501    --
5502    -- bulk performance
5503    --
5504    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5505 
5506    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5507       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5508 
5509    -- 4955764
5513    -- 4458381 Public Sector Enh
5510    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5511       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5512 
5514    
5515    --
5516    -- set accounting attributes for the line type
5517    --
5518    l_entered_amt_idx := 3;
5519    l_accted_amt_idx  := NULL;
5520    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5521    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5522    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
5523    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5524    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
5525    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5526    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
5527    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5528    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
5529    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5530    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
5531    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5532    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
5533    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5534    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
5535 
5536    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5537    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5538 
5539    ---------------------------------------------------------------------------------------------------------------
5540    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5541    ---------------------------------------------------------------------------------------------------------------
5542    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5543 
5544    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5545    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5546 
5547    IF xla_accounting_cache_pkg.GetValueChar
5548          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5549          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5550    AND l_bflow_method_code = 'PRIOR_ENTRY'
5551 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5552    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5553          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5554        )
5555    THEN
5556          xla_ae_lines_pkg.BflowUpgEntry
5557            (p_business_method_code    => l_bflow_method_code
5558            ,p_business_class_code     => l_bflow_class_code
5559            ,p_balance_type            => l_balance_type_code);
5560    ELSE
5561       NULL;
5562 -- No business flow processing for business flow method of NONE.
5563    END IF;
5564 
5565    --
5566    -- call analytical criteria
5567    --
5568    
5569    --
5570    -- call description
5571    --
5572    
5573 xla_ae_lines_pkg.SetLineDescription(
5574    p_ae_header_id => l_ae_header_id
5575   ,p_description  => Description_1 (
5576      p_application_id         => p_application_id
5577    , p_ae_header_id           => l_ae_header_id 
5578 , p_source_1 => p_source_1
5579 , p_source_2 => p_source_2
5580    )
5581 );
5582 
5583 
5584    --
5585    -- call ADRs
5586    -- Bug 4922099
5587    --
5588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5589         (NVL(l_actual_upg_option, 'N') = 'O') OR
5590         (NVL(l_enc_upg_option, 'N') = 'O')
5591       )
5592    THEN
5593    NULL;
5594    --
5595    --
5596    
5597   l_ccid := AcctDerRule_3(
5598            p_application_id           => p_application_id
5599          , p_ae_header_id             => l_ae_header_id 
5600 , p_source_5 => p_source_5
5601          , x_transaction_coa_id       => l_adr_transaction_coa_id
5602          , x_accounting_coa_id        => l_adr_accounting_coa_id
5603          , x_value_type_code          => l_adr_value_type_code
5604          , p_side                     => 'NA'
5605    );
5606 
5607    xla_ae_lines_pkg.set_ccid(
5608     p_code_combination_id          => l_ccid
5609   , p_value_type_code              => l_adr_value_type_code
5610   , p_transaction_coa_id           => l_adr_transaction_coa_id
5611   , p_accounting_coa_id            => l_adr_accounting_coa_id
5612   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
5613   , p_adr_type_code                => 'S'
5614   , p_component_type               => l_component_type
5615   , p_component_code               => l_component_code
5616   , p_component_type_code          => l_component_type_code
5617   , p_component_appl_id            => l_component_appl_id
5618   , p_amb_context_code             => l_amb_context_code
5619   , p_side                         => 'NA'
5620   );
5621 
5622 
5623    --
5624    --
5625    END IF;
5626    --
5627    -- Bug 4922099
5628    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5629           (NVL(l_enc_upg_option, 'N') = 'O')
5630         ) AND
5631         (l_bflow_method_code = 'PRIOR_ENTRY')
5632       )
5633    THEN
5634       IF
5635       --
5636       1 = 2
5637       --
5638       THEN
5639       xla_accounting_err_pkg.build_message
5640                                     (p_appli_s_name            => 'XLA'
5641                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5642                                     ,p_token_1                 => 'LINE_NUMBER'
5643                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5647                                                                             ,l_component_code
5644                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5645                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5646                                                                              l_component_type
5648                                                                             ,l_component_type_code
5649                                                                             ,l_component_appl_id
5650                                                                             ,l_amb_context_code
5651                                                                             ,l_entity_code
5652                                                                             ,l_event_class_code
5653                                                                            )
5654                                     ,p_token_3                 => 'OWNER'
5655                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5656                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5657                                                                           ,p_lookup_code    => l_component_type_code
5658                                                                          )
5659                                     ,p_token_4                 => 'PRODUCT_NAME'
5660                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5661                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5662                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5663                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5664                                     ,p_ae_header_id            =>  NULL
5665                                        );
5666 
5667         IF (C_LEVEL_ERROR>= g_log_level) THEN
5668                  trace
5669                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5670                       ,p_level    => C_LEVEL_ERROR
5671                       ,p_module   => l_log_module);
5672         END IF;
5673       END IF;
5674    END IF;
5675    --
5676    --
5677    ------------------------------------------------------------------------------------------------
5678    -- 4219869 Business Flow
5679    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5680    -- Prior Entry.  Currently, the following code is always generated.
5681    ------------------------------------------------------------------------------------------------
5682    XLA_AE_LINES_PKG.ValidateCurrentLine;
5683 
5684    ------------------------------------------------------------------------------------
5685    -- 4219869 Business Flow
5686    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5687    ------------------------------------------------------------------------------------
5688    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5689 
5690    ----------------------------------------------------------------------------------
5691    -- 4219869 Business Flow
5692    -- Update journal entry status -- Need to generate this within IF <condition>
5693    ----------------------------------------------------------------------------------
5694    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5695          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5696          ,p_balance_type_code => l_balance_type_code
5697          );
5698 
5699    -------------------------------------------------------------------------------------------
5700    -- 4262811 - Generate the Accrual Reversal lines
5701    -------------------------------------------------------------------------------------------
5702    BEGIN
5703       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5704                               (g_array_event(p_event_id).array_value_num('header_index'));
5705       IF l_acc_rev_flag IS NULL THEN
5706          l_acc_rev_flag := 'N';
5707       END IF;
5708    EXCEPTION
5709       WHEN OTHERS THEN
5710          l_acc_rev_flag := 'N';
5711    END;
5712    --
5713    IF (l_acc_rev_flag = 'Y') THEN
5714 
5715        -- 4645092  ------------------------------------------------------------------------------
5716        -- To allow MPA report to determine if it should generate report process
5717        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5718        ------------------------------------------------------------------------------------------
5719 
5720        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5721        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5722 
5723        --
5724        -- Update the line information that should be overwritten
5725        --
5726        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5727                                          p_header_num   => 1);
5728        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5729 
5730        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5731 
5732        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5733           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5734        END IF;
5735 
5736       --
5737       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5738       --
5739       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5740           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5741       ELSE
5742           ---------------------------------------------------------------------------------------------------
5746           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5743           -- 4262811a Switch Sign
5744           ---------------------------------------------------------------------------------------------------
5745           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5747                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5748           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5749                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5750           -- 5132302
5751           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5752                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5753 
5754       END IF;
5755 
5756       -- 4955764
5757       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5758       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5759 
5760 
5761       XLA_AE_LINES_PKG.ValidateCurrentLine;
5762       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5763 
5764       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5765                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5766                ,p_balance_type_code => l_balance_type_code);
5767 
5768    END IF;
5769 
5770    -----------------------------------------------------------------------------------------
5771    -- 4262811 Multiperiod Accounting
5772    -----------------------------------------------------------------------------------------
5773      -- No MPA option is assigned.
5774 
5775 
5776 END IF;
5777 END IF;
5778 --
5779 
5780 --
5781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5782    trace
5783       (p_msg      => 'END of AcctLineType_13'
5784       ,p_level    => C_LEVEL_PROCEDURE
5785       ,p_module   => l_log_module);
5786 END IF;
5787 --
5788 EXCEPTION
5789   WHEN xla_exceptions_pkg.application_exception THEN
5790       RAISE;
5791   WHEN OTHERS THEN
5792        xla_exceptions_pkg.raise_message
5793            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_13');
5794 END AcctLineType_13;
5795 --
5796 
5797 ---------------------------------------
5798 --
5799 -- PRIVATE FUNCTION
5800 --         AcctLineType_14
5801 --
5802 ---------------------------------------
5803 PROCEDURE AcctLineType_14 (
5804   p_application_id        IN NUMBER
5805  ,p_event_id              IN NUMBER
5806  ,p_calculate_acctd_flag  IN VARCHAR2
5807  ,p_calculate_g_l_flag    IN VARCHAR2
5808  ,p_actual_flag           IN OUT VARCHAR2
5809  ,p_balance_type_code     OUT VARCHAR2
5810  ,p_gain_or_loss_ref      OUT VARCHAR2
5811  
5812 --Investor Agreement Number
5813  , p_source_3            IN VARCHAR2
5814 --Investor Agreement Product Name
5815  , p_source_4            IN VARCHAR2
5816 --Distribution Account
5817  , p_source_5            IN NUMBER
5818 --Accounting Line Type
5819  , p_source_6            IN VARCHAR2
5820  , p_source_6_meaning    IN VARCHAR2
5821 --Accounting Distribution Identifier
5822  , p_source_7            IN NUMBER
5823 --Distribution Type
5824  , p_source_8            IN VARCHAR2
5825 --Distribution Entered Amount
5826  , p_source_9            IN NUMBER
5827 --Transaction Currency Code
5828  , p_source_10            IN VARCHAR2
5829 --Transaction Currency Conversion Date
5830  , p_source_11            IN DATE
5831 --Transaction Currency Conversion Rate
5832  , p_source_12            IN NUMBER
5833 --Transaction Currency Conversion Type
5834  , p_source_13            IN VARCHAR2
5835 )
5836 IS
5837 
5838 l_component_type              VARCHAR2(80);
5839 l_component_code              VARCHAR2(30);
5840 l_component_type_code         VARCHAR2(1);
5841 l_component_appl_id           INTEGER;
5842 l_amb_context_code            VARCHAR2(30);
5843 l_entity_code                 VARCHAR2(30);
5844 l_event_class_code            VARCHAR2(30);
5845 l_ae_header_id                NUMBER;
5846 l_event_type_code             VARCHAR2(30);
5847 l_line_definition_code        VARCHAR2(30);
5848 l_line_definition_owner_code  VARCHAR2(1);
5849 --
5850 -- adr variables
5851 l_segment                     VARCHAR2(30);
5852 l_ccid                        NUMBER;
5853 l_adr_transaction_coa_id      NUMBER;
5854 l_adr_accounting_coa_id       NUMBER;
5855 l_adr_flexfield_segment_code  VARCHAR2(30);
5856 l_adr_flex_value_set_id       NUMBER;
5857 l_adr_value_type_code         VARCHAR2(30);
5858 l_adr_value_combination_id    NUMBER;
5859 l_adr_value_segment_code      VARCHAR2(30);
5860 
5861 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5862 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5863 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5864 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5865 
5866 -- 4262811 Variables ------------------------------------------------------------------------------------------
5867 l_entered_amt_idx             NUMBER;
5868 l_accted_amt_idx              NUMBER;
5869 l_acc_rev_flag                VARCHAR2(1);
5870 l_accrual_line_num            NUMBER;
5871 l_tmp_amt                     NUMBER;
5872 l_acc_rev_natural_side_code   VARCHAR2(1);
5873 
5874 l_num_entries                 NUMBER;
5875 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5876 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5877 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5878 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5879 l_recog_line_1                NUMBER;
5883 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5880 l_recog_line_2                NUMBER;
5881 
5882 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5884 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5885 
5886 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5887 
5888 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5889 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5890 
5891 ---------------------------------------------------------------------------------------------------------------
5892 
5893 
5894 --
5895 -- bulk performance
5896 --
5897 l_balance_type_code           VARCHAR2(1);
5898 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5899 l_log_module                  VARCHAR2(240);
5900 
5901 --
5902 -- Upgrade strategy
5903 --
5904 l_actual_upg_option           VARCHAR2(1);
5905 l_enc_upg_option           VARCHAR2(1);
5906 
5907 --
5908 BEGIN
5909 --
5910 IF g_log_enabled THEN
5911       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5912 END IF;
5913 --
5914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5915 
5916       trace
5917          (p_msg      => 'BEGIN of AcctLineType_14'
5918          ,p_level    => C_LEVEL_PROCEDURE
5919          ,p_module   => l_log_module);
5920 
5921 END IF;
5922 --
5923 l_component_type             := 'AMB_JLT';
5924 l_component_code             := 'OKL_INVESTOR_CR';
5925 l_component_type_code        := 'S';
5926 l_component_appl_id          :=  540;
5927 l_amb_context_code           := 'DEFAULT';
5928 l_entity_code                := 'INVESTOR_AGREEMENTS';
5929 l_event_class_code           := 'INVESTOR';
5930 l_event_type_code            := 'INVESTOR_ALL';
5931 l_line_definition_owner_code := 'S';
5932 l_line_definition_code       := 'OKL_INVESTOR';
5933 --
5934 l_balance_type_code          := 'A';
5935 l_segment                     := NULL;
5936 l_ccid                        := NULL;
5937 l_adr_transaction_coa_id      := NULL;
5938 l_adr_accounting_coa_id       := NULL;
5939 l_adr_flexfield_segment_code  := NULL;
5940 l_adr_flex_value_set_id       := NULL;
5941 l_adr_value_type_code         := NULL;
5942 l_adr_value_combination_id    := NULL;
5943 l_adr_value_segment_code      := NULL;
5944 
5945 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5946 l_bflow_class_code           := '';    -- 4219869 Business Flow
5947 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5948 l_budgetary_control_flag     := 'N';
5949 
5950 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5951 l_bflow_applied_to_amt       := NULL; -- 5132302
5952 l_entered_amt_idx            := NULL;          -- 4262811
5953 l_accted_amt_idx             := NULL;          -- 4262811
5954 l_acc_rev_flag               := NULL;          -- 4262811
5955 l_accrual_line_num           := NULL;          -- 4262811
5956 l_tmp_amt                    := NULL;          -- 4262811
5957 --
5958  
5959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5960     l_balance_type_code <> 'B' THEN
5961 IF NVL(p_source_6,'
5962 ') =  'LEASE_CREDIT'
5963  THEN 
5964 
5965    --
5966    XLA_AE_LINES_PKG.SetNewLine;
5967 
5968    p_balance_type_code          := l_balance_type_code;
5969    -- set the flag so later we will know whether the gain loss line needs to be created
5970    
5971    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5972      p_actual_flag :='A';
5973    END IF;
5974 
5975    --
5976    -- bulk performance
5977    --
5978    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5979                                       p_header_num   => 0); -- 4262811
5980    --
5981    -- set accounting line options
5982    --
5983    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5984            p_natural_side_code          => 'C'
5985          , p_gain_or_loss_flag          => 'N'
5986          , p_gl_transfer_mode_code      => 'S'
5987          , p_acct_entry_type_code       => 'A'
5988          , p_switch_side_flag           => 'Y'
5989          , p_merge_duplicate_code       => 'N'
5990          );
5991    --
5992    l_acc_rev_natural_side_code := 'D';  -- 4262811
5993    -- 
5994    --
5995    -- set accounting line type info
5996    --
5997    xla_ae_lines_pkg.SetAcctLineType
5998       (p_component_type             => l_component_type
5999       ,p_event_type_code            => l_event_type_code
6000       ,p_line_definition_owner_code => l_line_definition_owner_code
6001       ,p_line_definition_code       => l_line_definition_code
6002       ,p_accounting_line_code       => l_component_code
6003       ,p_accounting_line_type_code  => l_component_type_code
6004       ,p_accounting_line_appl_id    => l_component_appl_id
6005       ,p_amb_context_code           => l_amb_context_code
6006       ,p_entity_code                => l_entity_code
6007       ,p_event_class_code           => l_event_class_code);
6008    --
6009    -- set accounting class
6010    --
6011    xla_ae_lines_pkg.SetAcctClass(
6012            p_accounting_class_code  => 'INVESTOR'
6013          , p_ae_header_id           => l_ae_header_id
6014          );
6015 
6016    --
6017    -- set rounding class
6018    --
6019    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6020                       'INVESTOR';
6021 
6022    --
6023    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6024    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6028    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6025    --
6026    -- bulk performance
6027    --
6029 
6030    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6031       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6032 
6033    -- 4955764
6034    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6035       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6036 
6037    -- 4458381 Public Sector Enh
6038    
6039    --
6040    -- set accounting attributes for the line type
6041    --
6042    l_entered_amt_idx := 3;
6043    l_accted_amt_idx  := NULL;
6044    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6045    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6046    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
6047    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6048    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
6049    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6050    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
6051    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6052    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
6053    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6054    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
6055    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6056    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
6057    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6058    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
6059 
6060    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6061    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6062 
6063    ---------------------------------------------------------------------------------------------------------------
6064    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6065    ---------------------------------------------------------------------------------------------------------------
6066    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6067 
6068    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6069    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6070 
6071    IF xla_accounting_cache_pkg.GetValueChar
6072          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6073          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6074    AND l_bflow_method_code = 'PRIOR_ENTRY'
6075 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6076    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6077          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6078        )
6079    THEN
6080          xla_ae_lines_pkg.BflowUpgEntry
6081            (p_business_method_code    => l_bflow_method_code
6082            ,p_business_class_code     => l_bflow_class_code
6083            ,p_balance_type            => l_balance_type_code);
6084    ELSE
6085       NULL;
6086 -- No business flow processing for business flow method of NONE.
6087    END IF;
6088 
6089    --
6090    -- call analytical criteria
6091    --
6092    
6093    --
6094    -- call description
6095    --
6096    
6097 xla_ae_lines_pkg.SetLineDescription(
6098    p_ae_header_id => l_ae_header_id
6099   ,p_description  => Description_2 (
6100      p_application_id         => p_application_id
6101    , p_ae_header_id           => l_ae_header_id 
6102 , p_source_3 => p_source_3
6103 , p_source_4 => p_source_4
6104    )
6105 );
6106 
6107 
6108    --
6109    -- call ADRs
6110    -- Bug 4922099
6111    --
6112    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6113         (NVL(l_actual_upg_option, 'N') = 'O') OR
6114         (NVL(l_enc_upg_option, 'N') = 'O')
6115       )
6116    THEN
6117    NULL;
6118    --
6119    --
6120    
6121   l_ccid := AcctDerRule_3(
6122            p_application_id           => p_application_id
6123          , p_ae_header_id             => l_ae_header_id 
6124 , p_source_5 => p_source_5
6125          , x_transaction_coa_id       => l_adr_transaction_coa_id
6126          , x_accounting_coa_id        => l_adr_accounting_coa_id
6127          , x_value_type_code          => l_adr_value_type_code
6128          , p_side                     => 'NA'
6129    );
6130 
6131    xla_ae_lines_pkg.set_ccid(
6132     p_code_combination_id          => l_ccid
6133   , p_value_type_code              => l_adr_value_type_code
6134   , p_transaction_coa_id           => l_adr_transaction_coa_id
6135   , p_accounting_coa_id            => l_adr_accounting_coa_id
6136   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
6137   , p_adr_type_code                => 'S'
6138   , p_component_type               => l_component_type
6139   , p_component_code               => l_component_code
6140   , p_component_type_code          => l_component_type_code
6141   , p_component_appl_id            => l_component_appl_id
6142   , p_amb_context_code             => l_amb_context_code
6143   , p_side                         => 'NA'
6144   );
6145 
6146 
6147    --
6148    --
6149    END IF;
6150    --
6151    -- Bug 4922099
6152    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6153           (NVL(l_enc_upg_option, 'N') = 'O')
6154         ) AND
6155         (l_bflow_method_code = 'PRIOR_ENTRY')
6156       )
6157    THEN
6158       IF
6159       --
6160       1 = 2
6161       --
6162       THEN
6166                                     ,p_token_1                 => 'LINE_NUMBER'
6163       xla_accounting_err_pkg.build_message
6164                                     (p_appli_s_name            => 'XLA'
6165                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6167                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6168                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6169                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6170                                                                              l_component_type
6171                                                                             ,l_component_code
6172                                                                             ,l_component_type_code
6173                                                                             ,l_component_appl_id
6174                                                                             ,l_amb_context_code
6175                                                                             ,l_entity_code
6176                                                                             ,l_event_class_code
6177                                                                            )
6178                                     ,p_token_3                 => 'OWNER'
6179                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6180                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6181                                                                           ,p_lookup_code    => l_component_type_code
6182                                                                          )
6183                                     ,p_token_4                 => 'PRODUCT_NAME'
6184                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6185                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6186                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6187                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6188                                     ,p_ae_header_id            =>  NULL
6189                                        );
6190 
6191         IF (C_LEVEL_ERROR>= g_log_level) THEN
6192                  trace
6193                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6194                       ,p_level    => C_LEVEL_ERROR
6195                       ,p_module   => l_log_module);
6196         END IF;
6197       END IF;
6198    END IF;
6199    --
6200    --
6201    ------------------------------------------------------------------------------------------------
6202    -- 4219869 Business Flow
6203    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6204    -- Prior Entry.  Currently, the following code is always generated.
6205    ------------------------------------------------------------------------------------------------
6206    XLA_AE_LINES_PKG.ValidateCurrentLine;
6207 
6208    ------------------------------------------------------------------------------------
6209    -- 4219869 Business Flow
6210    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6211    ------------------------------------------------------------------------------------
6212    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6213 
6214    ----------------------------------------------------------------------------------
6215    -- 4219869 Business Flow
6216    -- Update journal entry status -- Need to generate this within IF <condition>
6217    ----------------------------------------------------------------------------------
6218    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6219          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6220          ,p_balance_type_code => l_balance_type_code
6221          );
6222 
6223    -------------------------------------------------------------------------------------------
6224    -- 4262811 - Generate the Accrual Reversal lines
6225    -------------------------------------------------------------------------------------------
6226    BEGIN
6227       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6228                               (g_array_event(p_event_id).array_value_num('header_index'));
6229       IF l_acc_rev_flag IS NULL THEN
6230          l_acc_rev_flag := 'N';
6231       END IF;
6232    EXCEPTION
6233       WHEN OTHERS THEN
6234          l_acc_rev_flag := 'N';
6235    END;
6236    --
6237    IF (l_acc_rev_flag = 'Y') THEN
6238 
6239        -- 4645092  ------------------------------------------------------------------------------
6240        -- To allow MPA report to determine if it should generate report process
6241        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6242        ------------------------------------------------------------------------------------------
6243 
6244        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6245        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6246 
6247        --
6248        -- Update the line information that should be overwritten
6249        --
6250        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6251                                          p_header_num   => 1);
6252        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6253 
6254        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6255 
6256        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6257           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6258        END IF;
6259 
6260       --
6264           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6261       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6262       --
6263       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6265       ELSE
6266           ---------------------------------------------------------------------------------------------------
6267           -- 4262811a Switch Sign
6268           ---------------------------------------------------------------------------------------------------
6269           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6270           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6271                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6272           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6273                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6274           -- 5132302
6275           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6276                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6277 
6278       END IF;
6279 
6280       -- 4955764
6281       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6283 
6284 
6285       XLA_AE_LINES_PKG.ValidateCurrentLine;
6286       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6287 
6288       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6289                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6290                ,p_balance_type_code => l_balance_type_code);
6291 
6292    END IF;
6293 
6294    -----------------------------------------------------------------------------------------
6295    -- 4262811 Multiperiod Accounting
6296    -----------------------------------------------------------------------------------------
6297      -- No MPA option is assigned.
6298 
6299 
6300 END IF;
6301 END IF;
6302 --
6303 
6304 --
6305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6306    trace
6307       (p_msg      => 'END of AcctLineType_14'
6308       ,p_level    => C_LEVEL_PROCEDURE
6309       ,p_module   => l_log_module);
6310 END IF;
6311 --
6312 EXCEPTION
6313   WHEN xla_exceptions_pkg.application_exception THEN
6314       RAISE;
6315   WHEN OTHERS THEN
6316        xla_exceptions_pkg.raise_message
6317            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_14');
6318 END AcctLineType_14;
6319 --
6320 
6321 ---------------------------------------
6322 --
6323 -- PRIVATE FUNCTION
6324 --         AcctLineType_15
6325 --
6326 ---------------------------------------
6327 PROCEDURE AcctLineType_15 (
6328   p_application_id        IN NUMBER
6329  ,p_event_id              IN NUMBER
6330  ,p_calculate_acctd_flag  IN VARCHAR2
6331  ,p_calculate_g_l_flag    IN VARCHAR2
6332  ,p_actual_flag           IN OUT VARCHAR2
6333  ,p_balance_type_code     OUT VARCHAR2
6334  ,p_gain_or_loss_ref      OUT VARCHAR2
6335  
6336 --Investor Agreement Number
6337  , p_source_3            IN VARCHAR2
6338 --Investor Agreement Product Name
6339  , p_source_4            IN VARCHAR2
6340 --Distribution Account
6341  , p_source_5            IN NUMBER
6342 --Accounting Line Type
6343  , p_source_6            IN VARCHAR2
6344  , p_source_6_meaning    IN VARCHAR2
6345 --Accounting Distribution Identifier
6346  , p_source_7            IN NUMBER
6347 --Distribution Type
6348  , p_source_8            IN VARCHAR2
6349 --Distribution Entered Amount
6350  , p_source_9            IN NUMBER
6351 --Transaction Currency Code
6352  , p_source_10            IN VARCHAR2
6353 --Transaction Currency Conversion Date
6354  , p_source_11            IN DATE
6355 --Transaction Currency Conversion Rate
6356  , p_source_12            IN NUMBER
6357 --Transaction Currency Conversion Type
6358  , p_source_13            IN VARCHAR2
6359 )
6360 IS
6361 
6362 l_component_type              VARCHAR2(80);
6363 l_component_code              VARCHAR2(30);
6364 l_component_type_code         VARCHAR2(1);
6365 l_component_appl_id           INTEGER;
6366 l_amb_context_code            VARCHAR2(30);
6367 l_entity_code                 VARCHAR2(30);
6368 l_event_class_code            VARCHAR2(30);
6369 l_ae_header_id                NUMBER;
6370 l_event_type_code             VARCHAR2(30);
6371 l_line_definition_code        VARCHAR2(30);
6372 l_line_definition_owner_code  VARCHAR2(1);
6373 --
6374 -- adr variables
6375 l_segment                     VARCHAR2(30);
6376 l_ccid                        NUMBER;
6377 l_adr_transaction_coa_id      NUMBER;
6378 l_adr_accounting_coa_id       NUMBER;
6379 l_adr_flexfield_segment_code  VARCHAR2(30);
6380 l_adr_flex_value_set_id       NUMBER;
6381 l_adr_value_type_code         VARCHAR2(30);
6382 l_adr_value_combination_id    NUMBER;
6383 l_adr_value_segment_code      VARCHAR2(30);
6384 
6385 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6386 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6387 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6388 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6389 
6390 -- 4262811 Variables ------------------------------------------------------------------------------------------
6391 l_entered_amt_idx             NUMBER;
6392 l_accted_amt_idx              NUMBER;
6393 l_acc_rev_flag                VARCHAR2(1);
6394 l_accrual_line_num            NUMBER;
6398 l_num_entries                 NUMBER;
6395 l_tmp_amt                     NUMBER;
6396 l_acc_rev_natural_side_code   VARCHAR2(1);
6397 
6399 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6400 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6401 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6402 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6403 l_recog_line_1                NUMBER;
6404 l_recog_line_2                NUMBER;
6405 
6406 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6407 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6408 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6409 
6410 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6411 
6412 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6413 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6414 
6415 ---------------------------------------------------------------------------------------------------------------
6416 
6417 
6418 --
6419 -- bulk performance
6420 --
6421 l_balance_type_code           VARCHAR2(1);
6422 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6423 l_log_module                  VARCHAR2(240);
6424 
6425 --
6426 -- Upgrade strategy
6427 --
6428 l_actual_upg_option           VARCHAR2(1);
6429 l_enc_upg_option           VARCHAR2(1);
6430 
6431 --
6432 BEGIN
6433 --
6434 IF g_log_enabled THEN
6435       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
6436 END IF;
6437 --
6438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6439 
6440       trace
6441          (p_msg      => 'BEGIN of AcctLineType_15'
6442          ,p_level    => C_LEVEL_PROCEDURE
6443          ,p_module   => l_log_module);
6444 
6445 END IF;
6446 --
6447 l_component_type             := 'AMB_JLT';
6448 l_component_code             := 'OKL_INVESTOR_DR';
6449 l_component_type_code        := 'S';
6450 l_component_appl_id          :=  540;
6451 l_amb_context_code           := 'DEFAULT';
6452 l_entity_code                := 'INVESTOR_AGREEMENTS';
6453 l_event_class_code           := 'INVESTOR';
6454 l_event_type_code            := 'INVESTOR_ALL';
6455 l_line_definition_owner_code := 'S';
6456 l_line_definition_code       := 'OKL_INVESTOR';
6457 --
6458 l_balance_type_code          := 'A';
6459 l_segment                     := NULL;
6460 l_ccid                        := NULL;
6461 l_adr_transaction_coa_id      := NULL;
6462 l_adr_accounting_coa_id       := NULL;
6463 l_adr_flexfield_segment_code  := NULL;
6464 l_adr_flex_value_set_id       := NULL;
6465 l_adr_value_type_code         := NULL;
6466 l_adr_value_combination_id    := NULL;
6467 l_adr_value_segment_code      := NULL;
6468 
6469 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6470 l_bflow_class_code           := '';    -- 4219869 Business Flow
6471 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6472 l_budgetary_control_flag     := 'N';
6473 
6474 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6475 l_bflow_applied_to_amt       := NULL; -- 5132302
6476 l_entered_amt_idx            := NULL;          -- 4262811
6477 l_accted_amt_idx             := NULL;          -- 4262811
6478 l_acc_rev_flag               := NULL;          -- 4262811
6479 l_accrual_line_num           := NULL;          -- 4262811
6480 l_tmp_amt                    := NULL;          -- 4262811
6481 --
6482  
6483 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6484     l_balance_type_code <> 'B' THEN
6485 IF NVL(p_source_6,'
6486 ') =  'LEASE_DEBIT'
6487  THEN 
6488 
6489    --
6490    XLA_AE_LINES_PKG.SetNewLine;
6491 
6492    p_balance_type_code          := l_balance_type_code;
6493    -- set the flag so later we will know whether the gain loss line needs to be created
6494    
6495    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6496      p_actual_flag :='A';
6497    END IF;
6498 
6499    --
6500    -- bulk performance
6501    --
6502    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6503                                       p_header_num   => 0); -- 4262811
6504    --
6505    -- set accounting line options
6506    --
6507    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6508            p_natural_side_code          => 'D'
6509          , p_gain_or_loss_flag          => 'N'
6510          , p_gl_transfer_mode_code      => 'S'
6511          , p_acct_entry_type_code       => 'A'
6512          , p_switch_side_flag           => 'Y'
6513          , p_merge_duplicate_code       => 'N'
6514          );
6515    --
6516    l_acc_rev_natural_side_code := 'C';  -- 4262811
6517    -- 
6518    --
6519    -- set accounting line type info
6520    --
6521    xla_ae_lines_pkg.SetAcctLineType
6522       (p_component_type             => l_component_type
6523       ,p_event_type_code            => l_event_type_code
6524       ,p_line_definition_owner_code => l_line_definition_owner_code
6525       ,p_line_definition_code       => l_line_definition_code
6526       ,p_accounting_line_code       => l_component_code
6527       ,p_accounting_line_type_code  => l_component_type_code
6528       ,p_accounting_line_appl_id    => l_component_appl_id
6529       ,p_amb_context_code           => l_amb_context_code
6530       ,p_entity_code                => l_entity_code
6531       ,p_event_class_code           => l_event_class_code);
6532    --
6533    -- set accounting class
6534    --
6535    xla_ae_lines_pkg.SetAcctClass(
6536            p_accounting_class_code  => 'INVESTOR'
6537          , p_ae_header_id           => l_ae_header_id
6541    -- set rounding class
6538          );
6539 
6540    --
6542    --
6543    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6544                       'INVESTOR';
6545 
6546    --
6547    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6548    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6549    --
6550    -- bulk performance
6551    --
6552    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6553 
6554    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6555       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6556 
6557    -- 4955764
6558    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6559       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6560 
6561    -- 4458381 Public Sector Enh
6562    
6563    --
6564    -- set accounting attributes for the line type
6565    --
6566    l_entered_amt_idx := 3;
6567    l_accted_amt_idx  := NULL;
6568    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6569    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6570    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
6571    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6572    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
6573    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6574    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
6575    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6576    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
6577    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6578    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
6579    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6580    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
6581    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6582    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
6583 
6584    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6585    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6586 
6587    ---------------------------------------------------------------------------------------------------------------
6588    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6589    ---------------------------------------------------------------------------------------------------------------
6590    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6591 
6592    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6593    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6594 
6595    IF xla_accounting_cache_pkg.GetValueChar
6596          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6597          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6598    AND l_bflow_method_code = 'PRIOR_ENTRY'
6599 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6600    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6601          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6602        )
6603    THEN
6604          xla_ae_lines_pkg.BflowUpgEntry
6605            (p_business_method_code    => l_bflow_method_code
6606            ,p_business_class_code     => l_bflow_class_code
6607            ,p_balance_type            => l_balance_type_code);
6608    ELSE
6609       NULL;
6610 -- No business flow processing for business flow method of NONE.
6611    END IF;
6612 
6613    --
6614    -- call analytical criteria
6615    --
6616    
6617    --
6618    -- call description
6619    --
6620    
6621 xla_ae_lines_pkg.SetLineDescription(
6622    p_ae_header_id => l_ae_header_id
6623   ,p_description  => Description_2 (
6624      p_application_id         => p_application_id
6625    , p_ae_header_id           => l_ae_header_id 
6626 , p_source_3 => p_source_3
6627 , p_source_4 => p_source_4
6628    )
6629 );
6630 
6631 
6632    --
6633    -- call ADRs
6634    -- Bug 4922099
6635    --
6636    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6637         (NVL(l_actual_upg_option, 'N') = 'O') OR
6638         (NVL(l_enc_upg_option, 'N') = 'O')
6639       )
6640    THEN
6641    NULL;
6642    --
6643    --
6644    
6645   l_ccid := AcctDerRule_3(
6646            p_application_id           => p_application_id
6647          , p_ae_header_id             => l_ae_header_id 
6648 , p_source_5 => p_source_5
6649          , x_transaction_coa_id       => l_adr_transaction_coa_id
6650          , x_accounting_coa_id        => l_adr_accounting_coa_id
6651          , x_value_type_code          => l_adr_value_type_code
6652          , p_side                     => 'NA'
6653    );
6654 
6655    xla_ae_lines_pkg.set_ccid(
6656     p_code_combination_id          => l_ccid
6657   , p_value_type_code              => l_adr_value_type_code
6658   , p_transaction_coa_id           => l_adr_transaction_coa_id
6659   , p_accounting_coa_id            => l_adr_accounting_coa_id
6660   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
6661   , p_adr_type_code                => 'S'
6662   , p_component_type               => l_component_type
6663   , p_component_code               => l_component_code
6664   , p_component_type_code          => l_component_type_code
6665   , p_component_appl_id            => l_component_appl_id
6666   , p_amb_context_code             => l_amb_context_code
6667   , p_side                         => 'NA'
6668   );
6672    --
6669 
6670 
6671    --
6673    END IF;
6674    --
6675    -- Bug 4922099
6676    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6677           (NVL(l_enc_upg_option, 'N') = 'O')
6678         ) AND
6679         (l_bflow_method_code = 'PRIOR_ENTRY')
6680       )
6681    THEN
6682       IF
6683       --
6684       1 = 2
6685       --
6686       THEN
6687       xla_accounting_err_pkg.build_message
6688                                     (p_appli_s_name            => 'XLA'
6689                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6690                                     ,p_token_1                 => 'LINE_NUMBER'
6691                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6692                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6693                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6694                                                                              l_component_type
6695                                                                             ,l_component_code
6696                                                                             ,l_component_type_code
6697                                                                             ,l_component_appl_id
6698                                                                             ,l_amb_context_code
6699                                                                             ,l_entity_code
6700                                                                             ,l_event_class_code
6701                                                                            )
6702                                     ,p_token_3                 => 'OWNER'
6703                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6704                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6705                                                                           ,p_lookup_code    => l_component_type_code
6706                                                                          )
6707                                     ,p_token_4                 => 'PRODUCT_NAME'
6708                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6709                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6710                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6711                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6712                                     ,p_ae_header_id            =>  NULL
6713                                        );
6714 
6715         IF (C_LEVEL_ERROR>= g_log_level) THEN
6716                  trace
6717                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6718                       ,p_level    => C_LEVEL_ERROR
6719                       ,p_module   => l_log_module);
6720         END IF;
6721       END IF;
6722    END IF;
6723    --
6724    --
6725    ------------------------------------------------------------------------------------------------
6726    -- 4219869 Business Flow
6727    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6728    -- Prior Entry.  Currently, the following code is always generated.
6729    ------------------------------------------------------------------------------------------------
6730    XLA_AE_LINES_PKG.ValidateCurrentLine;
6731 
6732    ------------------------------------------------------------------------------------
6733    -- 4219869 Business Flow
6734    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6735    ------------------------------------------------------------------------------------
6736    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6737 
6738    ----------------------------------------------------------------------------------
6739    -- 4219869 Business Flow
6740    -- Update journal entry status -- Need to generate this within IF <condition>
6741    ----------------------------------------------------------------------------------
6742    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6743          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6744          ,p_balance_type_code => l_balance_type_code
6745          );
6746 
6747    -------------------------------------------------------------------------------------------
6748    -- 4262811 - Generate the Accrual Reversal lines
6749    -------------------------------------------------------------------------------------------
6750    BEGIN
6751       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6752                               (g_array_event(p_event_id).array_value_num('header_index'));
6753       IF l_acc_rev_flag IS NULL THEN
6754          l_acc_rev_flag := 'N';
6755       END IF;
6756    EXCEPTION
6757       WHEN OTHERS THEN
6758          l_acc_rev_flag := 'N';
6759    END;
6760    --
6761    IF (l_acc_rev_flag = 'Y') THEN
6762 
6763        -- 4645092  ------------------------------------------------------------------------------
6764        -- To allow MPA report to determine if it should generate report process
6765        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6766        ------------------------------------------------------------------------------------------
6767 
6768        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6769        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6770 
6771        --
6772        -- Update the line information that should be overwritten
6773        --
6774        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6775                                          p_header_num   => 1);
6779 
6776        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6777 
6778        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6780        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6781           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6782        END IF;
6783 
6784       --
6785       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6786       --
6787       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6788           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6789       ELSE
6790           ---------------------------------------------------------------------------------------------------
6791           -- 4262811a Switch Sign
6792           ---------------------------------------------------------------------------------------------------
6793           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6794           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6795                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6796           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6797                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6798           -- 5132302
6799           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6800                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6801 
6802       END IF;
6803 
6804       -- 4955764
6805       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6807 
6808 
6809       XLA_AE_LINES_PKG.ValidateCurrentLine;
6810       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6811 
6812       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6813                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6814                ,p_balance_type_code => l_balance_type_code);
6815 
6816    END IF;
6817 
6818    -----------------------------------------------------------------------------------------
6819    -- 4262811 Multiperiod Accounting
6820    -----------------------------------------------------------------------------------------
6821      -- No MPA option is assigned.
6822 
6823 
6824 END IF;
6825 END IF;
6826 --
6827 
6828 --
6829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6830    trace
6831       (p_msg      => 'END of AcctLineType_15'
6832       ,p_level    => C_LEVEL_PROCEDURE
6833       ,p_module   => l_log_module);
6834 END IF;
6835 --
6836 EXCEPTION
6837   WHEN xla_exceptions_pkg.application_exception THEN
6838       RAISE;
6839   WHEN OTHERS THEN
6840        xla_exceptions_pkg.raise_message
6841            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_15');
6842 END AcctLineType_15;
6843 --
6844 
6845 ---------------------------------------
6846 --
6847 -- PRIVATE FUNCTION
6848 --         AcctLineType_16
6849 --
6850 ---------------------------------------
6851 PROCEDURE AcctLineType_16 (
6852   p_application_id        IN NUMBER
6853  ,p_event_id              IN NUMBER
6854  ,p_calculate_acctd_flag  IN VARCHAR2
6855  ,p_calculate_g_l_flag    IN VARCHAR2
6856  ,p_actual_flag           IN OUT VARCHAR2
6857  ,p_balance_type_code     OUT VARCHAR2
6858  ,p_gain_or_loss_ref      OUT VARCHAR2
6859  
6860 --Contract Number
6861  , p_source_1            IN VARCHAR2
6862 --Contract Product Name
6863  , p_source_2            IN VARCHAR2
6864 --Distribution Account
6865  , p_source_5            IN NUMBER
6866 --Accounting Line Type
6867  , p_source_6            IN VARCHAR2
6868  , p_source_6_meaning    IN VARCHAR2
6869 --Accounting Distribution Identifier
6870  , p_source_7            IN NUMBER
6871 --Distribution Type
6872  , p_source_8            IN VARCHAR2
6873 --Distribution Entered Amount
6874  , p_source_9            IN NUMBER
6875 --Transaction Currency Code
6876  , p_source_10            IN VARCHAR2
6877 --Transaction Currency Conversion Date
6878  , p_source_11            IN DATE
6879 --Transaction Currency Conversion Rate
6880  , p_source_12            IN NUMBER
6881 --Transaction Currency Conversion Type
6882  , p_source_13            IN VARCHAR2
6883 )
6884 IS
6885 
6886 l_component_type              VARCHAR2(80);
6887 l_component_code              VARCHAR2(30);
6888 l_component_type_code         VARCHAR2(1);
6889 l_component_appl_id           INTEGER;
6890 l_amb_context_code            VARCHAR2(30);
6891 l_entity_code                 VARCHAR2(30);
6892 l_event_class_code            VARCHAR2(30);
6893 l_ae_header_id                NUMBER;
6894 l_event_type_code             VARCHAR2(30);
6895 l_line_definition_code        VARCHAR2(30);
6896 l_line_definition_owner_code  VARCHAR2(1);
6897 --
6898 -- adr variables
6899 l_segment                     VARCHAR2(30);
6900 l_ccid                        NUMBER;
6901 l_adr_transaction_coa_id      NUMBER;
6902 l_adr_accounting_coa_id       NUMBER;
6903 l_adr_flexfield_segment_code  VARCHAR2(30);
6904 l_adr_flex_value_set_id       NUMBER;
6905 l_adr_value_type_code         VARCHAR2(30);
6906 l_adr_value_combination_id    NUMBER;
6907 l_adr_value_segment_code      VARCHAR2(30);
6908 
6909 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6910 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6914 -- 4262811 Variables ------------------------------------------------------------------------------------------
6911 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6912 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6913 
6915 l_entered_amt_idx             NUMBER;
6916 l_accted_amt_idx              NUMBER;
6917 l_acc_rev_flag                VARCHAR2(1);
6918 l_accrual_line_num            NUMBER;
6919 l_tmp_amt                     NUMBER;
6920 l_acc_rev_natural_side_code   VARCHAR2(1);
6921 
6922 l_num_entries                 NUMBER;
6923 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6924 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6925 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6926 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6927 l_recog_line_1                NUMBER;
6928 l_recog_line_2                NUMBER;
6929 
6930 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6931 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6932 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6933 
6934 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6935 
6936 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6937 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6938 
6939 ---------------------------------------------------------------------------------------------------------------
6940 
6941 
6942 --
6943 -- bulk performance
6944 --
6945 l_balance_type_code           VARCHAR2(1);
6946 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6947 l_log_module                  VARCHAR2(240);
6948 
6949 --
6950 -- Upgrade strategy
6951 --
6952 l_actual_upg_option           VARCHAR2(1);
6953 l_enc_upg_option           VARCHAR2(1);
6954 
6955 --
6956 BEGIN
6957 --
6958 IF g_log_enabled THEN
6959       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
6960 END IF;
6961 --
6962 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6963 
6964       trace
6965          (p_msg      => 'BEGIN of AcctLineType_16'
6966          ,p_level    => C_LEVEL_PROCEDURE
6967          ,p_module   => l_log_module);
6968 
6969 END IF;
6970 --
6971 l_component_type             := 'AMB_JLT';
6972 l_component_code             := 'OKL_PRINCIPAL_ADJUSTMENT_CR';
6973 l_component_type_code        := 'S';
6974 l_component_appl_id          :=  540;
6975 l_amb_context_code           := 'DEFAULT';
6976 l_entity_code                := 'TRANSACTIONS';
6977 l_event_class_code           := 'PRINCIPAL_ADJUSTMENT';
6978 l_event_type_code            := 'PRINCIPAL_ADJUSTMENT_ALL';
6979 l_line_definition_owner_code := 'S';
6980 l_line_definition_code       := 'OKL_PRINCIPAL_ADJUSTMENT';
6981 --
6982 l_balance_type_code          := 'A';
6983 l_segment                     := NULL;
6984 l_ccid                        := NULL;
6985 l_adr_transaction_coa_id      := NULL;
6986 l_adr_accounting_coa_id       := NULL;
6987 l_adr_flexfield_segment_code  := NULL;
6988 l_adr_flex_value_set_id       := NULL;
6989 l_adr_value_type_code         := NULL;
6990 l_adr_value_combination_id    := NULL;
6991 l_adr_value_segment_code      := NULL;
6992 
6993 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6994 l_bflow_class_code           := '';    -- 4219869 Business Flow
6995 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6996 l_budgetary_control_flag     := 'N';
6997 
6998 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6999 l_bflow_applied_to_amt       := NULL; -- 5132302
7000 l_entered_amt_idx            := NULL;          -- 4262811
7001 l_accted_amt_idx             := NULL;          -- 4262811
7002 l_acc_rev_flag               := NULL;          -- 4262811
7003 l_accrual_line_num           := NULL;          -- 4262811
7004 l_tmp_amt                    := NULL;          -- 4262811
7005 --
7006  
7007 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7008     l_balance_type_code <> 'B' THEN
7009 IF NVL(p_source_6,'
7010 ') =  'LEASE_CREDIT'
7011  THEN 
7012 
7013    --
7014    XLA_AE_LINES_PKG.SetNewLine;
7015 
7016    p_balance_type_code          := l_balance_type_code;
7017    -- set the flag so later we will know whether the gain loss line needs to be created
7018    
7019    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7020      p_actual_flag :='A';
7021    END IF;
7022 
7023    --
7024    -- bulk performance
7025    --
7026    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7027                                       p_header_num   => 0); -- 4262811
7028    --
7029    -- set accounting line options
7030    --
7031    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7032            p_natural_side_code          => 'C'
7033          , p_gain_or_loss_flag          => 'N'
7034          , p_gl_transfer_mode_code      => 'S'
7035          , p_acct_entry_type_code       => 'A'
7036          , p_switch_side_flag           => 'Y'
7037          , p_merge_duplicate_code       => 'N'
7038          );
7039    --
7040    l_acc_rev_natural_side_code := 'D';  -- 4262811
7041    -- 
7042    --
7043    -- set accounting line type info
7044    --
7045    xla_ae_lines_pkg.SetAcctLineType
7046       (p_component_type             => l_component_type
7047       ,p_event_type_code            => l_event_type_code
7048       ,p_line_definition_owner_code => l_line_definition_owner_code
7049       ,p_line_definition_code       => l_line_definition_code
7050       ,p_accounting_line_code       => l_component_code
7054       ,p_entity_code                => l_entity_code
7051       ,p_accounting_line_type_code  => l_component_type_code
7052       ,p_accounting_line_appl_id    => l_component_appl_id
7053       ,p_amb_context_code           => l_amb_context_code
7055       ,p_event_class_code           => l_event_class_code);
7056    --
7057    -- set accounting class
7058    --
7059    xla_ae_lines_pkg.SetAcctClass(
7060            p_accounting_class_code  => 'PRINCIPAL_ADJUSTMENT'
7061          , p_ae_header_id           => l_ae_header_id
7062          );
7063 
7064    --
7065    -- set rounding class
7066    --
7067    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7068                       'PRINCIPAL_ADJUSTMENT';
7069 
7070    --
7071    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7072    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7073    --
7074    -- bulk performance
7075    --
7076    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7077 
7078    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7079       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7080 
7081    -- 4955764
7082    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7083       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7084 
7085    -- 4458381 Public Sector Enh
7086    
7087    --
7088    -- set accounting attributes for the line type
7089    --
7090    l_entered_amt_idx := 3;
7091    l_accted_amt_idx  := NULL;
7092    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7093    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7094    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
7095    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7096    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
7097    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7098    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
7099    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7100    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
7101    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7102    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
7103    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7104    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
7105    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7106    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
7107 
7108    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7109    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7110 
7111    ---------------------------------------------------------------------------------------------------------------
7112    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7113    ---------------------------------------------------------------------------------------------------------------
7114    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7115 
7116    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7117    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7118 
7119    IF xla_accounting_cache_pkg.GetValueChar
7120          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7121          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7122    AND l_bflow_method_code = 'PRIOR_ENTRY'
7123 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7124    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7125          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7126        )
7127    THEN
7128          xla_ae_lines_pkg.BflowUpgEntry
7129            (p_business_method_code    => l_bflow_method_code
7130            ,p_business_class_code     => l_bflow_class_code
7131            ,p_balance_type            => l_balance_type_code);
7132    ELSE
7133       NULL;
7134 -- No business flow processing for business flow method of NONE.
7135    END IF;
7136 
7137    --
7138    -- call analytical criteria
7139    --
7140    
7141    --
7142    -- call description
7143    --
7144    
7145 xla_ae_lines_pkg.SetLineDescription(
7146    p_ae_header_id => l_ae_header_id
7147   ,p_description  => Description_1 (
7148      p_application_id         => p_application_id
7149    , p_ae_header_id           => l_ae_header_id 
7150 , p_source_1 => p_source_1
7151 , p_source_2 => p_source_2
7152    )
7153 );
7154 
7155 
7156    --
7157    -- call ADRs
7158    -- Bug 4922099
7159    --
7160    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7161         (NVL(l_actual_upg_option, 'N') = 'O') OR
7162         (NVL(l_enc_upg_option, 'N') = 'O')
7163       )
7164    THEN
7165    NULL;
7166    --
7167    --
7168    
7169   l_ccid := AcctDerRule_3(
7170            p_application_id           => p_application_id
7171          , p_ae_header_id             => l_ae_header_id 
7172 , p_source_5 => p_source_5
7173          , x_transaction_coa_id       => l_adr_transaction_coa_id
7174          , x_accounting_coa_id        => l_adr_accounting_coa_id
7175          , x_value_type_code          => l_adr_value_type_code
7176          , p_side                     => 'NA'
7177    );
7178 
7179    xla_ae_lines_pkg.set_ccid(
7180     p_code_combination_id          => l_ccid
7181   , p_value_type_code              => l_adr_value_type_code
7185   , p_adr_type_code                => 'S'
7182   , p_transaction_coa_id           => l_adr_transaction_coa_id
7183   , p_accounting_coa_id            => l_adr_accounting_coa_id
7184   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
7186   , p_component_type               => l_component_type
7187   , p_component_code               => l_component_code
7188   , p_component_type_code          => l_component_type_code
7189   , p_component_appl_id            => l_component_appl_id
7190   , p_amb_context_code             => l_amb_context_code
7191   , p_side                         => 'NA'
7192   );
7193 
7194 
7195    --
7196    --
7197    END IF;
7198    --
7199    -- Bug 4922099
7200    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7201           (NVL(l_enc_upg_option, 'N') = 'O')
7202         ) AND
7203         (l_bflow_method_code = 'PRIOR_ENTRY')
7204       )
7205    THEN
7206       IF
7207       --
7208       1 = 2
7209       --
7210       THEN
7211       xla_accounting_err_pkg.build_message
7212                                     (p_appli_s_name            => 'XLA'
7213                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7214                                     ,p_token_1                 => 'LINE_NUMBER'
7215                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7216                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7217                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7218                                                                              l_component_type
7219                                                                             ,l_component_code
7220                                                                             ,l_component_type_code
7221                                                                             ,l_component_appl_id
7222                                                                             ,l_amb_context_code
7223                                                                             ,l_entity_code
7224                                                                             ,l_event_class_code
7225                                                                            )
7226                                     ,p_token_3                 => 'OWNER'
7227                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7228                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7229                                                                           ,p_lookup_code    => l_component_type_code
7230                                                                          )
7231                                     ,p_token_4                 => 'PRODUCT_NAME'
7232                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7233                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7234                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7235                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7236                                     ,p_ae_header_id            =>  NULL
7237                                        );
7238 
7239         IF (C_LEVEL_ERROR>= g_log_level) THEN
7240                  trace
7241                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7242                       ,p_level    => C_LEVEL_ERROR
7243                       ,p_module   => l_log_module);
7244         END IF;
7245       END IF;
7246    END IF;
7247    --
7248    --
7249    ------------------------------------------------------------------------------------------------
7250    -- 4219869 Business Flow
7251    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7252    -- Prior Entry.  Currently, the following code is always generated.
7253    ------------------------------------------------------------------------------------------------
7254    XLA_AE_LINES_PKG.ValidateCurrentLine;
7255 
7256    ------------------------------------------------------------------------------------
7257    -- 4219869 Business Flow
7258    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7259    ------------------------------------------------------------------------------------
7260    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7261 
7262    ----------------------------------------------------------------------------------
7263    -- 4219869 Business Flow
7264    -- Update journal entry status -- Need to generate this within IF <condition>
7265    ----------------------------------------------------------------------------------
7266    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7267          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7268          ,p_balance_type_code => l_balance_type_code
7269          );
7270 
7271    -------------------------------------------------------------------------------------------
7272    -- 4262811 - Generate the Accrual Reversal lines
7273    -------------------------------------------------------------------------------------------
7274    BEGIN
7275       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7276                               (g_array_event(p_event_id).array_value_num('header_index'));
7277       IF l_acc_rev_flag IS NULL THEN
7278          l_acc_rev_flag := 'N';
7279       END IF;
7280    EXCEPTION
7281       WHEN OTHERS THEN
7282          l_acc_rev_flag := 'N';
7283    END;
7284    --
7285    IF (l_acc_rev_flag = 'Y') THEN
7286 
7287        -- 4645092  ------------------------------------------------------------------------------
7288        -- To allow MPA report to determine if it should generate report process
7292        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7289        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7290        ------------------------------------------------------------------------------------------
7291 
7293        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7294 
7295        --
7296        -- Update the line information that should be overwritten
7297        --
7298        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7299                                          p_header_num   => 1);
7300        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7301 
7302        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7303 
7304        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7305           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7306        END IF;
7307 
7308       --
7309       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7310       --
7311       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7312           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7313       ELSE
7314           ---------------------------------------------------------------------------------------------------
7315           -- 4262811a Switch Sign
7316           ---------------------------------------------------------------------------------------------------
7317           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7318           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7319                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7320           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7321                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7322           -- 5132302
7323           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7324                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7325 
7326       END IF;
7327 
7328       -- 4955764
7329       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7331 
7332 
7333       XLA_AE_LINES_PKG.ValidateCurrentLine;
7334       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7335 
7336       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7337                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7338                ,p_balance_type_code => l_balance_type_code);
7339 
7340    END IF;
7341 
7342    -----------------------------------------------------------------------------------------
7343    -- 4262811 Multiperiod Accounting
7344    -----------------------------------------------------------------------------------------
7345      -- No MPA option is assigned.
7346 
7347 
7348 END IF;
7349 END IF;
7350 --
7351 
7352 --
7353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7354    trace
7355       (p_msg      => 'END of AcctLineType_16'
7356       ,p_level    => C_LEVEL_PROCEDURE
7357       ,p_module   => l_log_module);
7358 END IF;
7359 --
7360 EXCEPTION
7361   WHEN xla_exceptions_pkg.application_exception THEN
7362       RAISE;
7363   WHEN OTHERS THEN
7364        xla_exceptions_pkg.raise_message
7365            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_16');
7366 END AcctLineType_16;
7367 --
7368 
7369 ---------------------------------------
7370 --
7371 -- PRIVATE FUNCTION
7372 --         AcctLineType_17
7373 --
7374 ---------------------------------------
7375 PROCEDURE AcctLineType_17 (
7376   p_application_id        IN NUMBER
7377  ,p_event_id              IN NUMBER
7378  ,p_calculate_acctd_flag  IN VARCHAR2
7379  ,p_calculate_g_l_flag    IN VARCHAR2
7380  ,p_actual_flag           IN OUT VARCHAR2
7381  ,p_balance_type_code     OUT VARCHAR2
7382  ,p_gain_or_loss_ref      OUT VARCHAR2
7383  
7384 --Contract Number
7385  , p_source_1            IN VARCHAR2
7386 --Contract Product Name
7387  , p_source_2            IN VARCHAR2
7388 --Distribution Account
7389  , p_source_5            IN NUMBER
7390 --Accounting Line Type
7391  , p_source_6            IN VARCHAR2
7392  , p_source_6_meaning    IN VARCHAR2
7393 --Accounting Distribution Identifier
7394  , p_source_7            IN NUMBER
7395 --Distribution Type
7396  , p_source_8            IN VARCHAR2
7397 --Distribution Entered Amount
7398  , p_source_9            IN NUMBER
7399 --Transaction Currency Code
7400  , p_source_10            IN VARCHAR2
7401 --Transaction Currency Conversion Date
7402  , p_source_11            IN DATE
7403 --Transaction Currency Conversion Rate
7404  , p_source_12            IN NUMBER
7405 --Transaction Currency Conversion Type
7406  , p_source_13            IN VARCHAR2
7407 )
7408 IS
7409 
7410 l_component_type              VARCHAR2(80);
7411 l_component_code              VARCHAR2(30);
7412 l_component_type_code         VARCHAR2(1);
7413 l_component_appl_id           INTEGER;
7414 l_amb_context_code            VARCHAR2(30);
7415 l_entity_code                 VARCHAR2(30);
7416 l_event_class_code            VARCHAR2(30);
7417 l_ae_header_id                NUMBER;
7418 l_event_type_code             VARCHAR2(30);
7419 l_line_definition_code        VARCHAR2(30);
7420 l_line_definition_owner_code  VARCHAR2(1);
7421 --
7422 -- adr variables
7423 l_segment                     VARCHAR2(30);
7427 l_adr_flexfield_segment_code  VARCHAR2(30);
7424 l_ccid                        NUMBER;
7425 l_adr_transaction_coa_id      NUMBER;
7426 l_adr_accounting_coa_id       NUMBER;
7428 l_adr_flex_value_set_id       NUMBER;
7429 l_adr_value_type_code         VARCHAR2(30);
7430 l_adr_value_combination_id    NUMBER;
7431 l_adr_value_segment_code      VARCHAR2(30);
7432 
7433 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7434 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7435 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7436 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7437 
7438 -- 4262811 Variables ------------------------------------------------------------------------------------------
7439 l_entered_amt_idx             NUMBER;
7440 l_accted_amt_idx              NUMBER;
7441 l_acc_rev_flag                VARCHAR2(1);
7442 l_accrual_line_num            NUMBER;
7443 l_tmp_amt                     NUMBER;
7444 l_acc_rev_natural_side_code   VARCHAR2(1);
7445 
7446 l_num_entries                 NUMBER;
7447 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7448 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7449 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7450 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7451 l_recog_line_1                NUMBER;
7452 l_recog_line_2                NUMBER;
7453 
7454 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7455 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7456 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7457 
7458 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7459 
7460 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7461 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7462 
7463 ---------------------------------------------------------------------------------------------------------------
7464 
7465 
7466 --
7467 -- bulk performance
7468 --
7469 l_balance_type_code           VARCHAR2(1);
7470 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7471 l_log_module                  VARCHAR2(240);
7472 
7473 --
7474 -- Upgrade strategy
7475 --
7476 l_actual_upg_option           VARCHAR2(1);
7477 l_enc_upg_option           VARCHAR2(1);
7478 
7479 --
7480 BEGIN
7481 --
7482 IF g_log_enabled THEN
7483       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7484 END IF;
7485 --
7486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7487 
7488       trace
7489          (p_msg      => 'BEGIN of AcctLineType_17'
7490          ,p_level    => C_LEVEL_PROCEDURE
7491          ,p_module   => l_log_module);
7492 
7493 END IF;
7494 --
7495 l_component_type             := 'AMB_JLT';
7496 l_component_code             := 'OKL_PRINCIPAL_ADJUSTMENT_DR';
7497 l_component_type_code        := 'S';
7498 l_component_appl_id          :=  540;
7499 l_amb_context_code           := 'DEFAULT';
7500 l_entity_code                := 'TRANSACTIONS';
7501 l_event_class_code           := 'PRINCIPAL_ADJUSTMENT';
7502 l_event_type_code            := 'PRINCIPAL_ADJUSTMENT_ALL';
7503 l_line_definition_owner_code := 'S';
7504 l_line_definition_code       := 'OKL_PRINCIPAL_ADJUSTMENT';
7505 --
7506 l_balance_type_code          := 'A';
7507 l_segment                     := NULL;
7508 l_ccid                        := NULL;
7509 l_adr_transaction_coa_id      := NULL;
7510 l_adr_accounting_coa_id       := NULL;
7511 l_adr_flexfield_segment_code  := NULL;
7512 l_adr_flex_value_set_id       := NULL;
7513 l_adr_value_type_code         := NULL;
7514 l_adr_value_combination_id    := NULL;
7515 l_adr_value_segment_code      := NULL;
7516 
7517 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7518 l_bflow_class_code           := '';    -- 4219869 Business Flow
7519 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7520 l_budgetary_control_flag     := 'N';
7521 
7522 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7523 l_bflow_applied_to_amt       := NULL; -- 5132302
7524 l_entered_amt_idx            := NULL;          -- 4262811
7525 l_accted_amt_idx             := NULL;          -- 4262811
7526 l_acc_rev_flag               := NULL;          -- 4262811
7527 l_accrual_line_num           := NULL;          -- 4262811
7528 l_tmp_amt                    := NULL;          -- 4262811
7529 --
7530  
7531 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7532     l_balance_type_code <> 'B' THEN
7533 IF NVL(p_source_6,'
7534 ') =  'LEASE_DEBIT'
7535  THEN 
7536 
7537    --
7538    XLA_AE_LINES_PKG.SetNewLine;
7539 
7540    p_balance_type_code          := l_balance_type_code;
7541    -- set the flag so later we will know whether the gain loss line needs to be created
7542    
7543    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7544      p_actual_flag :='A';
7545    END IF;
7546 
7547    --
7548    -- bulk performance
7549    --
7550    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7551                                       p_header_num   => 0); -- 4262811
7552    --
7553    -- set accounting line options
7554    --
7555    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7556            p_natural_side_code          => 'D'
7557          , p_gain_or_loss_flag          => 'N'
7558          , p_gl_transfer_mode_code      => 'S'
7559          , p_acct_entry_type_code       => 'A'
7560          , p_switch_side_flag           => 'Y'
7561          , p_merge_duplicate_code       => 'N'
7562          );
7563    --
7567    -- set accounting line type info
7564    l_acc_rev_natural_side_code := 'C';  -- 4262811
7565    -- 
7566    --
7568    --
7569    xla_ae_lines_pkg.SetAcctLineType
7570       (p_component_type             => l_component_type
7571       ,p_event_type_code            => l_event_type_code
7572       ,p_line_definition_owner_code => l_line_definition_owner_code
7573       ,p_line_definition_code       => l_line_definition_code
7574       ,p_accounting_line_code       => l_component_code
7575       ,p_accounting_line_type_code  => l_component_type_code
7576       ,p_accounting_line_appl_id    => l_component_appl_id
7577       ,p_amb_context_code           => l_amb_context_code
7578       ,p_entity_code                => l_entity_code
7579       ,p_event_class_code           => l_event_class_code);
7580    --
7581    -- set accounting class
7582    --
7583    xla_ae_lines_pkg.SetAcctClass(
7584            p_accounting_class_code  => 'PRINCIPAL_ADJUSTMENT'
7585          , p_ae_header_id           => l_ae_header_id
7586          );
7587 
7588    --
7589    -- set rounding class
7590    --
7591    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7592                       'PRINCIPAL_ADJUSTMENT';
7593 
7594    --
7595    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7596    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7597    --
7598    -- bulk performance
7599    --
7600    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7601 
7602    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7603       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7604 
7605    -- 4955764
7606    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7607       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7608 
7609    -- 4458381 Public Sector Enh
7610    
7611    --
7612    -- set accounting attributes for the line type
7613    --
7614    l_entered_amt_idx := 3;
7615    l_accted_amt_idx  := NULL;
7616    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7617    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7618    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
7619    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7620    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
7621    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7622    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
7623    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7624    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
7625    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7626    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
7627    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7628    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
7629    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7630    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
7631 
7632    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7633    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7634 
7635    ---------------------------------------------------------------------------------------------------------------
7636    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7637    ---------------------------------------------------------------------------------------------------------------
7638    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7639 
7640    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7641    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7642 
7643    IF xla_accounting_cache_pkg.GetValueChar
7644          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7645          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7646    AND l_bflow_method_code = 'PRIOR_ENTRY'
7647 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7648    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7649          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7650        )
7651    THEN
7652          xla_ae_lines_pkg.BflowUpgEntry
7653            (p_business_method_code    => l_bflow_method_code
7654            ,p_business_class_code     => l_bflow_class_code
7655            ,p_balance_type            => l_balance_type_code);
7656    ELSE
7657       NULL;
7658 -- No business flow processing for business flow method of NONE.
7659    END IF;
7660 
7661    --
7662    -- call analytical criteria
7663    --
7664    
7665    --
7666    -- call description
7667    --
7668    
7669 xla_ae_lines_pkg.SetLineDescription(
7670    p_ae_header_id => l_ae_header_id
7671   ,p_description  => Description_1 (
7672      p_application_id         => p_application_id
7673    , p_ae_header_id           => l_ae_header_id 
7674 , p_source_1 => p_source_1
7675 , p_source_2 => p_source_2
7676    )
7677 );
7678 
7679 
7680    --
7681    -- call ADRs
7682    -- Bug 4922099
7683    --
7684    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7685         (NVL(l_actual_upg_option, 'N') = 'O') OR
7686         (NVL(l_enc_upg_option, 'N') = 'O')
7687       )
7688    THEN
7689    NULL;
7690    --
7691    --
7692    
7693   l_ccid := AcctDerRule_3(
7694            p_application_id           => p_application_id
7695          , p_ae_header_id             => l_ae_header_id 
7699          , x_value_type_code          => l_adr_value_type_code
7696 , p_source_5 => p_source_5
7697          , x_transaction_coa_id       => l_adr_transaction_coa_id
7698          , x_accounting_coa_id        => l_adr_accounting_coa_id
7700          , p_side                     => 'NA'
7701    );
7702 
7703    xla_ae_lines_pkg.set_ccid(
7704     p_code_combination_id          => l_ccid
7705   , p_value_type_code              => l_adr_value_type_code
7706   , p_transaction_coa_id           => l_adr_transaction_coa_id
7707   , p_accounting_coa_id            => l_adr_accounting_coa_id
7708   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
7709   , p_adr_type_code                => 'S'
7710   , p_component_type               => l_component_type
7711   , p_component_code               => l_component_code
7712   , p_component_type_code          => l_component_type_code
7713   , p_component_appl_id            => l_component_appl_id
7714   , p_amb_context_code             => l_amb_context_code
7715   , p_side                         => 'NA'
7716   );
7717 
7718 
7719    --
7720    --
7721    END IF;
7722    --
7723    -- Bug 4922099
7724    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7725           (NVL(l_enc_upg_option, 'N') = 'O')
7726         ) AND
7727         (l_bflow_method_code = 'PRIOR_ENTRY')
7728       )
7729    THEN
7730       IF
7731       --
7732       1 = 2
7733       --
7734       THEN
7735       xla_accounting_err_pkg.build_message
7736                                     (p_appli_s_name            => 'XLA'
7737                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7738                                     ,p_token_1                 => 'LINE_NUMBER'
7739                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7740                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7741                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7742                                                                              l_component_type
7743                                                                             ,l_component_code
7744                                                                             ,l_component_type_code
7745                                                                             ,l_component_appl_id
7746                                                                             ,l_amb_context_code
7747                                                                             ,l_entity_code
7748                                                                             ,l_event_class_code
7749                                                                            )
7750                                     ,p_token_3                 => 'OWNER'
7751                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7752                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7753                                                                           ,p_lookup_code    => l_component_type_code
7754                                                                          )
7755                                     ,p_token_4                 => 'PRODUCT_NAME'
7756                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7757                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7758                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7759                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7760                                     ,p_ae_header_id            =>  NULL
7761                                        );
7762 
7763         IF (C_LEVEL_ERROR>= g_log_level) THEN
7764                  trace
7765                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7766                       ,p_level    => C_LEVEL_ERROR
7767                       ,p_module   => l_log_module);
7768         END IF;
7769       END IF;
7770    END IF;
7771    --
7772    --
7773    ------------------------------------------------------------------------------------------------
7774    -- 4219869 Business Flow
7775    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7776    -- Prior Entry.  Currently, the following code is always generated.
7777    ------------------------------------------------------------------------------------------------
7778    XLA_AE_LINES_PKG.ValidateCurrentLine;
7779 
7780    ------------------------------------------------------------------------------------
7781    -- 4219869 Business Flow
7782    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7783    ------------------------------------------------------------------------------------
7784    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7785 
7786    ----------------------------------------------------------------------------------
7787    -- 4219869 Business Flow
7788    -- Update journal entry status -- Need to generate this within IF <condition>
7789    ----------------------------------------------------------------------------------
7790    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7791          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7792          ,p_balance_type_code => l_balance_type_code
7793          );
7794 
7795    -------------------------------------------------------------------------------------------
7796    -- 4262811 - Generate the Accrual Reversal lines
7797    -------------------------------------------------------------------------------------------
7798    BEGIN
7799       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7800                               (g_array_event(p_event_id).array_value_num('header_index'));
7804    EXCEPTION
7801       IF l_acc_rev_flag IS NULL THEN
7802          l_acc_rev_flag := 'N';
7803       END IF;
7805       WHEN OTHERS THEN
7806          l_acc_rev_flag := 'N';
7807    END;
7808    --
7809    IF (l_acc_rev_flag = 'Y') THEN
7810 
7811        -- 4645092  ------------------------------------------------------------------------------
7812        -- To allow MPA report to determine if it should generate report process
7813        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7814        ------------------------------------------------------------------------------------------
7815 
7816        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7817        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7818 
7819        --
7820        -- Update the line information that should be overwritten
7821        --
7822        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7823                                          p_header_num   => 1);
7824        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7825 
7826        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7827 
7828        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7829           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7830        END IF;
7831 
7832       --
7833       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7834       --
7835       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7836           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7837       ELSE
7838           ---------------------------------------------------------------------------------------------------
7839           -- 4262811a Switch Sign
7840           ---------------------------------------------------------------------------------------------------
7841           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7842           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7843                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7844           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7845                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7846           -- 5132302
7847           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7848                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7849 
7850       END IF;
7851 
7852       -- 4955764
7853       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7855 
7856 
7857       XLA_AE_LINES_PKG.ValidateCurrentLine;
7858       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7859 
7860       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7861                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7862                ,p_balance_type_code => l_balance_type_code);
7863 
7864    END IF;
7865 
7866    -----------------------------------------------------------------------------------------
7867    -- 4262811 Multiperiod Accounting
7868    -----------------------------------------------------------------------------------------
7869      -- No MPA option is assigned.
7870 
7871 
7872 END IF;
7873 END IF;
7874 --
7875 
7876 --
7877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7878    trace
7879       (p_msg      => 'END of AcctLineType_17'
7880       ,p_level    => C_LEVEL_PROCEDURE
7881       ,p_module   => l_log_module);
7882 END IF;
7883 --
7884 EXCEPTION
7885   WHEN xla_exceptions_pkg.application_exception THEN
7886       RAISE;
7887   WHEN OTHERS THEN
7888        xla_exceptions_pkg.raise_message
7889            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_17');
7890 END AcctLineType_17;
7891 --
7892 
7893 ---------------------------------------
7894 --
7895 -- PRIVATE FUNCTION
7896 --         AcctLineType_18
7897 --
7898 ---------------------------------------
7899 PROCEDURE AcctLineType_18 (
7900   p_application_id        IN NUMBER
7901  ,p_event_id              IN NUMBER
7902  ,p_calculate_acctd_flag  IN VARCHAR2
7903  ,p_calculate_g_l_flag    IN VARCHAR2
7904  ,p_actual_flag           IN OUT VARCHAR2
7905  ,p_balance_type_code     OUT VARCHAR2
7906  ,p_gain_or_loss_ref      OUT VARCHAR2
7907  
7908 --Contract Number
7909  , p_source_1            IN VARCHAR2
7910 --Contract Product Name
7911  , p_source_2            IN VARCHAR2
7912 --Distribution Account
7913  , p_source_5            IN NUMBER
7914 --Accounting Line Type
7915  , p_source_6            IN VARCHAR2
7916  , p_source_6_meaning    IN VARCHAR2
7917 --Accounting Distribution Identifier
7918  , p_source_7            IN NUMBER
7919 --Distribution Type
7920  , p_source_8            IN VARCHAR2
7921 --Distribution Entered Amount
7922  , p_source_9            IN NUMBER
7923 --Transaction Currency Code
7924  , p_source_10            IN VARCHAR2
7925 --Transaction Currency Conversion Date
7926  , p_source_11            IN DATE
7927 --Transaction Currency Conversion Rate
7928  , p_source_12            IN NUMBER
7929 --Transaction Currency Conversion Type
7930  , p_source_13            IN VARCHAR2
7931 )
7932 IS
7933 
7934 l_component_type              VARCHAR2(80);
7935 l_component_code              VARCHAR2(30);
7936 l_component_type_code         VARCHAR2(1);
7940 l_event_class_code            VARCHAR2(30);
7937 l_component_appl_id           INTEGER;
7938 l_amb_context_code            VARCHAR2(30);
7939 l_entity_code                 VARCHAR2(30);
7941 l_ae_header_id                NUMBER;
7942 l_event_type_code             VARCHAR2(30);
7943 l_line_definition_code        VARCHAR2(30);
7944 l_line_definition_owner_code  VARCHAR2(1);
7945 --
7946 -- adr variables
7947 l_segment                     VARCHAR2(30);
7948 l_ccid                        NUMBER;
7949 l_adr_transaction_coa_id      NUMBER;
7950 l_adr_accounting_coa_id       NUMBER;
7951 l_adr_flexfield_segment_code  VARCHAR2(30);
7952 l_adr_flex_value_set_id       NUMBER;
7953 l_adr_value_type_code         VARCHAR2(30);
7954 l_adr_value_combination_id    NUMBER;
7955 l_adr_value_segment_code      VARCHAR2(30);
7956 
7957 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7958 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7959 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7960 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7961 
7962 -- 4262811 Variables ------------------------------------------------------------------------------------------
7963 l_entered_amt_idx             NUMBER;
7964 l_accted_amt_idx              NUMBER;
7965 l_acc_rev_flag                VARCHAR2(1);
7966 l_accrual_line_num            NUMBER;
7967 l_tmp_amt                     NUMBER;
7968 l_acc_rev_natural_side_code   VARCHAR2(1);
7969 
7970 l_num_entries                 NUMBER;
7971 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7972 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7973 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7974 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7975 l_recog_line_1                NUMBER;
7976 l_recog_line_2                NUMBER;
7977 
7978 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7979 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7980 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7981 
7982 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7983 
7984 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7985 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7986 
7987 ---------------------------------------------------------------------------------------------------------------
7988 
7989 
7990 --
7991 -- bulk performance
7992 --
7993 l_balance_type_code           VARCHAR2(1);
7994 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7995 l_log_module                  VARCHAR2(240);
7996 
7997 --
7998 -- Upgrade strategy
7999 --
8000 l_actual_upg_option           VARCHAR2(1);
8001 l_enc_upg_option           VARCHAR2(1);
8002 
8003 --
8004 BEGIN
8005 --
8006 IF g_log_enabled THEN
8007       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8008 END IF;
8009 --
8010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8011 
8012       trace
8013          (p_msg      => 'BEGIN of AcctLineType_18'
8014          ,p_level    => C_LEVEL_PROCEDURE
8015          ,p_module   => l_log_module);
8016 
8017 END IF;
8018 --
8019 l_component_type             := 'AMB_JLT';
8020 l_component_code             := 'OKL_REBOOK_CR';
8021 l_component_type_code        := 'S';
8022 l_component_appl_id          :=  540;
8023 l_amb_context_code           := 'DEFAULT';
8024 l_entity_code                := 'CONTRACTS';
8025 l_event_class_code           := 'REBOOK';
8026 l_event_type_code            := 'REBOOK_ALL';
8027 l_line_definition_owner_code := 'S';
8028 l_line_definition_code       := 'OKL_REBOOK';
8029 --
8030 l_balance_type_code          := 'A';
8031 l_segment                     := NULL;
8032 l_ccid                        := NULL;
8033 l_adr_transaction_coa_id      := NULL;
8034 l_adr_accounting_coa_id       := NULL;
8035 l_adr_flexfield_segment_code  := NULL;
8036 l_adr_flex_value_set_id       := NULL;
8037 l_adr_value_type_code         := NULL;
8038 l_adr_value_combination_id    := NULL;
8039 l_adr_value_segment_code      := NULL;
8040 
8041 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8042 l_bflow_class_code           := '';    -- 4219869 Business Flow
8043 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8044 l_budgetary_control_flag     := 'N';
8045 
8046 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8047 l_bflow_applied_to_amt       := NULL; -- 5132302
8048 l_entered_amt_idx            := NULL;          -- 4262811
8049 l_accted_amt_idx             := NULL;          -- 4262811
8050 l_acc_rev_flag               := NULL;          -- 4262811
8051 l_accrual_line_num           := NULL;          -- 4262811
8052 l_tmp_amt                    := NULL;          -- 4262811
8053 --
8054  
8055 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8056     l_balance_type_code <> 'B' THEN
8057 IF NVL(p_source_6,'
8058 ') =  'LEASE_CREDIT'
8059  THEN 
8060 
8061    --
8062    XLA_AE_LINES_PKG.SetNewLine;
8063 
8064    p_balance_type_code          := l_balance_type_code;
8065    -- set the flag so later we will know whether the gain loss line needs to be created
8066    
8067    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8068      p_actual_flag :='A';
8069    END IF;
8070 
8071    --
8072    -- bulk performance
8073    --
8074    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8075                                       p_header_num   => 0); -- 4262811
8076    --
8077    -- set accounting line options
8078    --
8082          , p_gl_transfer_mode_code      => 'S'
8079    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8080            p_natural_side_code          => 'C'
8081          , p_gain_or_loss_flag          => 'N'
8083          , p_acct_entry_type_code       => 'A'
8084          , p_switch_side_flag           => 'Y'
8085          , p_merge_duplicate_code       => 'N'
8086          );
8087    --
8088    l_acc_rev_natural_side_code := 'D';  -- 4262811
8089    -- 
8090    --
8091    -- set accounting line type info
8092    --
8093    xla_ae_lines_pkg.SetAcctLineType
8094       (p_component_type             => l_component_type
8095       ,p_event_type_code            => l_event_type_code
8096       ,p_line_definition_owner_code => l_line_definition_owner_code
8097       ,p_line_definition_code       => l_line_definition_code
8098       ,p_accounting_line_code       => l_component_code
8099       ,p_accounting_line_type_code  => l_component_type_code
8100       ,p_accounting_line_appl_id    => l_component_appl_id
8101       ,p_amb_context_code           => l_amb_context_code
8102       ,p_entity_code                => l_entity_code
8103       ,p_event_class_code           => l_event_class_code);
8104    --
8105    -- set accounting class
8106    --
8107    xla_ae_lines_pkg.SetAcctClass(
8108            p_accounting_class_code  => 'REBOOK'
8109          , p_ae_header_id           => l_ae_header_id
8110          );
8111 
8112    --
8113    -- set rounding class
8114    --
8115    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8116                       'REBOOK';
8117 
8118    --
8119    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8120    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8121    --
8122    -- bulk performance
8123    --
8124    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8125 
8126    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8127       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8128 
8129    -- 4955764
8130    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8131       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8132 
8133    -- 4458381 Public Sector Enh
8134    
8135    --
8136    -- set accounting attributes for the line type
8137    --
8138    l_entered_amt_idx := 3;
8139    l_accted_amt_idx  := NULL;
8140    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8141    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8142    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
8143    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8144    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
8145    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8146    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
8147    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8148    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
8149    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8150    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
8151    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8152    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
8153    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8154    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
8155 
8156    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8157    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8158 
8159    ---------------------------------------------------------------------------------------------------------------
8160    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8161    ---------------------------------------------------------------------------------------------------------------
8162    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8163 
8164    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8165    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8166 
8167    IF xla_accounting_cache_pkg.GetValueChar
8168          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8169          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8170    AND l_bflow_method_code = 'PRIOR_ENTRY'
8171 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8172    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8173          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8174        )
8175    THEN
8176          xla_ae_lines_pkg.BflowUpgEntry
8177            (p_business_method_code    => l_bflow_method_code
8178            ,p_business_class_code     => l_bflow_class_code
8179            ,p_balance_type            => l_balance_type_code);
8180    ELSE
8181       NULL;
8182 -- No business flow processing for business flow method of NONE.
8183    END IF;
8184 
8185    --
8186    -- call analytical criteria
8187    --
8188    
8189    --
8190    -- call description
8191    --
8192    
8193 xla_ae_lines_pkg.SetLineDescription(
8194    p_ae_header_id => l_ae_header_id
8195   ,p_description  => Description_1 (
8196      p_application_id         => p_application_id
8197    , p_ae_header_id           => l_ae_header_id 
8198 , p_source_1 => p_source_1
8199 , p_source_2 => p_source_2
8200    )
8201 );
8202 
8203 
8204    --
8205    -- call ADRs
8206    -- Bug 4922099
8207    --
8208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8212    THEN
8209         (NVL(l_actual_upg_option, 'N') = 'O') OR
8210         (NVL(l_enc_upg_option, 'N') = 'O')
8211       )
8213    NULL;
8214    --
8215    --
8216    
8217   l_ccid := AcctDerRule_3(
8218            p_application_id           => p_application_id
8219          , p_ae_header_id             => l_ae_header_id 
8220 , p_source_5 => p_source_5
8221          , x_transaction_coa_id       => l_adr_transaction_coa_id
8222          , x_accounting_coa_id        => l_adr_accounting_coa_id
8223          , x_value_type_code          => l_adr_value_type_code
8224          , p_side                     => 'NA'
8225    );
8226 
8227    xla_ae_lines_pkg.set_ccid(
8228     p_code_combination_id          => l_ccid
8229   , p_value_type_code              => l_adr_value_type_code
8230   , p_transaction_coa_id           => l_adr_transaction_coa_id
8231   , p_accounting_coa_id            => l_adr_accounting_coa_id
8232   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
8233   , p_adr_type_code                => 'S'
8234   , p_component_type               => l_component_type
8235   , p_component_code               => l_component_code
8236   , p_component_type_code          => l_component_type_code
8237   , p_component_appl_id            => l_component_appl_id
8238   , p_amb_context_code             => l_amb_context_code
8239   , p_side                         => 'NA'
8240   );
8241 
8242 
8243    --
8244    --
8245    END IF;
8246    --
8247    -- Bug 4922099
8248    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8249           (NVL(l_enc_upg_option, 'N') = 'O')
8250         ) AND
8251         (l_bflow_method_code = 'PRIOR_ENTRY')
8252       )
8253    THEN
8254       IF
8255       --
8256       1 = 2
8257       --
8258       THEN
8259       xla_accounting_err_pkg.build_message
8260                                     (p_appli_s_name            => 'XLA'
8261                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8262                                     ,p_token_1                 => 'LINE_NUMBER'
8263                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8264                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8265                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8266                                                                              l_component_type
8267                                                                             ,l_component_code
8268                                                                             ,l_component_type_code
8269                                                                             ,l_component_appl_id
8270                                                                             ,l_amb_context_code
8271                                                                             ,l_entity_code
8272                                                                             ,l_event_class_code
8273                                                                            )
8274                                     ,p_token_3                 => 'OWNER'
8275                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8276                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8277                                                                           ,p_lookup_code    => l_component_type_code
8278                                                                          )
8279                                     ,p_token_4                 => 'PRODUCT_NAME'
8280                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8281                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8282                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8283                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8284                                     ,p_ae_header_id            =>  NULL
8285                                        );
8286 
8287         IF (C_LEVEL_ERROR>= g_log_level) THEN
8288                  trace
8289                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8290                       ,p_level    => C_LEVEL_ERROR
8291                       ,p_module   => l_log_module);
8292         END IF;
8293       END IF;
8294    END IF;
8295    --
8296    --
8297    ------------------------------------------------------------------------------------------------
8298    -- 4219869 Business Flow
8299    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8300    -- Prior Entry.  Currently, the following code is always generated.
8301    ------------------------------------------------------------------------------------------------
8302    XLA_AE_LINES_PKG.ValidateCurrentLine;
8303 
8304    ------------------------------------------------------------------------------------
8305    -- 4219869 Business Flow
8306    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8307    ------------------------------------------------------------------------------------
8308    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8309 
8310    ----------------------------------------------------------------------------------
8311    -- 4219869 Business Flow
8312    -- Update journal entry status -- Need to generate this within IF <condition>
8313    ----------------------------------------------------------------------------------
8314    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8315          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8316          ,p_balance_type_code => l_balance_type_code
8317          );
8318 
8322    BEGIN
8319    -------------------------------------------------------------------------------------------
8320    -- 4262811 - Generate the Accrual Reversal lines
8321    -------------------------------------------------------------------------------------------
8323       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8324                               (g_array_event(p_event_id).array_value_num('header_index'));
8325       IF l_acc_rev_flag IS NULL THEN
8326          l_acc_rev_flag := 'N';
8327       END IF;
8328    EXCEPTION
8329       WHEN OTHERS THEN
8330          l_acc_rev_flag := 'N';
8331    END;
8332    --
8333    IF (l_acc_rev_flag = 'Y') THEN
8334 
8335        -- 4645092  ------------------------------------------------------------------------------
8336        -- To allow MPA report to determine if it should generate report process
8337        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8338        ------------------------------------------------------------------------------------------
8339 
8340        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8341        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8342 
8343        --
8344        -- Update the line information that should be overwritten
8345        --
8346        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8347                                          p_header_num   => 1);
8348        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8349 
8350        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8351 
8352        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8353           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8354        END IF;
8355 
8356       --
8357       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8358       --
8359       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8360           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8361       ELSE
8362           ---------------------------------------------------------------------------------------------------
8363           -- 4262811a Switch Sign
8364           ---------------------------------------------------------------------------------------------------
8365           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8366           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8367                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8368           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8369                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8370           -- 5132302
8371           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8372                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8373 
8374       END IF;
8375 
8376       -- 4955764
8377       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8378       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8379 
8380 
8381       XLA_AE_LINES_PKG.ValidateCurrentLine;
8382       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8383 
8384       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8385                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8386                ,p_balance_type_code => l_balance_type_code);
8387 
8388    END IF;
8389 
8390    -----------------------------------------------------------------------------------------
8391    -- 4262811 Multiperiod Accounting
8392    -----------------------------------------------------------------------------------------
8393      -- No MPA option is assigned.
8394 
8395 
8396 END IF;
8397 END IF;
8398 --
8399 
8400 --
8401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8402    trace
8403       (p_msg      => 'END of AcctLineType_18'
8404       ,p_level    => C_LEVEL_PROCEDURE
8405       ,p_module   => l_log_module);
8406 END IF;
8407 --
8408 EXCEPTION
8409   WHEN xla_exceptions_pkg.application_exception THEN
8410       RAISE;
8411   WHEN OTHERS THEN
8412        xla_exceptions_pkg.raise_message
8413            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_18');
8414 END AcctLineType_18;
8415 --
8416 
8417 ---------------------------------------
8418 --
8419 -- PRIVATE FUNCTION
8420 --         AcctLineType_19
8421 --
8422 ---------------------------------------
8423 PROCEDURE AcctLineType_19 (
8424   p_application_id        IN NUMBER
8425  ,p_event_id              IN NUMBER
8426  ,p_calculate_acctd_flag  IN VARCHAR2
8427  ,p_calculate_g_l_flag    IN VARCHAR2
8428  ,p_actual_flag           IN OUT VARCHAR2
8429  ,p_balance_type_code     OUT VARCHAR2
8430  ,p_gain_or_loss_ref      OUT VARCHAR2
8431  
8432 --Contract Number
8433  , p_source_1            IN VARCHAR2
8434 --Contract Product Name
8435  , p_source_2            IN VARCHAR2
8436 --Distribution Account
8437  , p_source_5            IN NUMBER
8438 --Accounting Line Type
8439  , p_source_6            IN VARCHAR2
8440  , p_source_6_meaning    IN VARCHAR2
8441 --Accounting Distribution Identifier
8442  , p_source_7            IN NUMBER
8443 --Distribution Type
8444  , p_source_8            IN VARCHAR2
8445 --Distribution Entered Amount
8446  , p_source_9            IN NUMBER
8447 --Transaction Currency Code
8448  , p_source_10            IN VARCHAR2
8452  , p_source_12            IN NUMBER
8449 --Transaction Currency Conversion Date
8450  , p_source_11            IN DATE
8451 --Transaction Currency Conversion Rate
8453 --Transaction Currency Conversion Type
8454  , p_source_13            IN VARCHAR2
8455 )
8456 IS
8457 
8458 l_component_type              VARCHAR2(80);
8459 l_component_code              VARCHAR2(30);
8460 l_component_type_code         VARCHAR2(1);
8461 l_component_appl_id           INTEGER;
8462 l_amb_context_code            VARCHAR2(30);
8463 l_entity_code                 VARCHAR2(30);
8464 l_event_class_code            VARCHAR2(30);
8465 l_ae_header_id                NUMBER;
8466 l_event_type_code             VARCHAR2(30);
8467 l_line_definition_code        VARCHAR2(30);
8468 l_line_definition_owner_code  VARCHAR2(1);
8469 --
8470 -- adr variables
8471 l_segment                     VARCHAR2(30);
8472 l_ccid                        NUMBER;
8473 l_adr_transaction_coa_id      NUMBER;
8474 l_adr_accounting_coa_id       NUMBER;
8475 l_adr_flexfield_segment_code  VARCHAR2(30);
8476 l_adr_flex_value_set_id       NUMBER;
8477 l_adr_value_type_code         VARCHAR2(30);
8478 l_adr_value_combination_id    NUMBER;
8479 l_adr_value_segment_code      VARCHAR2(30);
8480 
8481 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8482 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8483 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8484 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8485 
8486 -- 4262811 Variables ------------------------------------------------------------------------------------------
8487 l_entered_amt_idx             NUMBER;
8488 l_accted_amt_idx              NUMBER;
8489 l_acc_rev_flag                VARCHAR2(1);
8490 l_accrual_line_num            NUMBER;
8491 l_tmp_amt                     NUMBER;
8492 l_acc_rev_natural_side_code   VARCHAR2(1);
8493 
8494 l_num_entries                 NUMBER;
8495 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8496 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8497 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8498 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8499 l_recog_line_1                NUMBER;
8500 l_recog_line_2                NUMBER;
8501 
8502 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8503 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8504 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8505 
8506 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8507 
8508 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8509 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8510 
8511 ---------------------------------------------------------------------------------------------------------------
8512 
8513 
8514 --
8515 -- bulk performance
8516 --
8517 l_balance_type_code           VARCHAR2(1);
8518 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8519 l_log_module                  VARCHAR2(240);
8520 
8521 --
8522 -- Upgrade strategy
8523 --
8524 l_actual_upg_option           VARCHAR2(1);
8525 l_enc_upg_option           VARCHAR2(1);
8526 
8527 --
8528 BEGIN
8529 --
8530 IF g_log_enabled THEN
8531       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
8532 END IF;
8533 --
8534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8535 
8536       trace
8537          (p_msg      => 'BEGIN of AcctLineType_19'
8538          ,p_level    => C_LEVEL_PROCEDURE
8539          ,p_module   => l_log_module);
8540 
8541 END IF;
8542 --
8543 l_component_type             := 'AMB_JLT';
8544 l_component_code             := 'OKL_REBOOK_DR';
8545 l_component_type_code        := 'S';
8546 l_component_appl_id          :=  540;
8547 l_amb_context_code           := 'DEFAULT';
8548 l_entity_code                := 'CONTRACTS';
8549 l_event_class_code           := 'REBOOK';
8550 l_event_type_code            := 'REBOOK_ALL';
8551 l_line_definition_owner_code := 'S';
8552 l_line_definition_code       := 'OKL_REBOOK';
8553 --
8554 l_balance_type_code          := 'A';
8555 l_segment                     := NULL;
8556 l_ccid                        := NULL;
8557 l_adr_transaction_coa_id      := NULL;
8558 l_adr_accounting_coa_id       := NULL;
8559 l_adr_flexfield_segment_code  := NULL;
8560 l_adr_flex_value_set_id       := NULL;
8561 l_adr_value_type_code         := NULL;
8562 l_adr_value_combination_id    := NULL;
8563 l_adr_value_segment_code      := NULL;
8564 
8565 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8566 l_bflow_class_code           := '';    -- 4219869 Business Flow
8567 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8568 l_budgetary_control_flag     := 'N';
8569 
8570 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8571 l_bflow_applied_to_amt       := NULL; -- 5132302
8572 l_entered_amt_idx            := NULL;          -- 4262811
8573 l_accted_amt_idx             := NULL;          -- 4262811
8574 l_acc_rev_flag               := NULL;          -- 4262811
8575 l_accrual_line_num           := NULL;          -- 4262811
8576 l_tmp_amt                    := NULL;          -- 4262811
8577 --
8578  
8579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8580     l_balance_type_code <> 'B' THEN
8581 IF NVL(p_source_6,'
8582 ') =  'LEASE_DEBIT'
8583  THEN 
8584 
8585    --
8586    XLA_AE_LINES_PKG.SetNewLine;
8587 
8588    p_balance_type_code          := l_balance_type_code;
8589    -- set the flag so later we will know whether the gain loss line needs to be created
8593    END IF;
8590    
8591    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8592      p_actual_flag :='A';
8594 
8595    --
8596    -- bulk performance
8597    --
8598    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8599                                       p_header_num   => 0); -- 4262811
8600    --
8601    -- set accounting line options
8602    --
8603    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8604            p_natural_side_code          => 'D'
8605          , p_gain_or_loss_flag          => 'N'
8606          , p_gl_transfer_mode_code      => 'S'
8607          , p_acct_entry_type_code       => 'A'
8608          , p_switch_side_flag           => 'Y'
8609          , p_merge_duplicate_code       => 'N'
8610          );
8611    --
8612    l_acc_rev_natural_side_code := 'C';  -- 4262811
8613    -- 
8614    --
8615    -- set accounting line type info
8616    --
8617    xla_ae_lines_pkg.SetAcctLineType
8618       (p_component_type             => l_component_type
8619       ,p_event_type_code            => l_event_type_code
8620       ,p_line_definition_owner_code => l_line_definition_owner_code
8621       ,p_line_definition_code       => l_line_definition_code
8622       ,p_accounting_line_code       => l_component_code
8623       ,p_accounting_line_type_code  => l_component_type_code
8624       ,p_accounting_line_appl_id    => l_component_appl_id
8625       ,p_amb_context_code           => l_amb_context_code
8626       ,p_entity_code                => l_entity_code
8627       ,p_event_class_code           => l_event_class_code);
8628    --
8629    -- set accounting class
8630    --
8631    xla_ae_lines_pkg.SetAcctClass(
8632            p_accounting_class_code  => 'REBOOK'
8633          , p_ae_header_id           => l_ae_header_id
8634          );
8635 
8636    --
8637    -- set rounding class
8638    --
8639    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8640                       'REBOOK';
8641 
8642    --
8643    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8644    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8645    --
8646    -- bulk performance
8647    --
8648    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8649 
8650    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8651       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8652 
8653    -- 4955764
8654    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8656 
8657    -- 4458381 Public Sector Enh
8658    
8659    --
8660    -- set accounting attributes for the line type
8661    --
8662    l_entered_amt_idx := 3;
8663    l_accted_amt_idx  := NULL;
8664    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8665    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8666    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
8667    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8668    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
8669    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8670    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
8671    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8672    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
8673    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8674    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
8675    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8676    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
8677    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8678    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
8679 
8680    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8681    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8682 
8683    ---------------------------------------------------------------------------------------------------------------
8684    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8685    ---------------------------------------------------------------------------------------------------------------
8686    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8687 
8688    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8689    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8690 
8691    IF xla_accounting_cache_pkg.GetValueChar
8692          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8693          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8694    AND l_bflow_method_code = 'PRIOR_ENTRY'
8695 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8696    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8697          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8698        )
8699    THEN
8700          xla_ae_lines_pkg.BflowUpgEntry
8701            (p_business_method_code    => l_bflow_method_code
8702            ,p_business_class_code     => l_bflow_class_code
8703            ,p_balance_type            => l_balance_type_code);
8704    ELSE
8705       NULL;
8706 -- No business flow processing for business flow method of NONE.
8707    END IF;
8708 
8709    --
8710    -- call analytical criteria
8711    --
8712    
8713    --
8714    -- call description
8715    --
8716    
8717 xla_ae_lines_pkg.SetLineDescription(
8721    , p_ae_header_id           => l_ae_header_id 
8718    p_ae_header_id => l_ae_header_id
8719   ,p_description  => Description_1 (
8720      p_application_id         => p_application_id
8722 , p_source_1 => p_source_1
8723 , p_source_2 => p_source_2
8724    )
8725 );
8726 
8727 
8728    --
8729    -- call ADRs
8730    -- Bug 4922099
8731    --
8732    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8733         (NVL(l_actual_upg_option, 'N') = 'O') OR
8734         (NVL(l_enc_upg_option, 'N') = 'O')
8735       )
8736    THEN
8737    NULL;
8738    --
8739    --
8740    
8741   l_ccid := AcctDerRule_3(
8742            p_application_id           => p_application_id
8743          , p_ae_header_id             => l_ae_header_id 
8744 , p_source_5 => p_source_5
8745          , x_transaction_coa_id       => l_adr_transaction_coa_id
8746          , x_accounting_coa_id        => l_adr_accounting_coa_id
8747          , x_value_type_code          => l_adr_value_type_code
8748          , p_side                     => 'NA'
8749    );
8750 
8751    xla_ae_lines_pkg.set_ccid(
8752     p_code_combination_id          => l_ccid
8753   , p_value_type_code              => l_adr_value_type_code
8754   , p_transaction_coa_id           => l_adr_transaction_coa_id
8755   , p_accounting_coa_id            => l_adr_accounting_coa_id
8756   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
8757   , p_adr_type_code                => 'S'
8758   , p_component_type               => l_component_type
8759   , p_component_code               => l_component_code
8760   , p_component_type_code          => l_component_type_code
8761   , p_component_appl_id            => l_component_appl_id
8762   , p_amb_context_code             => l_amb_context_code
8763   , p_side                         => 'NA'
8764   );
8765 
8766 
8767    --
8768    --
8769    END IF;
8770    --
8771    -- Bug 4922099
8772    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8773           (NVL(l_enc_upg_option, 'N') = 'O')
8774         ) AND
8775         (l_bflow_method_code = 'PRIOR_ENTRY')
8776       )
8777    THEN
8778       IF
8779       --
8780       1 = 2
8781       --
8782       THEN
8783       xla_accounting_err_pkg.build_message
8784                                     (p_appli_s_name            => 'XLA'
8785                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8786                                     ,p_token_1                 => 'LINE_NUMBER'
8787                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8788                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8789                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8790                                                                              l_component_type
8791                                                                             ,l_component_code
8792                                                                             ,l_component_type_code
8793                                                                             ,l_component_appl_id
8794                                                                             ,l_amb_context_code
8795                                                                             ,l_entity_code
8796                                                                             ,l_event_class_code
8797                                                                            )
8798                                     ,p_token_3                 => 'OWNER'
8799                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8800                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8801                                                                           ,p_lookup_code    => l_component_type_code
8802                                                                          )
8803                                     ,p_token_4                 => 'PRODUCT_NAME'
8804                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8805                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8806                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8807                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8808                                     ,p_ae_header_id            =>  NULL
8809                                        );
8810 
8811         IF (C_LEVEL_ERROR>= g_log_level) THEN
8812                  trace
8813                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8814                       ,p_level    => C_LEVEL_ERROR
8815                       ,p_module   => l_log_module);
8816         END IF;
8817       END IF;
8818    END IF;
8819    --
8820    --
8821    ------------------------------------------------------------------------------------------------
8822    -- 4219869 Business Flow
8823    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8824    -- Prior Entry.  Currently, the following code is always generated.
8825    ------------------------------------------------------------------------------------------------
8826    XLA_AE_LINES_PKG.ValidateCurrentLine;
8827 
8828    ------------------------------------------------------------------------------------
8829    -- 4219869 Business Flow
8830    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8831    ------------------------------------------------------------------------------------
8832    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8833 
8834    ----------------------------------------------------------------------------------
8835    -- 4219869 Business Flow
8839          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8836    -- Update journal entry status -- Need to generate this within IF <condition>
8837    ----------------------------------------------------------------------------------
8838    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8840          ,p_balance_type_code => l_balance_type_code
8841          );
8842 
8843    -------------------------------------------------------------------------------------------
8844    -- 4262811 - Generate the Accrual Reversal lines
8845    -------------------------------------------------------------------------------------------
8846    BEGIN
8847       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8848                               (g_array_event(p_event_id).array_value_num('header_index'));
8849       IF l_acc_rev_flag IS NULL THEN
8850          l_acc_rev_flag := 'N';
8851       END IF;
8852    EXCEPTION
8853       WHEN OTHERS THEN
8854          l_acc_rev_flag := 'N';
8855    END;
8856    --
8857    IF (l_acc_rev_flag = 'Y') THEN
8858 
8859        -- 4645092  ------------------------------------------------------------------------------
8860        -- To allow MPA report to determine if it should generate report process
8861        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8862        ------------------------------------------------------------------------------------------
8863 
8864        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8865        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8866 
8867        --
8868        -- Update the line information that should be overwritten
8869        --
8870        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8871                                          p_header_num   => 1);
8872        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8873 
8874        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8875 
8876        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8877           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8878        END IF;
8879 
8880       --
8881       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8882       --
8883       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8884           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8885       ELSE
8886           ---------------------------------------------------------------------------------------------------
8887           -- 4262811a Switch Sign
8888           ---------------------------------------------------------------------------------------------------
8889           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8890           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8891                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8892           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8893                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8894           -- 5132302
8895           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8896                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8897 
8898       END IF;
8899 
8900       -- 4955764
8901       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8903 
8904 
8905       XLA_AE_LINES_PKG.ValidateCurrentLine;
8906       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8907 
8908       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8909                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8910                ,p_balance_type_code => l_balance_type_code);
8911 
8912    END IF;
8913 
8914    -----------------------------------------------------------------------------------------
8915    -- 4262811 Multiperiod Accounting
8916    -----------------------------------------------------------------------------------------
8917      -- No MPA option is assigned.
8918 
8919 
8920 END IF;
8921 END IF;
8922 --
8923 
8924 --
8925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8926    trace
8927       (p_msg      => 'END of AcctLineType_19'
8928       ,p_level    => C_LEVEL_PROCEDURE
8929       ,p_module   => l_log_module);
8930 END IF;
8931 --
8932 EXCEPTION
8933   WHEN xla_exceptions_pkg.application_exception THEN
8934       RAISE;
8935   WHEN OTHERS THEN
8936        xla_exceptions_pkg.raise_message
8937            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_19');
8938 END AcctLineType_19;
8939 --
8940 
8941 ---------------------------------------
8942 --
8943 -- PRIVATE FUNCTION
8944 --         AcctLineType_20
8945 --
8946 ---------------------------------------
8947 PROCEDURE AcctLineType_20 (
8948   p_application_id        IN NUMBER
8949  ,p_event_id              IN NUMBER
8950  ,p_calculate_acctd_flag  IN VARCHAR2
8951  ,p_calculate_g_l_flag    IN VARCHAR2
8952  ,p_actual_flag           IN OUT VARCHAR2
8953  ,p_balance_type_code     OUT VARCHAR2
8954  ,p_gain_or_loss_ref      OUT VARCHAR2
8955  
8956 --Contract Number
8957  , p_source_1            IN VARCHAR2
8958 --Contract Product Name
8959  , p_source_2            IN VARCHAR2
8960 --Distribution Account
8961  , p_source_5            IN NUMBER
8962 --Accounting Line Type
8963  , p_source_6            IN VARCHAR2
8967 --Distribution Type
8964  , p_source_6_meaning    IN VARCHAR2
8965 --Accounting Distribution Identifier
8966  , p_source_7            IN NUMBER
8968  , p_source_8            IN VARCHAR2
8969 --Distribution Entered Amount
8970  , p_source_9            IN NUMBER
8971 --Transaction Currency Code
8972  , p_source_10            IN VARCHAR2
8973 --Transaction Currency Conversion Date
8974  , p_source_11            IN DATE
8975 --Transaction Currency Conversion Rate
8976  , p_source_12            IN NUMBER
8977 --Transaction Currency Conversion Type
8978  , p_source_13            IN VARCHAR2
8979 )
8980 IS
8981 
8982 l_component_type              VARCHAR2(80);
8983 l_component_code              VARCHAR2(30);
8984 l_component_type_code         VARCHAR2(1);
8985 l_component_appl_id           INTEGER;
8986 l_amb_context_code            VARCHAR2(30);
8987 l_entity_code                 VARCHAR2(30);
8988 l_event_class_code            VARCHAR2(30);
8989 l_ae_header_id                NUMBER;
8990 l_event_type_code             VARCHAR2(30);
8991 l_line_definition_code        VARCHAR2(30);
8992 l_line_definition_owner_code  VARCHAR2(1);
8993 --
8994 -- adr variables
8995 l_segment                     VARCHAR2(30);
8996 l_ccid                        NUMBER;
8997 l_adr_transaction_coa_id      NUMBER;
8998 l_adr_accounting_coa_id       NUMBER;
8999 l_adr_flexfield_segment_code  VARCHAR2(30);
9000 l_adr_flex_value_set_id       NUMBER;
9001 l_adr_value_type_code         VARCHAR2(30);
9002 l_adr_value_combination_id    NUMBER;
9003 l_adr_value_segment_code      VARCHAR2(30);
9004 
9005 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9006 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9007 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9008 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9009 
9010 -- 4262811 Variables ------------------------------------------------------------------------------------------
9011 l_entered_amt_idx             NUMBER;
9012 l_accted_amt_idx              NUMBER;
9013 l_acc_rev_flag                VARCHAR2(1);
9014 l_accrual_line_num            NUMBER;
9015 l_tmp_amt                     NUMBER;
9016 l_acc_rev_natural_side_code   VARCHAR2(1);
9017 
9018 l_num_entries                 NUMBER;
9019 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9020 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9021 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9022 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9023 l_recog_line_1                NUMBER;
9024 l_recog_line_2                NUMBER;
9025 
9026 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9027 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9028 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9029 
9030 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9031 
9032 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9033 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9034 
9035 ---------------------------------------------------------------------------------------------------------------
9036 
9037 
9038 --
9039 -- bulk performance
9040 --
9041 l_balance_type_code           VARCHAR2(1);
9042 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9043 l_log_module                  VARCHAR2(240);
9044 
9045 --
9046 -- Upgrade strategy
9047 --
9048 l_actual_upg_option           VARCHAR2(1);
9049 l_enc_upg_option           VARCHAR2(1);
9050 
9051 --
9052 BEGIN
9053 --
9054 IF g_log_enabled THEN
9055       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
9056 END IF;
9057 --
9058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9059 
9060       trace
9061          (p_msg      => 'BEGIN of AcctLineType_20'
9062          ,p_level    => C_LEVEL_PROCEDURE
9063          ,p_module   => l_log_module);
9064 
9065 END IF;
9066 --
9067 l_component_type             := 'AMB_JLT';
9068 l_component_code             := 'OKL_RECEIPT_APPLICATION_CR';
9069 l_component_type_code        := 'S';
9070 l_component_appl_id          :=  540;
9071 l_amb_context_code           := 'DEFAULT';
9072 l_entity_code                := 'TRANSACTIONS';
9073 l_event_class_code           := 'RECEIPT_APPLICATION';
9074 l_event_type_code            := 'RECEIPT_APPLICATION_ALL';
9075 l_line_definition_owner_code := 'S';
9076 l_line_definition_code       := 'OKL_RECEIPT_APPLICATION';
9077 --
9078 l_balance_type_code          := 'A';
9079 l_segment                     := NULL;
9080 l_ccid                        := NULL;
9081 l_adr_transaction_coa_id      := NULL;
9082 l_adr_accounting_coa_id       := NULL;
9083 l_adr_flexfield_segment_code  := NULL;
9084 l_adr_flex_value_set_id       := NULL;
9085 l_adr_value_type_code         := NULL;
9086 l_adr_value_combination_id    := NULL;
9087 l_adr_value_segment_code      := NULL;
9088 
9089 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9090 l_bflow_class_code           := '';    -- 4219869 Business Flow
9091 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9092 l_budgetary_control_flag     := 'N';
9093 
9094 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9095 l_bflow_applied_to_amt       := NULL; -- 5132302
9096 l_entered_amt_idx            := NULL;          -- 4262811
9097 l_accted_amt_idx             := NULL;          -- 4262811
9098 l_acc_rev_flag               := NULL;          -- 4262811
9099 l_accrual_line_num           := NULL;          -- 4262811
9100 l_tmp_amt                    := NULL;          -- 4262811
9101 --
9102  
9106 ') =  'LEASE_CREDIT'
9103 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9104     l_balance_type_code <> 'B' THEN
9105 IF NVL(p_source_6,'
9107  THEN 
9108 
9109    --
9110    XLA_AE_LINES_PKG.SetNewLine;
9111 
9112    p_balance_type_code          := l_balance_type_code;
9113    -- set the flag so later we will know whether the gain loss line needs to be created
9114    
9115    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9116      p_actual_flag :='A';
9117    END IF;
9118 
9119    --
9120    -- bulk performance
9121    --
9122    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9123                                       p_header_num   => 0); -- 4262811
9124    --
9125    -- set accounting line options
9126    --
9127    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9128            p_natural_side_code          => 'C'
9129          , p_gain_or_loss_flag          => 'N'
9130          , p_gl_transfer_mode_code      => 'S'
9131          , p_acct_entry_type_code       => 'A'
9132          , p_switch_side_flag           => 'Y'
9133          , p_merge_duplicate_code       => 'N'
9134          );
9135    --
9136    l_acc_rev_natural_side_code := 'D';  -- 4262811
9137    -- 
9138    --
9139    -- set accounting line type info
9140    --
9141    xla_ae_lines_pkg.SetAcctLineType
9142       (p_component_type             => l_component_type
9143       ,p_event_type_code            => l_event_type_code
9144       ,p_line_definition_owner_code => l_line_definition_owner_code
9145       ,p_line_definition_code       => l_line_definition_code
9146       ,p_accounting_line_code       => l_component_code
9147       ,p_accounting_line_type_code  => l_component_type_code
9148       ,p_accounting_line_appl_id    => l_component_appl_id
9149       ,p_amb_context_code           => l_amb_context_code
9150       ,p_entity_code                => l_entity_code
9151       ,p_event_class_code           => l_event_class_code);
9152    --
9153    -- set accounting class
9154    --
9155    xla_ae_lines_pkg.SetAcctClass(
9156            p_accounting_class_code  => 'RECEIPT_APPLICATION'
9157          , p_ae_header_id           => l_ae_header_id
9158          );
9159 
9160    --
9161    -- set rounding class
9162    --
9163    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9164                       'RECEIPT_APPLICATION';
9165 
9166    --
9167    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9168    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9169    --
9170    -- bulk performance
9171    --
9172    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9173 
9174    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9175       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9176 
9177    -- 4955764
9178    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9180 
9181    -- 4458381 Public Sector Enh
9182    
9183    --
9184    -- set accounting attributes for the line type
9185    --
9186    l_entered_amt_idx := 3;
9187    l_accted_amt_idx  := NULL;
9188    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9189    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9190    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
9191    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9192    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
9193    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9194    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
9195    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9196    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
9197    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9198    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
9199    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9200    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
9201    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9202    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
9203 
9204    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9205    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9206 
9207    ---------------------------------------------------------------------------------------------------------------
9208    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9209    ---------------------------------------------------------------------------------------------------------------
9210    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9211 
9212    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9213    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9214 
9215    IF xla_accounting_cache_pkg.GetValueChar
9216          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9217          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9218    AND l_bflow_method_code = 'PRIOR_ENTRY'
9219 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9220    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9221          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9222        )
9223    THEN
9224          xla_ae_lines_pkg.BflowUpgEntry
9225            (p_business_method_code    => l_bflow_method_code
9229       NULL;
9226            ,p_business_class_code     => l_bflow_class_code
9227            ,p_balance_type            => l_balance_type_code);
9228    ELSE
9230 -- No business flow processing for business flow method of NONE.
9231    END IF;
9232 
9233    --
9234    -- call analytical criteria
9235    --
9236    
9237    --
9238    -- call description
9239    --
9240    
9241 xla_ae_lines_pkg.SetLineDescription(
9242    p_ae_header_id => l_ae_header_id
9243   ,p_description  => Description_1 (
9244      p_application_id         => p_application_id
9245    , p_ae_header_id           => l_ae_header_id 
9246 , p_source_1 => p_source_1
9247 , p_source_2 => p_source_2
9248    )
9249 );
9250 
9251 
9252    --
9253    -- call ADRs
9254    -- Bug 4922099
9255    --
9256    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9257         (NVL(l_actual_upg_option, 'N') = 'O') OR
9258         (NVL(l_enc_upg_option, 'N') = 'O')
9259       )
9260    THEN
9261    NULL;
9262    --
9263    --
9264    
9265   l_ccid := AcctDerRule_3(
9266            p_application_id           => p_application_id
9267          , p_ae_header_id             => l_ae_header_id 
9268 , p_source_5 => p_source_5
9269          , x_transaction_coa_id       => l_adr_transaction_coa_id
9270          , x_accounting_coa_id        => l_adr_accounting_coa_id
9271          , x_value_type_code          => l_adr_value_type_code
9272          , p_side                     => 'NA'
9273    );
9274 
9275    xla_ae_lines_pkg.set_ccid(
9276     p_code_combination_id          => l_ccid
9277   , p_value_type_code              => l_adr_value_type_code
9278   , p_transaction_coa_id           => l_adr_transaction_coa_id
9279   , p_accounting_coa_id            => l_adr_accounting_coa_id
9280   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
9281   , p_adr_type_code                => 'S'
9282   , p_component_type               => l_component_type
9283   , p_component_code               => l_component_code
9284   , p_component_type_code          => l_component_type_code
9285   , p_component_appl_id            => l_component_appl_id
9286   , p_amb_context_code             => l_amb_context_code
9287   , p_side                         => 'NA'
9288   );
9289 
9290 
9291    --
9292    --
9293    END IF;
9294    --
9295    -- Bug 4922099
9296    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9297           (NVL(l_enc_upg_option, 'N') = 'O')
9298         ) AND
9299         (l_bflow_method_code = 'PRIOR_ENTRY')
9300       )
9301    THEN
9302       IF
9303       --
9304       1 = 2
9305       --
9306       THEN
9307       xla_accounting_err_pkg.build_message
9308                                     (p_appli_s_name            => 'XLA'
9309                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9310                                     ,p_token_1                 => 'LINE_NUMBER'
9311                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9312                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9313                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9314                                                                              l_component_type
9315                                                                             ,l_component_code
9316                                                                             ,l_component_type_code
9317                                                                             ,l_component_appl_id
9318                                                                             ,l_amb_context_code
9319                                                                             ,l_entity_code
9320                                                                             ,l_event_class_code
9321                                                                            )
9322                                     ,p_token_3                 => 'OWNER'
9323                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9324                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9325                                                                           ,p_lookup_code    => l_component_type_code
9326                                                                          )
9327                                     ,p_token_4                 => 'PRODUCT_NAME'
9328                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9329                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9330                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9331                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9332                                     ,p_ae_header_id            =>  NULL
9333                                        );
9334 
9335         IF (C_LEVEL_ERROR>= g_log_level) THEN
9336                  trace
9337                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9338                       ,p_level    => C_LEVEL_ERROR
9339                       ,p_module   => l_log_module);
9340         END IF;
9341       END IF;
9342    END IF;
9343    --
9344    --
9345    ------------------------------------------------------------------------------------------------
9346    -- 4219869 Business Flow
9347    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9348    -- Prior Entry.  Currently, the following code is always generated.
9349    ------------------------------------------------------------------------------------------------
9350    XLA_AE_LINES_PKG.ValidateCurrentLine;
9351 
9355    ------------------------------------------------------------------------------------
9352    ------------------------------------------------------------------------------------
9353    -- 4219869 Business Flow
9354    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9356    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9357 
9358    ----------------------------------------------------------------------------------
9359    -- 4219869 Business Flow
9360    -- Update journal entry status -- Need to generate this within IF <condition>
9361    ----------------------------------------------------------------------------------
9362    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9363          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9364          ,p_balance_type_code => l_balance_type_code
9365          );
9366 
9367    -------------------------------------------------------------------------------------------
9368    -- 4262811 - Generate the Accrual Reversal lines
9369    -------------------------------------------------------------------------------------------
9370    BEGIN
9371       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9372                               (g_array_event(p_event_id).array_value_num('header_index'));
9373       IF l_acc_rev_flag IS NULL THEN
9374          l_acc_rev_flag := 'N';
9375       END IF;
9376    EXCEPTION
9377       WHEN OTHERS THEN
9378          l_acc_rev_flag := 'N';
9379    END;
9380    --
9381    IF (l_acc_rev_flag = 'Y') THEN
9382 
9383        -- 4645092  ------------------------------------------------------------------------------
9384        -- To allow MPA report to determine if it should generate report process
9385        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9386        ------------------------------------------------------------------------------------------
9387 
9388        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9389        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9390 
9391        --
9392        -- Update the line information that should be overwritten
9393        --
9394        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9395                                          p_header_num   => 1);
9396        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9397 
9398        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9399 
9400        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9401           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9402        END IF;
9403 
9404       --
9405       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9406       --
9407       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9408           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9409       ELSE
9410           ---------------------------------------------------------------------------------------------------
9411           -- 4262811a Switch Sign
9412           ---------------------------------------------------------------------------------------------------
9413           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9414           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9415                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9416           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9417                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9418           -- 5132302
9419           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9420                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9421 
9422       END IF;
9423 
9424       -- 4955764
9425       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9427 
9428 
9429       XLA_AE_LINES_PKG.ValidateCurrentLine;
9430       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9431 
9432       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9433                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9434                ,p_balance_type_code => l_balance_type_code);
9435 
9436    END IF;
9437 
9438    -----------------------------------------------------------------------------------------
9439    -- 4262811 Multiperiod Accounting
9440    -----------------------------------------------------------------------------------------
9441      -- No MPA option is assigned.
9442 
9443 
9444 END IF;
9445 END IF;
9446 --
9447 
9448 --
9449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9450    trace
9451       (p_msg      => 'END of AcctLineType_20'
9452       ,p_level    => C_LEVEL_PROCEDURE
9453       ,p_module   => l_log_module);
9454 END IF;
9455 --
9456 EXCEPTION
9457   WHEN xla_exceptions_pkg.application_exception THEN
9458       RAISE;
9459   WHEN OTHERS THEN
9460        xla_exceptions_pkg.raise_message
9461            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_20');
9462 END AcctLineType_20;
9463 --
9464 
9465 ---------------------------------------
9466 --
9467 -- PRIVATE FUNCTION
9468 --         AcctLineType_21
9469 --
9470 ---------------------------------------
9471 PROCEDURE AcctLineType_21 (
9472   p_application_id        IN NUMBER
9473  ,p_event_id              IN NUMBER
9474  ,p_calculate_acctd_flag  IN VARCHAR2
9478  ,p_gain_or_loss_ref      OUT VARCHAR2
9475  ,p_calculate_g_l_flag    IN VARCHAR2
9476  ,p_actual_flag           IN OUT VARCHAR2
9477  ,p_balance_type_code     OUT VARCHAR2
9479  
9480 --Contract Number
9481  , p_source_1            IN VARCHAR2
9482 --Contract Product Name
9483  , p_source_2            IN VARCHAR2
9484 --Distribution Account
9485  , p_source_5            IN NUMBER
9486 --Accounting Line Type
9487  , p_source_6            IN VARCHAR2
9488  , p_source_6_meaning    IN VARCHAR2
9489 --Accounting Distribution Identifier
9490  , p_source_7            IN NUMBER
9491 --Distribution Type
9492  , p_source_8            IN VARCHAR2
9493 --Distribution Entered Amount
9494  , p_source_9            IN NUMBER
9495 --Transaction Currency Code
9496  , p_source_10            IN VARCHAR2
9497 --Transaction Currency Conversion Date
9498  , p_source_11            IN DATE
9499 --Transaction Currency Conversion Rate
9500  , p_source_12            IN NUMBER
9501 --Transaction Currency Conversion Type
9502  , p_source_13            IN VARCHAR2
9503 )
9504 IS
9505 
9506 l_component_type              VARCHAR2(80);
9507 l_component_code              VARCHAR2(30);
9508 l_component_type_code         VARCHAR2(1);
9509 l_component_appl_id           INTEGER;
9510 l_amb_context_code            VARCHAR2(30);
9511 l_entity_code                 VARCHAR2(30);
9512 l_event_class_code            VARCHAR2(30);
9513 l_ae_header_id                NUMBER;
9514 l_event_type_code             VARCHAR2(30);
9515 l_line_definition_code        VARCHAR2(30);
9516 l_line_definition_owner_code  VARCHAR2(1);
9517 --
9518 -- adr variables
9519 l_segment                     VARCHAR2(30);
9520 l_ccid                        NUMBER;
9521 l_adr_transaction_coa_id      NUMBER;
9522 l_adr_accounting_coa_id       NUMBER;
9523 l_adr_flexfield_segment_code  VARCHAR2(30);
9524 l_adr_flex_value_set_id       NUMBER;
9525 l_adr_value_type_code         VARCHAR2(30);
9526 l_adr_value_combination_id    NUMBER;
9527 l_adr_value_segment_code      VARCHAR2(30);
9528 
9529 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9530 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9531 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9532 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9533 
9534 -- 4262811 Variables ------------------------------------------------------------------------------------------
9535 l_entered_amt_idx             NUMBER;
9536 l_accted_amt_idx              NUMBER;
9537 l_acc_rev_flag                VARCHAR2(1);
9538 l_accrual_line_num            NUMBER;
9539 l_tmp_amt                     NUMBER;
9540 l_acc_rev_natural_side_code   VARCHAR2(1);
9541 
9542 l_num_entries                 NUMBER;
9543 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9544 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9545 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9546 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9547 l_recog_line_1                NUMBER;
9548 l_recog_line_2                NUMBER;
9549 
9550 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9551 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9552 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9553 
9554 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9555 
9556 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9557 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9558 
9559 ---------------------------------------------------------------------------------------------------------------
9560 
9561 
9562 --
9563 -- bulk performance
9564 --
9565 l_balance_type_code           VARCHAR2(1);
9566 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9567 l_log_module                  VARCHAR2(240);
9568 
9569 --
9570 -- Upgrade strategy
9571 --
9572 l_actual_upg_option           VARCHAR2(1);
9573 l_enc_upg_option           VARCHAR2(1);
9574 
9575 --
9576 BEGIN
9577 --
9578 IF g_log_enabled THEN
9579       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9580 END IF;
9581 --
9582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9583 
9584       trace
9585          (p_msg      => 'BEGIN of AcctLineType_21'
9586          ,p_level    => C_LEVEL_PROCEDURE
9587          ,p_module   => l_log_module);
9588 
9589 END IF;
9590 --
9591 l_component_type             := 'AMB_JLT';
9592 l_component_code             := 'OKL_RECEIPT_APPLICATION_DR';
9593 l_component_type_code        := 'S';
9594 l_component_appl_id          :=  540;
9595 l_amb_context_code           := 'DEFAULT';
9596 l_entity_code                := 'TRANSACTIONS';
9597 l_event_class_code           := 'RECEIPT_APPLICATION';
9598 l_event_type_code            := 'RECEIPT_APPLICATION_ALL';
9599 l_line_definition_owner_code := 'S';
9600 l_line_definition_code       := 'OKL_RECEIPT_APPLICATION';
9601 --
9602 l_balance_type_code          := 'A';
9603 l_segment                     := NULL;
9604 l_ccid                        := NULL;
9605 l_adr_transaction_coa_id      := NULL;
9606 l_adr_accounting_coa_id       := NULL;
9607 l_adr_flexfield_segment_code  := NULL;
9608 l_adr_flex_value_set_id       := NULL;
9609 l_adr_value_type_code         := NULL;
9610 l_adr_value_combination_id    := NULL;
9611 l_adr_value_segment_code      := NULL;
9612 
9613 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9614 l_bflow_class_code           := '';    -- 4219869 Business Flow
9615 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9616 l_budgetary_control_flag     := 'N';
9617 
9621 l_accted_amt_idx             := NULL;          -- 4262811
9618 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9619 l_bflow_applied_to_amt       := NULL; -- 5132302
9620 l_entered_amt_idx            := NULL;          -- 4262811
9622 l_acc_rev_flag               := NULL;          -- 4262811
9623 l_accrual_line_num           := NULL;          -- 4262811
9624 l_tmp_amt                    := NULL;          -- 4262811
9625 --
9626  
9627 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9628     l_balance_type_code <> 'B' THEN
9629 IF NVL(p_source_6,'
9630 ') =  'LEASE_DEBIT'
9631  THEN 
9632 
9633    --
9634    XLA_AE_LINES_PKG.SetNewLine;
9635 
9636    p_balance_type_code          := l_balance_type_code;
9637    -- set the flag so later we will know whether the gain loss line needs to be created
9638    
9639    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9640      p_actual_flag :='A';
9641    END IF;
9642 
9643    --
9644    -- bulk performance
9645    --
9646    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9647                                       p_header_num   => 0); -- 4262811
9648    --
9649    -- set accounting line options
9650    --
9651    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9652            p_natural_side_code          => 'D'
9653          , p_gain_or_loss_flag          => 'N'
9654          , p_gl_transfer_mode_code      => 'S'
9655          , p_acct_entry_type_code       => 'A'
9656          , p_switch_side_flag           => 'Y'
9657          , p_merge_duplicate_code       => 'N'
9658          );
9659    --
9660    l_acc_rev_natural_side_code := 'C';  -- 4262811
9661    -- 
9662    --
9663    -- set accounting line type info
9664    --
9665    xla_ae_lines_pkg.SetAcctLineType
9666       (p_component_type             => l_component_type
9667       ,p_event_type_code            => l_event_type_code
9668       ,p_line_definition_owner_code => l_line_definition_owner_code
9669       ,p_line_definition_code       => l_line_definition_code
9670       ,p_accounting_line_code       => l_component_code
9671       ,p_accounting_line_type_code  => l_component_type_code
9672       ,p_accounting_line_appl_id    => l_component_appl_id
9673       ,p_amb_context_code           => l_amb_context_code
9674       ,p_entity_code                => l_entity_code
9675       ,p_event_class_code           => l_event_class_code);
9676    --
9677    -- set accounting class
9678    --
9679    xla_ae_lines_pkg.SetAcctClass(
9680            p_accounting_class_code  => 'RECEIPT_APPLICATION'
9681          , p_ae_header_id           => l_ae_header_id
9682          );
9683 
9684    --
9685    -- set rounding class
9686    --
9687    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9688                       'RECEIPT_APPLICATION';
9689 
9690    --
9691    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9692    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9693    --
9694    -- bulk performance
9695    --
9696    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9697 
9698    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9699       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9700 
9701    -- 4955764
9702    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9704 
9705    -- 4458381 Public Sector Enh
9706    
9707    --
9708    -- set accounting attributes for the line type
9709    --
9710    l_entered_amt_idx := 3;
9711    l_accted_amt_idx  := NULL;
9712    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9713    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9714    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
9715    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9716    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
9717    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9718    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
9719    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9720    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
9721    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9722    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
9723    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9724    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
9725    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9726    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
9727 
9728    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9729    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9730 
9731    ---------------------------------------------------------------------------------------------------------------
9732    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9733    ---------------------------------------------------------------------------------------------------------------
9734    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9735 
9736    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9737    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9738 
9739    IF xla_accounting_cache_pkg.GetValueChar
9740          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9744    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9741          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9742    AND l_bflow_method_code = 'PRIOR_ENTRY'
9743 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9745          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9746        )
9747    THEN
9748          xla_ae_lines_pkg.BflowUpgEntry
9749            (p_business_method_code    => l_bflow_method_code
9750            ,p_business_class_code     => l_bflow_class_code
9751            ,p_balance_type            => l_balance_type_code);
9752    ELSE
9753       NULL;
9754 -- No business flow processing for business flow method of NONE.
9755    END IF;
9756 
9757    --
9758    -- call analytical criteria
9759    --
9760    
9761    --
9762    -- call description
9763    --
9764    
9765 xla_ae_lines_pkg.SetLineDescription(
9766    p_ae_header_id => l_ae_header_id
9767   ,p_description  => Description_1 (
9768      p_application_id         => p_application_id
9769    , p_ae_header_id           => l_ae_header_id 
9770 , p_source_1 => p_source_1
9771 , p_source_2 => p_source_2
9772    )
9773 );
9774 
9775 
9776    --
9777    -- call ADRs
9778    -- Bug 4922099
9779    --
9780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9781         (NVL(l_actual_upg_option, 'N') = 'O') OR
9782         (NVL(l_enc_upg_option, 'N') = 'O')
9783       )
9784    THEN
9785    NULL;
9786    --
9787    --
9788    
9789   l_ccid := AcctDerRule_3(
9790            p_application_id           => p_application_id
9791          , p_ae_header_id             => l_ae_header_id 
9792 , p_source_5 => p_source_5
9793          , x_transaction_coa_id       => l_adr_transaction_coa_id
9794          , x_accounting_coa_id        => l_adr_accounting_coa_id
9795          , x_value_type_code          => l_adr_value_type_code
9796          , p_side                     => 'NA'
9797    );
9798 
9799    xla_ae_lines_pkg.set_ccid(
9800     p_code_combination_id          => l_ccid
9801   , p_value_type_code              => l_adr_value_type_code
9802   , p_transaction_coa_id           => l_adr_transaction_coa_id
9803   , p_accounting_coa_id            => l_adr_accounting_coa_id
9804   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
9805   , p_adr_type_code                => 'S'
9806   , p_component_type               => l_component_type
9807   , p_component_code               => l_component_code
9808   , p_component_type_code          => l_component_type_code
9809   , p_component_appl_id            => l_component_appl_id
9810   , p_amb_context_code             => l_amb_context_code
9811   , p_side                         => 'NA'
9812   );
9813 
9814 
9815    --
9816    --
9817    END IF;
9818    --
9819    -- Bug 4922099
9820    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9821           (NVL(l_enc_upg_option, 'N') = 'O')
9822         ) AND
9823         (l_bflow_method_code = 'PRIOR_ENTRY')
9824       )
9825    THEN
9826       IF
9827       --
9828       1 = 2
9829       --
9830       THEN
9831       xla_accounting_err_pkg.build_message
9832                                     (p_appli_s_name            => 'XLA'
9833                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9834                                     ,p_token_1                 => 'LINE_NUMBER'
9835                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9836                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9837                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9838                                                                              l_component_type
9839                                                                             ,l_component_code
9840                                                                             ,l_component_type_code
9841                                                                             ,l_component_appl_id
9842                                                                             ,l_amb_context_code
9843                                                                             ,l_entity_code
9844                                                                             ,l_event_class_code
9845                                                                            )
9846                                     ,p_token_3                 => 'OWNER'
9847                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9848                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9849                                                                           ,p_lookup_code    => l_component_type_code
9850                                                                          )
9851                                     ,p_token_4                 => 'PRODUCT_NAME'
9852                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9853                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9854                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9855                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9856                                     ,p_ae_header_id            =>  NULL
9857                                        );
9858 
9859         IF (C_LEVEL_ERROR>= g_log_level) THEN
9860                  trace
9861                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9862                       ,p_level    => C_LEVEL_ERROR
9863                       ,p_module   => l_log_module);
9864         END IF;
9865       END IF;
9866    END IF;
9870    -- 4219869 Business Flow
9867    --
9868    --
9869    ------------------------------------------------------------------------------------------------
9871    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9872    -- Prior Entry.  Currently, the following code is always generated.
9873    ------------------------------------------------------------------------------------------------
9874    XLA_AE_LINES_PKG.ValidateCurrentLine;
9875 
9876    ------------------------------------------------------------------------------------
9877    -- 4219869 Business Flow
9878    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9879    ------------------------------------------------------------------------------------
9880    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9881 
9882    ----------------------------------------------------------------------------------
9883    -- 4219869 Business Flow
9884    -- Update journal entry status -- Need to generate this within IF <condition>
9885    ----------------------------------------------------------------------------------
9886    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9887          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9888          ,p_balance_type_code => l_balance_type_code
9889          );
9890 
9891    -------------------------------------------------------------------------------------------
9892    -- 4262811 - Generate the Accrual Reversal lines
9893    -------------------------------------------------------------------------------------------
9894    BEGIN
9895       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9896                               (g_array_event(p_event_id).array_value_num('header_index'));
9897       IF l_acc_rev_flag IS NULL THEN
9898          l_acc_rev_flag := 'N';
9899       END IF;
9900    EXCEPTION
9901       WHEN OTHERS THEN
9902          l_acc_rev_flag := 'N';
9903    END;
9904    --
9905    IF (l_acc_rev_flag = 'Y') THEN
9906 
9907        -- 4645092  ------------------------------------------------------------------------------
9908        -- To allow MPA report to determine if it should generate report process
9909        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9910        ------------------------------------------------------------------------------------------
9911 
9912        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9913        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9914 
9915        --
9916        -- Update the line information that should be overwritten
9917        --
9918        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9919                                          p_header_num   => 1);
9920        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9921 
9922        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9923 
9924        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9925           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9926        END IF;
9927 
9928       --
9929       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9930       --
9931       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9932           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9933       ELSE
9934           ---------------------------------------------------------------------------------------------------
9935           -- 4262811a Switch Sign
9936           ---------------------------------------------------------------------------------------------------
9937           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9938           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9939                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9940           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9941                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9942           -- 5132302
9943           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9944                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9945 
9946       END IF;
9947 
9948       -- 4955764
9949       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9951 
9952 
9953       XLA_AE_LINES_PKG.ValidateCurrentLine;
9954       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9955 
9956       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9957                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9958                ,p_balance_type_code => l_balance_type_code);
9959 
9960    END IF;
9961 
9962    -----------------------------------------------------------------------------------------
9963    -- 4262811 Multiperiod Accounting
9964    -----------------------------------------------------------------------------------------
9965      -- No MPA option is assigned.
9966 
9967 
9968 END IF;
9969 END IF;
9970 --
9971 
9972 --
9973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9974    trace
9975       (p_msg      => 'END of AcctLineType_21'
9976       ,p_level    => C_LEVEL_PROCEDURE
9977       ,p_module   => l_log_module);
9978 END IF;
9979 --
9980 EXCEPTION
9981   WHEN xla_exceptions_pkg.application_exception THEN
9982       RAISE;
9983   WHEN OTHERS THEN
9984        xla_exceptions_pkg.raise_message
9988 
9985            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_21');
9986 END AcctLineType_21;
9987 --
9989 ---------------------------------------
9990 --
9991 -- PRIVATE FUNCTION
9992 --         AcctLineType_22
9993 --
9994 ---------------------------------------
9995 PROCEDURE AcctLineType_22 (
9996   p_application_id        IN NUMBER
9997  ,p_event_id              IN NUMBER
9998  ,p_calculate_acctd_flag  IN VARCHAR2
9999  ,p_calculate_g_l_flag    IN VARCHAR2
10000  ,p_actual_flag           IN OUT VARCHAR2
10001  ,p_balance_type_code     OUT VARCHAR2
10002  ,p_gain_or_loss_ref      OUT VARCHAR2
10003  
10004 --Contract Number
10005  , p_source_1            IN VARCHAR2
10006 --Contract Product Name
10007  , p_source_2            IN VARCHAR2
10008 --Distribution Account
10009  , p_source_5            IN NUMBER
10010 --Accounting Line Type
10011  , p_source_6            IN VARCHAR2
10012  , p_source_6_meaning    IN VARCHAR2
10013 --Accounting Distribution Identifier
10014  , p_source_7            IN NUMBER
10015 --Distribution Type
10016  , p_source_8            IN VARCHAR2
10017 --Distribution Entered Amount
10018  , p_source_9            IN NUMBER
10019 --Transaction Currency Code
10020  , p_source_10            IN VARCHAR2
10021 --Transaction Currency Conversion Date
10022  , p_source_11            IN DATE
10023 --Transaction Currency Conversion Rate
10024  , p_source_12            IN NUMBER
10025 --Transaction Currency Conversion Type
10026  , p_source_13            IN VARCHAR2
10027 )
10028 IS
10029 
10030 l_component_type              VARCHAR2(80);
10031 l_component_code              VARCHAR2(30);
10032 l_component_type_code         VARCHAR2(1);
10033 l_component_appl_id           INTEGER;
10034 l_amb_context_code            VARCHAR2(30);
10035 l_entity_code                 VARCHAR2(30);
10036 l_event_class_code            VARCHAR2(30);
10037 l_ae_header_id                NUMBER;
10038 l_event_type_code             VARCHAR2(30);
10039 l_line_definition_code        VARCHAR2(30);
10040 l_line_definition_owner_code  VARCHAR2(1);
10041 --
10042 -- adr variables
10043 l_segment                     VARCHAR2(30);
10044 l_ccid                        NUMBER;
10045 l_adr_transaction_coa_id      NUMBER;
10046 l_adr_accounting_coa_id       NUMBER;
10047 l_adr_flexfield_segment_code  VARCHAR2(30);
10048 l_adr_flex_value_set_id       NUMBER;
10049 l_adr_value_type_code         VARCHAR2(30);
10050 l_adr_value_combination_id    NUMBER;
10051 l_adr_value_segment_code      VARCHAR2(30);
10052 
10053 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10054 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10055 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10056 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10057 
10058 -- 4262811 Variables ------------------------------------------------------------------------------------------
10059 l_entered_amt_idx             NUMBER;
10060 l_accted_amt_idx              NUMBER;
10061 l_acc_rev_flag                VARCHAR2(1);
10062 l_accrual_line_num            NUMBER;
10063 l_tmp_amt                     NUMBER;
10064 l_acc_rev_natural_side_code   VARCHAR2(1);
10065 
10066 l_num_entries                 NUMBER;
10067 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10068 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10069 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10070 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10071 l_recog_line_1                NUMBER;
10072 l_recog_line_2                NUMBER;
10073 
10074 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10075 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10076 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10077 
10078 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10079 
10080 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10081 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10082 
10083 ---------------------------------------------------------------------------------------------------------------
10084 
10085 
10086 --
10087 -- bulk performance
10088 --
10089 l_balance_type_code           VARCHAR2(1);
10090 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10091 l_log_module                  VARCHAR2(240);
10092 
10093 --
10094 -- Upgrade strategy
10095 --
10096 l_actual_upg_option           VARCHAR2(1);
10097 l_enc_upg_option           VARCHAR2(1);
10098 
10099 --
10100 BEGIN
10101 --
10102 IF g_log_enabled THEN
10103       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
10104 END IF;
10105 --
10106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10107 
10108       trace
10109          (p_msg      => 'BEGIN of AcctLineType_22'
10110          ,p_level    => C_LEVEL_PROCEDURE
10111          ,p_module   => l_log_module);
10112 
10113 END IF;
10114 --
10115 l_component_type             := 'AMB_JLT';
10116 l_component_code             := 'OKL_RELEASE_CR';
10117 l_component_type_code        := 'S';
10118 l_component_appl_id          :=  540;
10119 l_amb_context_code           := 'DEFAULT';
10120 l_entity_code                := 'CONTRACTS';
10121 l_event_class_code           := 'RE_LEASE';
10122 l_event_type_code            := 'RE_LEASE_ALL';
10123 l_line_definition_owner_code := 'S';
10124 l_line_definition_code       := 'OKL_RELEASE';
10125 --
10126 l_balance_type_code          := 'A';
10127 l_segment                     := NULL;
10128 l_ccid                        := NULL;
10132 l_adr_flex_value_set_id       := NULL;
10129 l_adr_transaction_coa_id      := NULL;
10130 l_adr_accounting_coa_id       := NULL;
10131 l_adr_flexfield_segment_code  := NULL;
10133 l_adr_value_type_code         := NULL;
10134 l_adr_value_combination_id    := NULL;
10135 l_adr_value_segment_code      := NULL;
10136 
10137 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10138 l_bflow_class_code           := '';    -- 4219869 Business Flow
10139 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10140 l_budgetary_control_flag     := 'N';
10141 
10142 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10143 l_bflow_applied_to_amt       := NULL; -- 5132302
10144 l_entered_amt_idx            := NULL;          -- 4262811
10145 l_accted_amt_idx             := NULL;          -- 4262811
10146 l_acc_rev_flag               := NULL;          -- 4262811
10147 l_accrual_line_num           := NULL;          -- 4262811
10148 l_tmp_amt                    := NULL;          -- 4262811
10149 --
10150  
10151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10152     l_balance_type_code <> 'B' THEN
10153 IF NVL(p_source_6,'
10154 ') =  'LEASE_CREDIT'
10155  THEN 
10156 
10157    --
10158    XLA_AE_LINES_PKG.SetNewLine;
10159 
10160    p_balance_type_code          := l_balance_type_code;
10161    -- set the flag so later we will know whether the gain loss line needs to be created
10162    
10163    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10164      p_actual_flag :='A';
10165    END IF;
10166 
10167    --
10168    -- bulk performance
10169    --
10170    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10171                                       p_header_num   => 0); -- 4262811
10172    --
10173    -- set accounting line options
10174    --
10175    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10176            p_natural_side_code          => 'C'
10177          , p_gain_or_loss_flag          => 'N'
10178          , p_gl_transfer_mode_code      => 'S'
10179          , p_acct_entry_type_code       => 'A'
10180          , p_switch_side_flag           => 'Y'
10181          , p_merge_duplicate_code       => 'N'
10182          );
10183    --
10184    l_acc_rev_natural_side_code := 'D';  -- 4262811
10185    -- 
10186    --
10187    -- set accounting line type info
10188    --
10189    xla_ae_lines_pkg.SetAcctLineType
10190       (p_component_type             => l_component_type
10191       ,p_event_type_code            => l_event_type_code
10192       ,p_line_definition_owner_code => l_line_definition_owner_code
10193       ,p_line_definition_code       => l_line_definition_code
10194       ,p_accounting_line_code       => l_component_code
10195       ,p_accounting_line_type_code  => l_component_type_code
10196       ,p_accounting_line_appl_id    => l_component_appl_id
10197       ,p_amb_context_code           => l_amb_context_code
10198       ,p_entity_code                => l_entity_code
10199       ,p_event_class_code           => l_event_class_code);
10200    --
10201    -- set accounting class
10202    --
10203    xla_ae_lines_pkg.SetAcctClass(
10204            p_accounting_class_code  => 'RELEASE'
10205          , p_ae_header_id           => l_ae_header_id
10206          );
10207 
10208    --
10209    -- set rounding class
10210    --
10211    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10212                       'RELEASE';
10213 
10214    --
10215    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10216    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10217    --
10218    -- bulk performance
10219    --
10220    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10221 
10222    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10223       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10224 
10225    -- 4955764
10226    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10227       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10228 
10229    -- 4458381 Public Sector Enh
10230    
10231    --
10232    -- set accounting attributes for the line type
10233    --
10234    l_entered_amt_idx := 3;
10235    l_accted_amt_idx  := NULL;
10236    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10237    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10238    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
10239    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10240    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
10241    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10242    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
10243    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10244    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
10245    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10246    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
10247    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10248    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
10249    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10250    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
10251 
10252    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10253    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10254 
10255    ---------------------------------------------------------------------------------------------------------------
10259 
10256    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10257    ---------------------------------------------------------------------------------------------------------------
10258    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10260    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10261    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10262 
10263    IF xla_accounting_cache_pkg.GetValueChar
10264          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10265          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10266    AND l_bflow_method_code = 'PRIOR_ENTRY'
10267 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10268    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10269          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10270        )
10271    THEN
10272          xla_ae_lines_pkg.BflowUpgEntry
10273            (p_business_method_code    => l_bflow_method_code
10274            ,p_business_class_code     => l_bflow_class_code
10275            ,p_balance_type            => l_balance_type_code);
10276    ELSE
10277       NULL;
10278 -- No business flow processing for business flow method of NONE.
10279    END IF;
10280 
10281    --
10282    -- call analytical criteria
10283    --
10284    
10285    --
10286    -- call description
10287    --
10288    
10289 xla_ae_lines_pkg.SetLineDescription(
10290    p_ae_header_id => l_ae_header_id
10291   ,p_description  => Description_1 (
10292      p_application_id         => p_application_id
10293    , p_ae_header_id           => l_ae_header_id 
10294 , p_source_1 => p_source_1
10295 , p_source_2 => p_source_2
10296    )
10297 );
10298 
10299 
10300    --
10301    -- call ADRs
10302    -- Bug 4922099
10303    --
10304    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10305         (NVL(l_actual_upg_option, 'N') = 'O') OR
10306         (NVL(l_enc_upg_option, 'N') = 'O')
10307       )
10308    THEN
10309    NULL;
10310    --
10311    --
10312    
10313   l_ccid := AcctDerRule_3(
10314            p_application_id           => p_application_id
10315          , p_ae_header_id             => l_ae_header_id 
10316 , p_source_5 => p_source_5
10317          , x_transaction_coa_id       => l_adr_transaction_coa_id
10318          , x_accounting_coa_id        => l_adr_accounting_coa_id
10319          , x_value_type_code          => l_adr_value_type_code
10320          , p_side                     => 'NA'
10321    );
10322 
10323    xla_ae_lines_pkg.set_ccid(
10324     p_code_combination_id          => l_ccid
10325   , p_value_type_code              => l_adr_value_type_code
10326   , p_transaction_coa_id           => l_adr_transaction_coa_id
10327   , p_accounting_coa_id            => l_adr_accounting_coa_id
10328   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
10329   , p_adr_type_code                => 'S'
10330   , p_component_type               => l_component_type
10331   , p_component_code               => l_component_code
10332   , p_component_type_code          => l_component_type_code
10333   , p_component_appl_id            => l_component_appl_id
10334   , p_amb_context_code             => l_amb_context_code
10335   , p_side                         => 'NA'
10336   );
10337 
10338 
10339    --
10340    --
10341    END IF;
10342    --
10343    -- Bug 4922099
10344    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10345           (NVL(l_enc_upg_option, 'N') = 'O')
10346         ) AND
10347         (l_bflow_method_code = 'PRIOR_ENTRY')
10348       )
10349    THEN
10350       IF
10351       --
10352       1 = 2
10353       --
10354       THEN
10355       xla_accounting_err_pkg.build_message
10356                                     (p_appli_s_name            => 'XLA'
10357                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10358                                     ,p_token_1                 => 'LINE_NUMBER'
10359                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10360                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10361                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10362                                                                              l_component_type
10363                                                                             ,l_component_code
10364                                                                             ,l_component_type_code
10365                                                                             ,l_component_appl_id
10366                                                                             ,l_amb_context_code
10367                                                                             ,l_entity_code
10368                                                                             ,l_event_class_code
10369                                                                            )
10370                                     ,p_token_3                 => 'OWNER'
10371                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10372                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10373                                                                           ,p_lookup_code    => l_component_type_code
10374                                                                          )
10375                                     ,p_token_4                 => 'PRODUCT_NAME'
10376                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10380                                     ,p_ae_header_id            =>  NULL
10377                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10378                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10379                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10381                                        );
10382 
10383         IF (C_LEVEL_ERROR>= g_log_level) THEN
10384                  trace
10385                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10386                       ,p_level    => C_LEVEL_ERROR
10387                       ,p_module   => l_log_module);
10388         END IF;
10389       END IF;
10390    END IF;
10391    --
10392    --
10393    ------------------------------------------------------------------------------------------------
10394    -- 4219869 Business Flow
10395    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10396    -- Prior Entry.  Currently, the following code is always generated.
10397    ------------------------------------------------------------------------------------------------
10398    XLA_AE_LINES_PKG.ValidateCurrentLine;
10399 
10400    ------------------------------------------------------------------------------------
10401    -- 4219869 Business Flow
10402    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10403    ------------------------------------------------------------------------------------
10404    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10405 
10406    ----------------------------------------------------------------------------------
10407    -- 4219869 Business Flow
10408    -- Update journal entry status -- Need to generate this within IF <condition>
10409    ----------------------------------------------------------------------------------
10410    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10411          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10412          ,p_balance_type_code => l_balance_type_code
10413          );
10414 
10415    -------------------------------------------------------------------------------------------
10416    -- 4262811 - Generate the Accrual Reversal lines
10417    -------------------------------------------------------------------------------------------
10418    BEGIN
10419       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10420                               (g_array_event(p_event_id).array_value_num('header_index'));
10421       IF l_acc_rev_flag IS NULL THEN
10422          l_acc_rev_flag := 'N';
10423       END IF;
10424    EXCEPTION
10425       WHEN OTHERS THEN
10426          l_acc_rev_flag := 'N';
10427    END;
10428    --
10429    IF (l_acc_rev_flag = 'Y') THEN
10430 
10431        -- 4645092  ------------------------------------------------------------------------------
10432        -- To allow MPA report to determine if it should generate report process
10433        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10434        ------------------------------------------------------------------------------------------
10435 
10436        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10437        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10438 
10439        --
10440        -- Update the line information that should be overwritten
10441        --
10442        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10443                                          p_header_num   => 1);
10444        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10445 
10446        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10447 
10448        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10449           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10450        END IF;
10451 
10452       --
10453       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10454       --
10455       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10456           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10457       ELSE
10458           ---------------------------------------------------------------------------------------------------
10459           -- 4262811a Switch Sign
10460           ---------------------------------------------------------------------------------------------------
10461           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10462           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10463                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10464           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10465                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10466           -- 5132302
10467           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10468                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10469 
10470       END IF;
10471 
10472       -- 4955764
10473       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10475 
10476 
10477       XLA_AE_LINES_PKG.ValidateCurrentLine;
10478       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10479 
10480       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10481                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10485 
10482                ,p_balance_type_code => l_balance_type_code);
10483 
10484    END IF;
10486    -----------------------------------------------------------------------------------------
10487    -- 4262811 Multiperiod Accounting
10488    -----------------------------------------------------------------------------------------
10489      -- No MPA option is assigned.
10490 
10491 
10492 END IF;
10493 END IF;
10494 --
10495 
10496 --
10497 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10498    trace
10499       (p_msg      => 'END of AcctLineType_22'
10500       ,p_level    => C_LEVEL_PROCEDURE
10501       ,p_module   => l_log_module);
10502 END IF;
10503 --
10504 EXCEPTION
10505   WHEN xla_exceptions_pkg.application_exception THEN
10506       RAISE;
10507   WHEN OTHERS THEN
10508        xla_exceptions_pkg.raise_message
10509            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_22');
10510 END AcctLineType_22;
10511 --
10512 
10513 ---------------------------------------
10514 --
10515 -- PRIVATE FUNCTION
10516 --         AcctLineType_23
10517 --
10518 ---------------------------------------
10519 PROCEDURE AcctLineType_23 (
10520   p_application_id        IN NUMBER
10521  ,p_event_id              IN NUMBER
10522  ,p_calculate_acctd_flag  IN VARCHAR2
10523  ,p_calculate_g_l_flag    IN VARCHAR2
10524  ,p_actual_flag           IN OUT VARCHAR2
10525  ,p_balance_type_code     OUT VARCHAR2
10526  ,p_gain_or_loss_ref      OUT VARCHAR2
10527  
10528 --Contract Number
10529  , p_source_1            IN VARCHAR2
10530 --Contract Product Name
10531  , p_source_2            IN VARCHAR2
10532 --Distribution Account
10533  , p_source_5            IN NUMBER
10534 --Accounting Line Type
10535  , p_source_6            IN VARCHAR2
10536  , p_source_6_meaning    IN VARCHAR2
10537 --Accounting Distribution Identifier
10538  , p_source_7            IN NUMBER
10539 --Distribution Type
10540  , p_source_8            IN VARCHAR2
10541 --Distribution Entered Amount
10542  , p_source_9            IN NUMBER
10543 --Transaction Currency Code
10544  , p_source_10            IN VARCHAR2
10545 --Transaction Currency Conversion Date
10546  , p_source_11            IN DATE
10547 --Transaction Currency Conversion Rate
10548  , p_source_12            IN NUMBER
10549 --Transaction Currency Conversion Type
10550  , p_source_13            IN VARCHAR2
10551 )
10552 IS
10553 
10554 l_component_type              VARCHAR2(80);
10555 l_component_code              VARCHAR2(30);
10556 l_component_type_code         VARCHAR2(1);
10557 l_component_appl_id           INTEGER;
10558 l_amb_context_code            VARCHAR2(30);
10559 l_entity_code                 VARCHAR2(30);
10560 l_event_class_code            VARCHAR2(30);
10561 l_ae_header_id                NUMBER;
10562 l_event_type_code             VARCHAR2(30);
10563 l_line_definition_code        VARCHAR2(30);
10564 l_line_definition_owner_code  VARCHAR2(1);
10565 --
10566 -- adr variables
10567 l_segment                     VARCHAR2(30);
10568 l_ccid                        NUMBER;
10569 l_adr_transaction_coa_id      NUMBER;
10570 l_adr_accounting_coa_id       NUMBER;
10571 l_adr_flexfield_segment_code  VARCHAR2(30);
10572 l_adr_flex_value_set_id       NUMBER;
10573 l_adr_value_type_code         VARCHAR2(30);
10574 l_adr_value_combination_id    NUMBER;
10575 l_adr_value_segment_code      VARCHAR2(30);
10576 
10577 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10578 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10579 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10580 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10581 
10582 -- 4262811 Variables ------------------------------------------------------------------------------------------
10583 l_entered_amt_idx             NUMBER;
10584 l_accted_amt_idx              NUMBER;
10585 l_acc_rev_flag                VARCHAR2(1);
10586 l_accrual_line_num            NUMBER;
10587 l_tmp_amt                     NUMBER;
10588 l_acc_rev_natural_side_code   VARCHAR2(1);
10589 
10590 l_num_entries                 NUMBER;
10591 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10592 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10593 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10594 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10595 l_recog_line_1                NUMBER;
10596 l_recog_line_2                NUMBER;
10597 
10598 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10599 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10600 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10601 
10602 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10603 
10604 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10605 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10606 
10607 ---------------------------------------------------------------------------------------------------------------
10608 
10609 
10610 --
10611 -- bulk performance
10612 --
10613 l_balance_type_code           VARCHAR2(1);
10614 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10615 l_log_module                  VARCHAR2(240);
10616 
10617 --
10618 -- Upgrade strategy
10619 --
10620 l_actual_upg_option           VARCHAR2(1);
10621 l_enc_upg_option           VARCHAR2(1);
10622 
10623 --
10624 BEGIN
10625 --
10626 IF g_log_enabled THEN
10627       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
10628 END IF;
10629 --
10633          (p_msg      => 'BEGIN of AcctLineType_23'
10630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10631 
10632       trace
10634          ,p_level    => C_LEVEL_PROCEDURE
10635          ,p_module   => l_log_module);
10636 
10637 END IF;
10638 --
10639 l_component_type             := 'AMB_JLT';
10640 l_component_code             := 'OKL_RELEASE_DR';
10641 l_component_type_code        := 'S';
10642 l_component_appl_id          :=  540;
10643 l_amb_context_code           := 'DEFAULT';
10644 l_entity_code                := 'CONTRACTS';
10645 l_event_class_code           := 'RE_LEASE';
10646 l_event_type_code            := 'RE_LEASE_ALL';
10647 l_line_definition_owner_code := 'S';
10648 l_line_definition_code       := 'OKL_RELEASE';
10649 --
10650 l_balance_type_code          := 'A';
10651 l_segment                     := NULL;
10652 l_ccid                        := NULL;
10653 l_adr_transaction_coa_id      := NULL;
10654 l_adr_accounting_coa_id       := NULL;
10655 l_adr_flexfield_segment_code  := NULL;
10656 l_adr_flex_value_set_id       := NULL;
10657 l_adr_value_type_code         := NULL;
10658 l_adr_value_combination_id    := NULL;
10659 l_adr_value_segment_code      := NULL;
10660 
10661 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10662 l_bflow_class_code           := '';    -- 4219869 Business Flow
10663 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10664 l_budgetary_control_flag     := 'N';
10665 
10666 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10667 l_bflow_applied_to_amt       := NULL; -- 5132302
10668 l_entered_amt_idx            := NULL;          -- 4262811
10669 l_accted_amt_idx             := NULL;          -- 4262811
10670 l_acc_rev_flag               := NULL;          -- 4262811
10671 l_accrual_line_num           := NULL;          -- 4262811
10672 l_tmp_amt                    := NULL;          -- 4262811
10673 --
10674  
10675 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10676     l_balance_type_code <> 'B' THEN
10677 IF NVL(p_source_6,'
10678 ') =  'LEASE_DEBIT'
10679  THEN 
10680 
10681    --
10682    XLA_AE_LINES_PKG.SetNewLine;
10683 
10684    p_balance_type_code          := l_balance_type_code;
10685    -- set the flag so later we will know whether the gain loss line needs to be created
10686    
10687    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10688      p_actual_flag :='A';
10689    END IF;
10690 
10691    --
10692    -- bulk performance
10693    --
10694    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10695                                       p_header_num   => 0); -- 4262811
10696    --
10697    -- set accounting line options
10698    --
10699    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10700            p_natural_side_code          => 'D'
10701          , p_gain_or_loss_flag          => 'N'
10702          , p_gl_transfer_mode_code      => 'S'
10703          , p_acct_entry_type_code       => 'A'
10704          , p_switch_side_flag           => 'Y'
10705          , p_merge_duplicate_code       => 'N'
10706          );
10707    --
10708    l_acc_rev_natural_side_code := 'C';  -- 4262811
10709    -- 
10710    --
10711    -- set accounting line type info
10712    --
10713    xla_ae_lines_pkg.SetAcctLineType
10714       (p_component_type             => l_component_type
10715       ,p_event_type_code            => l_event_type_code
10716       ,p_line_definition_owner_code => l_line_definition_owner_code
10717       ,p_line_definition_code       => l_line_definition_code
10718       ,p_accounting_line_code       => l_component_code
10719       ,p_accounting_line_type_code  => l_component_type_code
10720       ,p_accounting_line_appl_id    => l_component_appl_id
10721       ,p_amb_context_code           => l_amb_context_code
10722       ,p_entity_code                => l_entity_code
10723       ,p_event_class_code           => l_event_class_code);
10724    --
10725    -- set accounting class
10726    --
10727    xla_ae_lines_pkg.SetAcctClass(
10728            p_accounting_class_code  => 'RELEASE'
10729          , p_ae_header_id           => l_ae_header_id
10730          );
10731 
10732    --
10733    -- set rounding class
10734    --
10735    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10736                       'RELEASE';
10737 
10738    --
10739    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10740    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10741    --
10742    -- bulk performance
10743    --
10744    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10745 
10746    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10747       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10748 
10749    -- 4955764
10750    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10751       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10752 
10753    -- 4458381 Public Sector Enh
10754    
10755    --
10756    -- set accounting attributes for the line type
10757    --
10758    l_entered_amt_idx := 3;
10759    l_accted_amt_idx  := NULL;
10760    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10761    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10762    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
10763    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10764    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
10765    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10769    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10766    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
10767    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10768    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
10770    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
10771    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10772    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
10773    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10774    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
10775 
10776    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10777    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10778 
10779    ---------------------------------------------------------------------------------------------------------------
10780    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10781    ---------------------------------------------------------------------------------------------------------------
10782    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10783 
10784    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10785    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10786 
10787    IF xla_accounting_cache_pkg.GetValueChar
10788          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10789          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10790    AND l_bflow_method_code = 'PRIOR_ENTRY'
10791 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10792    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10793          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10794        )
10795    THEN
10796          xla_ae_lines_pkg.BflowUpgEntry
10797            (p_business_method_code    => l_bflow_method_code
10798            ,p_business_class_code     => l_bflow_class_code
10799            ,p_balance_type            => l_balance_type_code);
10800    ELSE
10801       NULL;
10802 -- No business flow processing for business flow method of NONE.
10803    END IF;
10804 
10805    --
10806    -- call analytical criteria
10807    --
10808    
10809    --
10810    -- call description
10811    --
10812    
10813 xla_ae_lines_pkg.SetLineDescription(
10814    p_ae_header_id => l_ae_header_id
10815   ,p_description  => Description_1 (
10816      p_application_id         => p_application_id
10817    , p_ae_header_id           => l_ae_header_id 
10818 , p_source_1 => p_source_1
10819 , p_source_2 => p_source_2
10820    )
10821 );
10822 
10823 
10824    --
10825    -- call ADRs
10826    -- Bug 4922099
10827    --
10828    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10829         (NVL(l_actual_upg_option, 'N') = 'O') OR
10830         (NVL(l_enc_upg_option, 'N') = 'O')
10831       )
10832    THEN
10833    NULL;
10834    --
10835    --
10836    
10837   l_ccid := AcctDerRule_3(
10838            p_application_id           => p_application_id
10839          , p_ae_header_id             => l_ae_header_id 
10840 , p_source_5 => p_source_5
10841          , x_transaction_coa_id       => l_adr_transaction_coa_id
10842          , x_accounting_coa_id        => l_adr_accounting_coa_id
10843          , x_value_type_code          => l_adr_value_type_code
10844          , p_side                     => 'NA'
10845    );
10846 
10847    xla_ae_lines_pkg.set_ccid(
10848     p_code_combination_id          => l_ccid
10849   , p_value_type_code              => l_adr_value_type_code
10850   , p_transaction_coa_id           => l_adr_transaction_coa_id
10851   , p_accounting_coa_id            => l_adr_accounting_coa_id
10852   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
10853   , p_adr_type_code                => 'S'
10854   , p_component_type               => l_component_type
10855   , p_component_code               => l_component_code
10856   , p_component_type_code          => l_component_type_code
10857   , p_component_appl_id            => l_component_appl_id
10858   , p_amb_context_code             => l_amb_context_code
10859   , p_side                         => 'NA'
10860   );
10861 
10862 
10863    --
10864    --
10865    END IF;
10866    --
10867    -- Bug 4922099
10868    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10869           (NVL(l_enc_upg_option, 'N') = 'O')
10870         ) AND
10871         (l_bflow_method_code = 'PRIOR_ENTRY')
10872       )
10873    THEN
10874       IF
10875       --
10876       1 = 2
10877       --
10878       THEN
10879       xla_accounting_err_pkg.build_message
10880                                     (p_appli_s_name            => 'XLA'
10881                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10882                                     ,p_token_1                 => 'LINE_NUMBER'
10883                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10884                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10885                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10886                                                                              l_component_type
10887                                                                             ,l_component_code
10888                                                                             ,l_component_type_code
10889                                                                             ,l_component_appl_id
10890                                                                             ,l_amb_context_code
10894                                     ,p_token_3                 => 'OWNER'
10891                                                                             ,l_entity_code
10892                                                                             ,l_event_class_code
10893                                                                            )
10895                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10896                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10897                                                                           ,p_lookup_code    => l_component_type_code
10898                                                                          )
10899                                     ,p_token_4                 => 'PRODUCT_NAME'
10900                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10901                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10902                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10903                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10904                                     ,p_ae_header_id            =>  NULL
10905                                        );
10906 
10907         IF (C_LEVEL_ERROR>= g_log_level) THEN
10908                  trace
10909                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10910                       ,p_level    => C_LEVEL_ERROR
10911                       ,p_module   => l_log_module);
10912         END IF;
10913       END IF;
10914    END IF;
10915    --
10916    --
10917    ------------------------------------------------------------------------------------------------
10918    -- 4219869 Business Flow
10919    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10920    -- Prior Entry.  Currently, the following code is always generated.
10921    ------------------------------------------------------------------------------------------------
10922    XLA_AE_LINES_PKG.ValidateCurrentLine;
10923 
10924    ------------------------------------------------------------------------------------
10925    -- 4219869 Business Flow
10926    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10927    ------------------------------------------------------------------------------------
10928    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10929 
10930    ----------------------------------------------------------------------------------
10931    -- 4219869 Business Flow
10932    -- Update journal entry status -- Need to generate this within IF <condition>
10933    ----------------------------------------------------------------------------------
10934    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10935          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10936          ,p_balance_type_code => l_balance_type_code
10937          );
10938 
10939    -------------------------------------------------------------------------------------------
10940    -- 4262811 - Generate the Accrual Reversal lines
10941    -------------------------------------------------------------------------------------------
10942    BEGIN
10943       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10944                               (g_array_event(p_event_id).array_value_num('header_index'));
10945       IF l_acc_rev_flag IS NULL THEN
10946          l_acc_rev_flag := 'N';
10947       END IF;
10948    EXCEPTION
10949       WHEN OTHERS THEN
10950          l_acc_rev_flag := 'N';
10951    END;
10952    --
10953    IF (l_acc_rev_flag = 'Y') THEN
10954 
10955        -- 4645092  ------------------------------------------------------------------------------
10956        -- To allow MPA report to determine if it should generate report process
10957        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10958        ------------------------------------------------------------------------------------------
10959 
10960        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10961        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10962 
10963        --
10964        -- Update the line information that should be overwritten
10965        --
10966        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10967                                          p_header_num   => 1);
10968        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10969 
10970        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10971 
10972        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10973           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10974        END IF;
10975 
10976       --
10977       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10978       --
10979       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10980           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10981       ELSE
10982           ---------------------------------------------------------------------------------------------------
10983           -- 4262811a Switch Sign
10984           ---------------------------------------------------------------------------------------------------
10985           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10986           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10987                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10988           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10992                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10989                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10990           -- 5132302
10991           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10993 
10994       END IF;
10995 
10996       -- 4955764
10997       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10999 
11000 
11001       XLA_AE_LINES_PKG.ValidateCurrentLine;
11002       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11003 
11004       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11005                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11006                ,p_balance_type_code => l_balance_type_code);
11007 
11008    END IF;
11009 
11010    -----------------------------------------------------------------------------------------
11011    -- 4262811 Multiperiod Accounting
11012    -----------------------------------------------------------------------------------------
11013      -- No MPA option is assigned.
11014 
11015 
11016 END IF;
11017 END IF;
11018 --
11019 
11020 --
11021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11022    trace
11023       (p_msg      => 'END of AcctLineType_23'
11024       ,p_level    => C_LEVEL_PROCEDURE
11025       ,p_module   => l_log_module);
11026 END IF;
11027 --
11028 EXCEPTION
11029   WHEN xla_exceptions_pkg.application_exception THEN
11030       RAISE;
11031   WHEN OTHERS THEN
11032        xla_exceptions_pkg.raise_message
11033            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_23');
11034 END AcctLineType_23;
11035 --
11036 
11037 ---------------------------------------
11038 --
11039 -- PRIVATE FUNCTION
11040 --         AcctLineType_24
11041 --
11042 ---------------------------------------
11043 PROCEDURE AcctLineType_24 (
11044   p_application_id        IN NUMBER
11045  ,p_event_id              IN NUMBER
11046  ,p_calculate_acctd_flag  IN VARCHAR2
11047  ,p_calculate_g_l_flag    IN VARCHAR2
11048  ,p_actual_flag           IN OUT VARCHAR2
11049  ,p_balance_type_code     OUT VARCHAR2
11050  ,p_gain_or_loss_ref      OUT VARCHAR2
11051  
11052 --Contract Number
11053  , p_source_1            IN VARCHAR2
11054 --Contract Product Name
11055  , p_source_2            IN VARCHAR2
11056 --Distribution Account
11057  , p_source_5            IN NUMBER
11058 --Accounting Line Type
11059  , p_source_6            IN VARCHAR2
11060  , p_source_6_meaning    IN VARCHAR2
11061 --Accounting Distribution Identifier
11062  , p_source_7            IN NUMBER
11063 --Distribution Type
11064  , p_source_8            IN VARCHAR2
11065 --Distribution Entered Amount
11066  , p_source_9            IN NUMBER
11067 --Transaction Currency Code
11068  , p_source_10            IN VARCHAR2
11069 --Transaction Currency Conversion Date
11070  , p_source_11            IN DATE
11071 --Transaction Currency Conversion Rate
11072  , p_source_12            IN NUMBER
11073 --Transaction Currency Conversion Type
11074  , p_source_13            IN VARCHAR2
11075 )
11076 IS
11077 
11078 l_component_type              VARCHAR2(80);
11079 l_component_code              VARCHAR2(30);
11080 l_component_type_code         VARCHAR2(1);
11081 l_component_appl_id           INTEGER;
11082 l_amb_context_code            VARCHAR2(30);
11083 l_entity_code                 VARCHAR2(30);
11084 l_event_class_code            VARCHAR2(30);
11085 l_ae_header_id                NUMBER;
11086 l_event_type_code             VARCHAR2(30);
11087 l_line_definition_code        VARCHAR2(30);
11088 l_line_definition_owner_code  VARCHAR2(1);
11089 --
11090 -- adr variables
11091 l_segment                     VARCHAR2(30);
11092 l_ccid                        NUMBER;
11093 l_adr_transaction_coa_id      NUMBER;
11094 l_adr_accounting_coa_id       NUMBER;
11095 l_adr_flexfield_segment_code  VARCHAR2(30);
11096 l_adr_flex_value_set_id       NUMBER;
11097 l_adr_value_type_code         VARCHAR2(30);
11098 l_adr_value_combination_id    NUMBER;
11099 l_adr_value_segment_code      VARCHAR2(30);
11100 
11101 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11102 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11103 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11104 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11105 
11106 -- 4262811 Variables ------------------------------------------------------------------------------------------
11107 l_entered_amt_idx             NUMBER;
11108 l_accted_amt_idx              NUMBER;
11109 l_acc_rev_flag                VARCHAR2(1);
11110 l_accrual_line_num            NUMBER;
11111 l_tmp_amt                     NUMBER;
11112 l_acc_rev_natural_side_code   VARCHAR2(1);
11113 
11114 l_num_entries                 NUMBER;
11115 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11116 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11117 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11118 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11119 l_recog_line_1                NUMBER;
11120 l_recog_line_2                NUMBER;
11121 
11122 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11123 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11124 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11125 
11126 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11127 
11131 ---------------------------------------------------------------------------------------------------------------
11128 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11129 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11130 
11132 
11133 
11134 --
11135 -- bulk performance
11136 --
11137 l_balance_type_code           VARCHAR2(1);
11138 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11139 l_log_module                  VARCHAR2(240);
11140 
11141 --
11142 -- Upgrade strategy
11143 --
11144 l_actual_upg_option           VARCHAR2(1);
11145 l_enc_upg_option           VARCHAR2(1);
11146 
11147 --
11148 BEGIN
11149 --
11150 IF g_log_enabled THEN
11151       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
11152 END IF;
11153 --
11154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11155 
11156       trace
11157          (p_msg      => 'BEGIN of AcctLineType_24'
11158          ,p_level    => C_LEVEL_PROCEDURE
11159          ,p_module   => l_log_module);
11160 
11161 END IF;
11162 --
11163 l_component_type             := 'AMB_JLT';
11164 l_component_code             := 'OKL_SPECIFIC_LOSS_PROVISION_CR';
11165 l_component_type_code        := 'S';
11166 l_component_appl_id          :=  540;
11167 l_amb_context_code           := 'DEFAULT';
11168 l_entity_code                := 'TRANSACTIONS';
11169 l_event_class_code           := 'SPECIFIC_LOSS_PROVISION';
11170 l_event_type_code            := 'SPECIFIC_LOSS_PROVISION_ALL';
11171 l_line_definition_owner_code := 'S';
11172 l_line_definition_code       := 'OKL_SPECIFIC_LOSS_PROVISION';
11173 --
11174 l_balance_type_code          := 'A';
11175 l_segment                     := NULL;
11176 l_ccid                        := NULL;
11177 l_adr_transaction_coa_id      := NULL;
11178 l_adr_accounting_coa_id       := NULL;
11179 l_adr_flexfield_segment_code  := NULL;
11180 l_adr_flex_value_set_id       := NULL;
11181 l_adr_value_type_code         := NULL;
11182 l_adr_value_combination_id    := NULL;
11183 l_adr_value_segment_code      := NULL;
11184 
11185 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11186 l_bflow_class_code           := '';    -- 4219869 Business Flow
11187 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11188 l_budgetary_control_flag     := 'N';
11189 
11190 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11191 l_bflow_applied_to_amt       := NULL; -- 5132302
11192 l_entered_amt_idx            := NULL;          -- 4262811
11193 l_accted_amt_idx             := NULL;          -- 4262811
11194 l_acc_rev_flag               := NULL;          -- 4262811
11195 l_accrual_line_num           := NULL;          -- 4262811
11196 l_tmp_amt                    := NULL;          -- 4262811
11197 --
11198  
11199 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11200     l_balance_type_code <> 'B' THEN
11201 IF NVL(p_source_6,'
11202 ') =  'LEASE_CREDIT'
11203  THEN 
11204 
11205    --
11206    XLA_AE_LINES_PKG.SetNewLine;
11207 
11208    p_balance_type_code          := l_balance_type_code;
11209    -- set the flag so later we will know whether the gain loss line needs to be created
11210    
11211    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11212      p_actual_flag :='A';
11213    END IF;
11214 
11215    --
11216    -- bulk performance
11217    --
11218    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11219                                       p_header_num   => 0); -- 4262811
11220    --
11221    -- set accounting line options
11222    --
11223    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11224            p_natural_side_code          => 'C'
11225          , p_gain_or_loss_flag          => 'N'
11226          , p_gl_transfer_mode_code      => 'S'
11227          , p_acct_entry_type_code       => 'A'
11228          , p_switch_side_flag           => 'Y'
11229          , p_merge_duplicate_code       => 'N'
11230          );
11231    --
11232    l_acc_rev_natural_side_code := 'D';  -- 4262811
11233    -- 
11234    --
11235    -- set accounting line type info
11236    --
11237    xla_ae_lines_pkg.SetAcctLineType
11238       (p_component_type             => l_component_type
11239       ,p_event_type_code            => l_event_type_code
11240       ,p_line_definition_owner_code => l_line_definition_owner_code
11241       ,p_line_definition_code       => l_line_definition_code
11242       ,p_accounting_line_code       => l_component_code
11243       ,p_accounting_line_type_code  => l_component_type_code
11244       ,p_accounting_line_appl_id    => l_component_appl_id
11245       ,p_amb_context_code           => l_amb_context_code
11246       ,p_entity_code                => l_entity_code
11247       ,p_event_class_code           => l_event_class_code);
11248    --
11249    -- set accounting class
11250    --
11251    xla_ae_lines_pkg.SetAcctClass(
11252            p_accounting_class_code  => 'SPECIFIC_LOSS_PROVISION'
11253          , p_ae_header_id           => l_ae_header_id
11254          );
11255 
11256    --
11257    -- set rounding class
11258    --
11259    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11260                       'SPECIFIC_LOSS_PROVISION';
11261 
11262    --
11263    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11264    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11265    --
11266    -- bulk performance
11267    --
11268    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11269 
11273    -- 4955764
11270    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11271       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11272 
11274    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11275       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11276 
11277    -- 4458381 Public Sector Enh
11278    
11279    --
11280    -- set accounting attributes for the line type
11281    --
11282    l_entered_amt_idx := 3;
11283    l_accted_amt_idx  := NULL;
11284    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11285    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11286    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
11287    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11288    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
11289    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11290    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
11291    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11292    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
11293    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11294    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
11295    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11296    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
11297    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11298    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
11299 
11300    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11301    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11302 
11303    ---------------------------------------------------------------------------------------------------------------
11304    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11305    ---------------------------------------------------------------------------------------------------------------
11306    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11307 
11308    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11309    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11310 
11311    IF xla_accounting_cache_pkg.GetValueChar
11312          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11313          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11314    AND l_bflow_method_code = 'PRIOR_ENTRY'
11315 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11316    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11317          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11318        )
11319    THEN
11320          xla_ae_lines_pkg.BflowUpgEntry
11321            (p_business_method_code    => l_bflow_method_code
11322            ,p_business_class_code     => l_bflow_class_code
11323            ,p_balance_type            => l_balance_type_code);
11324    ELSE
11325       NULL;
11326 -- No business flow processing for business flow method of NONE.
11327    END IF;
11328 
11329    --
11330    -- call analytical criteria
11331    --
11332    
11333    --
11334    -- call description
11335    --
11336    
11337 xla_ae_lines_pkg.SetLineDescription(
11338    p_ae_header_id => l_ae_header_id
11339   ,p_description  => Description_1 (
11340      p_application_id         => p_application_id
11341    , p_ae_header_id           => l_ae_header_id 
11342 , p_source_1 => p_source_1
11343 , p_source_2 => p_source_2
11344    )
11345 );
11346 
11347 
11348    --
11349    -- call ADRs
11350    -- Bug 4922099
11351    --
11352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11353         (NVL(l_actual_upg_option, 'N') = 'O') OR
11354         (NVL(l_enc_upg_option, 'N') = 'O')
11355       )
11356    THEN
11357    NULL;
11358    --
11359    --
11360    
11361   l_ccid := AcctDerRule_3(
11362            p_application_id           => p_application_id
11363          , p_ae_header_id             => l_ae_header_id 
11364 , p_source_5 => p_source_5
11365          , x_transaction_coa_id       => l_adr_transaction_coa_id
11366          , x_accounting_coa_id        => l_adr_accounting_coa_id
11367          , x_value_type_code          => l_adr_value_type_code
11368          , p_side                     => 'NA'
11369    );
11370 
11371    xla_ae_lines_pkg.set_ccid(
11372     p_code_combination_id          => l_ccid
11373   , p_value_type_code              => l_adr_value_type_code
11374   , p_transaction_coa_id           => l_adr_transaction_coa_id
11375   , p_accounting_coa_id            => l_adr_accounting_coa_id
11376   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
11377   , p_adr_type_code                => 'S'
11378   , p_component_type               => l_component_type
11379   , p_component_code               => l_component_code
11380   , p_component_type_code          => l_component_type_code
11381   , p_component_appl_id            => l_component_appl_id
11382   , p_amb_context_code             => l_amb_context_code
11383   , p_side                         => 'NA'
11384   );
11385 
11386 
11387    --
11388    --
11389    END IF;
11390    --
11391    -- Bug 4922099
11392    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11393           (NVL(l_enc_upg_option, 'N') = 'O')
11394         ) AND
11395         (l_bflow_method_code = 'PRIOR_ENTRY')
11396       )
11397    THEN
11398       IF
11399       --
11400       1 = 2
11401       --
11402       THEN
11403       xla_accounting_err_pkg.build_message
11407                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11404                                     (p_appli_s_name            => 'XLA'
11405                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11406                                     ,p_token_1                 => 'LINE_NUMBER'
11408                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11409                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11410                                                                              l_component_type
11411                                                                             ,l_component_code
11412                                                                             ,l_component_type_code
11413                                                                             ,l_component_appl_id
11414                                                                             ,l_amb_context_code
11415                                                                             ,l_entity_code
11416                                                                             ,l_event_class_code
11417                                                                            )
11418                                     ,p_token_3                 => 'OWNER'
11419                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11420                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11421                                                                           ,p_lookup_code    => l_component_type_code
11422                                                                          )
11423                                     ,p_token_4                 => 'PRODUCT_NAME'
11424                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11425                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11426                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11427                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11428                                     ,p_ae_header_id            =>  NULL
11429                                        );
11430 
11431         IF (C_LEVEL_ERROR>= g_log_level) THEN
11432                  trace
11433                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11434                       ,p_level    => C_LEVEL_ERROR
11435                       ,p_module   => l_log_module);
11436         END IF;
11437       END IF;
11438    END IF;
11439    --
11440    --
11441    ------------------------------------------------------------------------------------------------
11442    -- 4219869 Business Flow
11443    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11444    -- Prior Entry.  Currently, the following code is always generated.
11445    ------------------------------------------------------------------------------------------------
11446    XLA_AE_LINES_PKG.ValidateCurrentLine;
11447 
11448    ------------------------------------------------------------------------------------
11449    -- 4219869 Business Flow
11450    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11451    ------------------------------------------------------------------------------------
11452    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11453 
11454    ----------------------------------------------------------------------------------
11455    -- 4219869 Business Flow
11456    -- Update journal entry status -- Need to generate this within IF <condition>
11457    ----------------------------------------------------------------------------------
11458    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11459          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11460          ,p_balance_type_code => l_balance_type_code
11461          );
11462 
11463    -------------------------------------------------------------------------------------------
11464    -- 4262811 - Generate the Accrual Reversal lines
11465    -------------------------------------------------------------------------------------------
11466    BEGIN
11467       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11468                               (g_array_event(p_event_id).array_value_num('header_index'));
11469       IF l_acc_rev_flag IS NULL THEN
11470          l_acc_rev_flag := 'N';
11471       END IF;
11472    EXCEPTION
11473       WHEN OTHERS THEN
11474          l_acc_rev_flag := 'N';
11475    END;
11476    --
11477    IF (l_acc_rev_flag = 'Y') THEN
11478 
11479        -- 4645092  ------------------------------------------------------------------------------
11480        -- To allow MPA report to determine if it should generate report process
11481        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11482        ------------------------------------------------------------------------------------------
11483 
11484        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11485        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11486 
11487        --
11488        -- Update the line information that should be overwritten
11489        --
11490        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11491                                          p_header_num   => 1);
11492        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11493 
11494        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11495 
11496        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11497           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11498        END IF;
11499 
11500       --
11504           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11501       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11502       --
11503       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11505       ELSE
11506           ---------------------------------------------------------------------------------------------------
11507           -- 4262811a Switch Sign
11508           ---------------------------------------------------------------------------------------------------
11509           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11510           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11511                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11512           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11513                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11514           -- 5132302
11515           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11516                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11517 
11518       END IF;
11519 
11520       -- 4955764
11521       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11522       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11523 
11524 
11525       XLA_AE_LINES_PKG.ValidateCurrentLine;
11526       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11527 
11528       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11529                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11530                ,p_balance_type_code => l_balance_type_code);
11531 
11532    END IF;
11533 
11534    -----------------------------------------------------------------------------------------
11535    -- 4262811 Multiperiod Accounting
11536    -----------------------------------------------------------------------------------------
11537      -- No MPA option is assigned.
11538 
11539 
11540 END IF;
11541 END IF;
11542 --
11543 
11544 --
11545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11546    trace
11547       (p_msg      => 'END of AcctLineType_24'
11548       ,p_level    => C_LEVEL_PROCEDURE
11549       ,p_module   => l_log_module);
11550 END IF;
11551 --
11552 EXCEPTION
11553   WHEN xla_exceptions_pkg.application_exception THEN
11554       RAISE;
11555   WHEN OTHERS THEN
11556        xla_exceptions_pkg.raise_message
11557            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_24');
11558 END AcctLineType_24;
11559 --
11560 
11561 ---------------------------------------
11562 --
11563 -- PRIVATE FUNCTION
11564 --         AcctLineType_25
11565 --
11566 ---------------------------------------
11567 PROCEDURE AcctLineType_25 (
11568   p_application_id        IN NUMBER
11569  ,p_event_id              IN NUMBER
11570  ,p_calculate_acctd_flag  IN VARCHAR2
11571  ,p_calculate_g_l_flag    IN VARCHAR2
11572  ,p_actual_flag           IN OUT VARCHAR2
11573  ,p_balance_type_code     OUT VARCHAR2
11574  ,p_gain_or_loss_ref      OUT VARCHAR2
11575  
11576 --Contract Number
11577  , p_source_1            IN VARCHAR2
11578 --Contract Product Name
11579  , p_source_2            IN VARCHAR2
11580 --Distribution Account
11581  , p_source_5            IN NUMBER
11582 --Accounting Line Type
11583  , p_source_6            IN VARCHAR2
11584  , p_source_6_meaning    IN VARCHAR2
11585 --Accounting Distribution Identifier
11586  , p_source_7            IN NUMBER
11587 --Distribution Type
11588  , p_source_8            IN VARCHAR2
11589 --Distribution Entered Amount
11590  , p_source_9            IN NUMBER
11591 --Transaction Currency Code
11592  , p_source_10            IN VARCHAR2
11593 --Transaction Currency Conversion Date
11594  , p_source_11            IN DATE
11595 --Transaction Currency Conversion Rate
11596  , p_source_12            IN NUMBER
11597 --Transaction Currency Conversion Type
11598  , p_source_13            IN VARCHAR2
11599 )
11600 IS
11601 
11602 l_component_type              VARCHAR2(80);
11603 l_component_code              VARCHAR2(30);
11604 l_component_type_code         VARCHAR2(1);
11605 l_component_appl_id           INTEGER;
11606 l_amb_context_code            VARCHAR2(30);
11607 l_entity_code                 VARCHAR2(30);
11608 l_event_class_code            VARCHAR2(30);
11609 l_ae_header_id                NUMBER;
11610 l_event_type_code             VARCHAR2(30);
11611 l_line_definition_code        VARCHAR2(30);
11612 l_line_definition_owner_code  VARCHAR2(1);
11613 --
11614 -- adr variables
11615 l_segment                     VARCHAR2(30);
11616 l_ccid                        NUMBER;
11617 l_adr_transaction_coa_id      NUMBER;
11618 l_adr_accounting_coa_id       NUMBER;
11619 l_adr_flexfield_segment_code  VARCHAR2(30);
11620 l_adr_flex_value_set_id       NUMBER;
11621 l_adr_value_type_code         VARCHAR2(30);
11622 l_adr_value_combination_id    NUMBER;
11623 l_adr_value_segment_code      VARCHAR2(30);
11624 
11625 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11626 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11627 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11628 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11629 
11630 -- 4262811 Variables ------------------------------------------------------------------------------------------
11631 l_entered_amt_idx             NUMBER;
11632 l_accted_amt_idx              NUMBER;
11636 l_acc_rev_natural_side_code   VARCHAR2(1);
11633 l_acc_rev_flag                VARCHAR2(1);
11634 l_accrual_line_num            NUMBER;
11635 l_tmp_amt                     NUMBER;
11637 
11638 l_num_entries                 NUMBER;
11639 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11640 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11641 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11642 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11643 l_recog_line_1                NUMBER;
11644 l_recog_line_2                NUMBER;
11645 
11646 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11647 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11648 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11649 
11650 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11651 
11652 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11653 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11654 
11655 ---------------------------------------------------------------------------------------------------------------
11656 
11657 
11658 --
11659 -- bulk performance
11660 --
11661 l_balance_type_code           VARCHAR2(1);
11662 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11663 l_log_module                  VARCHAR2(240);
11664 
11665 --
11666 -- Upgrade strategy
11667 --
11668 l_actual_upg_option           VARCHAR2(1);
11669 l_enc_upg_option           VARCHAR2(1);
11670 
11671 --
11672 BEGIN
11673 --
11674 IF g_log_enabled THEN
11675       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
11676 END IF;
11677 --
11678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11679 
11680       trace
11681          (p_msg      => 'BEGIN of AcctLineType_25'
11682          ,p_level    => C_LEVEL_PROCEDURE
11683          ,p_module   => l_log_module);
11684 
11685 END IF;
11686 --
11687 l_component_type             := 'AMB_JLT';
11688 l_component_code             := 'OKL_SPECIFIC_LOSS_PROVISION_DR';
11689 l_component_type_code        := 'S';
11690 l_component_appl_id          :=  540;
11691 l_amb_context_code           := 'DEFAULT';
11692 l_entity_code                := 'TRANSACTIONS';
11693 l_event_class_code           := 'SPECIFIC_LOSS_PROVISION';
11694 l_event_type_code            := 'SPECIFIC_LOSS_PROVISION_ALL';
11695 l_line_definition_owner_code := 'S';
11696 l_line_definition_code       := 'OKL_SPECIFIC_LOSS_PROVISION';
11697 --
11698 l_balance_type_code          := 'A';
11699 l_segment                     := NULL;
11700 l_ccid                        := NULL;
11701 l_adr_transaction_coa_id      := NULL;
11702 l_adr_accounting_coa_id       := NULL;
11703 l_adr_flexfield_segment_code  := NULL;
11704 l_adr_flex_value_set_id       := NULL;
11705 l_adr_value_type_code         := NULL;
11706 l_adr_value_combination_id    := NULL;
11707 l_adr_value_segment_code      := NULL;
11708 
11709 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11710 l_bflow_class_code           := '';    -- 4219869 Business Flow
11711 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11712 l_budgetary_control_flag     := 'N';
11713 
11714 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11715 l_bflow_applied_to_amt       := NULL; -- 5132302
11716 l_entered_amt_idx            := NULL;          -- 4262811
11717 l_accted_amt_idx             := NULL;          -- 4262811
11718 l_acc_rev_flag               := NULL;          -- 4262811
11719 l_accrual_line_num           := NULL;          -- 4262811
11720 l_tmp_amt                    := NULL;          -- 4262811
11721 --
11722  
11723 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11724     l_balance_type_code <> 'B' THEN
11725 IF NVL(p_source_6,'
11726 ') =  'LEASE_DEBIT'
11727  THEN 
11728 
11729    --
11730    XLA_AE_LINES_PKG.SetNewLine;
11731 
11732    p_balance_type_code          := l_balance_type_code;
11733    -- set the flag so later we will know whether the gain loss line needs to be created
11734    
11735    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11736      p_actual_flag :='A';
11737    END IF;
11738 
11739    --
11740    -- bulk performance
11741    --
11742    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11743                                       p_header_num   => 0); -- 4262811
11744    --
11745    -- set accounting line options
11746    --
11747    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11748            p_natural_side_code          => 'D'
11749          , p_gain_or_loss_flag          => 'N'
11750          , p_gl_transfer_mode_code      => 'S'
11751          , p_acct_entry_type_code       => 'A'
11752          , p_switch_side_flag           => 'Y'
11753          , p_merge_duplicate_code       => 'N'
11754          );
11755    --
11756    l_acc_rev_natural_side_code := 'C';  -- 4262811
11757    -- 
11758    --
11759    -- set accounting line type info
11760    --
11761    xla_ae_lines_pkg.SetAcctLineType
11762       (p_component_type             => l_component_type
11763       ,p_event_type_code            => l_event_type_code
11764       ,p_line_definition_owner_code => l_line_definition_owner_code
11765       ,p_line_definition_code       => l_line_definition_code
11766       ,p_accounting_line_code       => l_component_code
11767       ,p_accounting_line_type_code  => l_component_type_code
11768       ,p_accounting_line_appl_id    => l_component_appl_id
11769       ,p_amb_context_code           => l_amb_context_code
11770       ,p_entity_code                => l_entity_code
11774    --
11771       ,p_event_class_code           => l_event_class_code);
11772    --
11773    -- set accounting class
11775    xla_ae_lines_pkg.SetAcctClass(
11776            p_accounting_class_code  => 'SPECIFIC_LOSS_PROVISION'
11777          , p_ae_header_id           => l_ae_header_id
11778          );
11779 
11780    --
11781    -- set rounding class
11782    --
11783    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11784                       'SPECIFIC_LOSS_PROVISION';
11785 
11786    --
11787    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11788    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11789    --
11790    -- bulk performance
11791    --
11792    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11793 
11794    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11795       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11796 
11797    -- 4955764
11798    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11799       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11800 
11801    -- 4458381 Public Sector Enh
11802    
11803    --
11804    -- set accounting attributes for the line type
11805    --
11806    l_entered_amt_idx := 3;
11807    l_accted_amt_idx  := NULL;
11808    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11809    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11810    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
11811    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11812    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
11813    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11814    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
11815    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11816    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
11817    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11818    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
11819    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11820    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
11821    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11822    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
11823 
11824    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11825    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11826 
11827    ---------------------------------------------------------------------------------------------------------------
11828    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11829    ---------------------------------------------------------------------------------------------------------------
11830    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11831 
11832    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11833    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11834 
11835    IF xla_accounting_cache_pkg.GetValueChar
11836          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11837          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11838    AND l_bflow_method_code = 'PRIOR_ENTRY'
11839 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11840    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11841          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11842        )
11843    THEN
11844          xla_ae_lines_pkg.BflowUpgEntry
11845            (p_business_method_code    => l_bflow_method_code
11846            ,p_business_class_code     => l_bflow_class_code
11847            ,p_balance_type            => l_balance_type_code);
11848    ELSE
11849       NULL;
11850 -- No business flow processing for business flow method of NONE.
11851    END IF;
11852 
11853    --
11854    -- call analytical criteria
11855    --
11856    
11857    --
11858    -- call description
11859    --
11860    
11861 xla_ae_lines_pkg.SetLineDescription(
11862    p_ae_header_id => l_ae_header_id
11863   ,p_description  => Description_1 (
11864      p_application_id         => p_application_id
11865    , p_ae_header_id           => l_ae_header_id 
11866 , p_source_1 => p_source_1
11867 , p_source_2 => p_source_2
11868    )
11869 );
11870 
11871 
11872    --
11873    -- call ADRs
11874    -- Bug 4922099
11875    --
11876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11877         (NVL(l_actual_upg_option, 'N') = 'O') OR
11878         (NVL(l_enc_upg_option, 'N') = 'O')
11879       )
11880    THEN
11881    NULL;
11882    --
11883    --
11884    
11885   l_ccid := AcctDerRule_3(
11886            p_application_id           => p_application_id
11887          , p_ae_header_id             => l_ae_header_id 
11888 , p_source_5 => p_source_5
11889          , x_transaction_coa_id       => l_adr_transaction_coa_id
11890          , x_accounting_coa_id        => l_adr_accounting_coa_id
11891          , x_value_type_code          => l_adr_value_type_code
11892          , p_side                     => 'NA'
11893    );
11894 
11895    xla_ae_lines_pkg.set_ccid(
11896     p_code_combination_id          => l_ccid
11897   , p_value_type_code              => l_adr_value_type_code
11898   , p_transaction_coa_id           => l_adr_transaction_coa_id
11899   , p_accounting_coa_id            => l_adr_accounting_coa_id
11903   , p_component_code               => l_component_code
11900   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
11901   , p_adr_type_code                => 'S'
11902   , p_component_type               => l_component_type
11904   , p_component_type_code          => l_component_type_code
11905   , p_component_appl_id            => l_component_appl_id
11906   , p_amb_context_code             => l_amb_context_code
11907   , p_side                         => 'NA'
11908   );
11909 
11910 
11911    --
11912    --
11913    END IF;
11914    --
11915    -- Bug 4922099
11916    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11917           (NVL(l_enc_upg_option, 'N') = 'O')
11918         ) AND
11919         (l_bflow_method_code = 'PRIOR_ENTRY')
11920       )
11921    THEN
11922       IF
11923       --
11924       1 = 2
11925       --
11926       THEN
11927       xla_accounting_err_pkg.build_message
11928                                     (p_appli_s_name            => 'XLA'
11929                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11930                                     ,p_token_1                 => 'LINE_NUMBER'
11931                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11932                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11933                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11934                                                                              l_component_type
11935                                                                             ,l_component_code
11936                                                                             ,l_component_type_code
11937                                                                             ,l_component_appl_id
11938                                                                             ,l_amb_context_code
11939                                                                             ,l_entity_code
11940                                                                             ,l_event_class_code
11941                                                                            )
11942                                     ,p_token_3                 => 'OWNER'
11943                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11944                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11945                                                                           ,p_lookup_code    => l_component_type_code
11946                                                                          )
11947                                     ,p_token_4                 => 'PRODUCT_NAME'
11948                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11949                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11950                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11951                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11952                                     ,p_ae_header_id            =>  NULL
11953                                        );
11954 
11955         IF (C_LEVEL_ERROR>= g_log_level) THEN
11956                  trace
11957                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11958                       ,p_level    => C_LEVEL_ERROR
11959                       ,p_module   => l_log_module);
11960         END IF;
11961       END IF;
11962    END IF;
11963    --
11964    --
11965    ------------------------------------------------------------------------------------------------
11966    -- 4219869 Business Flow
11967    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11968    -- Prior Entry.  Currently, the following code is always generated.
11969    ------------------------------------------------------------------------------------------------
11970    XLA_AE_LINES_PKG.ValidateCurrentLine;
11971 
11972    ------------------------------------------------------------------------------------
11973    -- 4219869 Business Flow
11974    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11975    ------------------------------------------------------------------------------------
11976    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11977 
11978    ----------------------------------------------------------------------------------
11979    -- 4219869 Business Flow
11980    -- Update journal entry status -- Need to generate this within IF <condition>
11981    ----------------------------------------------------------------------------------
11982    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11983          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11984          ,p_balance_type_code => l_balance_type_code
11985          );
11986 
11987    -------------------------------------------------------------------------------------------
11988    -- 4262811 - Generate the Accrual Reversal lines
11989    -------------------------------------------------------------------------------------------
11990    BEGIN
11991       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11992                               (g_array_event(p_event_id).array_value_num('header_index'));
11993       IF l_acc_rev_flag IS NULL THEN
11994          l_acc_rev_flag := 'N';
11995       END IF;
11996    EXCEPTION
11997       WHEN OTHERS THEN
11998          l_acc_rev_flag := 'N';
11999    END;
12000    --
12001    IF (l_acc_rev_flag = 'Y') THEN
12002 
12003        -- 4645092  ------------------------------------------------------------------------------
12004        -- To allow MPA report to determine if it should generate report process
12005        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12009        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12006        ------------------------------------------------------------------------------------------
12007 
12008        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12010 
12011        --
12012        -- Update the line information that should be overwritten
12013        --
12014        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12015                                          p_header_num   => 1);
12016        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12017 
12018        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12019 
12020        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12021           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12022        END IF;
12023 
12024       --
12025       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12026       --
12027       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12028           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12029       ELSE
12030           ---------------------------------------------------------------------------------------------------
12031           -- 4262811a Switch Sign
12032           ---------------------------------------------------------------------------------------------------
12033           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12034           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12035                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12036           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12037                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12038           -- 5132302
12039           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12040                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12041 
12042       END IF;
12043 
12044       -- 4955764
12045       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12047 
12048 
12049       XLA_AE_LINES_PKG.ValidateCurrentLine;
12050       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12051 
12052       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12053                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12054                ,p_balance_type_code => l_balance_type_code);
12055 
12056    END IF;
12057 
12058    -----------------------------------------------------------------------------------------
12059    -- 4262811 Multiperiod Accounting
12060    -----------------------------------------------------------------------------------------
12061      -- No MPA option is assigned.
12062 
12063 
12064 END IF;
12065 END IF;
12066 --
12067 
12068 --
12069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12070    trace
12071       (p_msg      => 'END of AcctLineType_25'
12072       ,p_level    => C_LEVEL_PROCEDURE
12073       ,p_module   => l_log_module);
12074 END IF;
12075 --
12076 EXCEPTION
12077   WHEN xla_exceptions_pkg.application_exception THEN
12078       RAISE;
12079   WHEN OTHERS THEN
12080        xla_exceptions_pkg.raise_message
12081            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_25');
12082 END AcctLineType_25;
12083 --
12084 
12085 ---------------------------------------
12086 --
12087 -- PRIVATE FUNCTION
12088 --         AcctLineType_26
12089 --
12090 ---------------------------------------
12091 PROCEDURE AcctLineType_26 (
12092   p_application_id        IN NUMBER
12093  ,p_event_id              IN NUMBER
12094  ,p_calculate_acctd_flag  IN VARCHAR2
12095  ,p_calculate_g_l_flag    IN VARCHAR2
12096  ,p_actual_flag           IN OUT VARCHAR2
12097  ,p_balance_type_code     OUT VARCHAR2
12098  ,p_gain_or_loss_ref      OUT VARCHAR2
12099  
12100 --Contract Number
12101  , p_source_1            IN VARCHAR2
12102 --Contract Product Name
12103  , p_source_2            IN VARCHAR2
12104 --Distribution Account
12105  , p_source_5            IN NUMBER
12106 --Accounting Line Type
12107  , p_source_6            IN VARCHAR2
12108  , p_source_6_meaning    IN VARCHAR2
12109 --Accounting Distribution Identifier
12110  , p_source_7            IN NUMBER
12111 --Distribution Type
12112  , p_source_8            IN VARCHAR2
12113 --Distribution Entered Amount
12114  , p_source_9            IN NUMBER
12115 --Transaction Currency Code
12116  , p_source_10            IN VARCHAR2
12117 --Transaction Currency Conversion Date
12118  , p_source_11            IN DATE
12119 --Transaction Currency Conversion Rate
12120  , p_source_12            IN NUMBER
12121 --Transaction Currency Conversion Type
12122  , p_source_13            IN VARCHAR2
12123 )
12124 IS
12125 
12126 l_component_type              VARCHAR2(80);
12127 l_component_code              VARCHAR2(30);
12128 l_component_type_code         VARCHAR2(1);
12129 l_component_appl_id           INTEGER;
12130 l_amb_context_code            VARCHAR2(30);
12131 l_entity_code                 VARCHAR2(30);
12132 l_event_class_code            VARCHAR2(30);
12133 l_ae_header_id                NUMBER;
12134 l_event_type_code             VARCHAR2(30);
12135 l_line_definition_code        VARCHAR2(30);
12136 l_line_definition_owner_code  VARCHAR2(1);
12137 --
12138 -- adr variables
12142 l_adr_accounting_coa_id       NUMBER;
12139 l_segment                     VARCHAR2(30);
12140 l_ccid                        NUMBER;
12141 l_adr_transaction_coa_id      NUMBER;
12143 l_adr_flexfield_segment_code  VARCHAR2(30);
12144 l_adr_flex_value_set_id       NUMBER;
12145 l_adr_value_type_code         VARCHAR2(30);
12146 l_adr_value_combination_id    NUMBER;
12147 l_adr_value_segment_code      VARCHAR2(30);
12148 
12149 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12150 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12151 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12152 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12153 
12154 -- 4262811 Variables ------------------------------------------------------------------------------------------
12155 l_entered_amt_idx             NUMBER;
12156 l_accted_amt_idx              NUMBER;
12157 l_acc_rev_flag                VARCHAR2(1);
12158 l_accrual_line_num            NUMBER;
12159 l_tmp_amt                     NUMBER;
12160 l_acc_rev_natural_side_code   VARCHAR2(1);
12161 
12162 l_num_entries                 NUMBER;
12163 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12164 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12165 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12166 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12167 l_recog_line_1                NUMBER;
12168 l_recog_line_2                NUMBER;
12169 
12170 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12171 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12172 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12173 
12174 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12175 
12176 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12177 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12178 
12179 ---------------------------------------------------------------------------------------------------------------
12180 
12181 
12182 --
12183 -- bulk performance
12184 --
12185 l_balance_type_code           VARCHAR2(1);
12186 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12187 l_log_module                  VARCHAR2(240);
12188 
12189 --
12190 -- Upgrade strategy
12191 --
12192 l_actual_upg_option           VARCHAR2(1);
12193 l_enc_upg_option           VARCHAR2(1);
12194 
12195 --
12196 BEGIN
12197 --
12198 IF g_log_enabled THEN
12199       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
12200 END IF;
12201 --
12202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12203 
12204       trace
12205          (p_msg      => 'BEGIN of AcctLineType_26'
12206          ,p_level    => C_LEVEL_PROCEDURE
12207          ,p_module   => l_log_module);
12208 
12209 END IF;
12210 --
12211 l_component_type             := 'AMB_JLT';
12212 l_component_code             := 'OKL_SPLIT_ASSET_CR';
12213 l_component_type_code        := 'S';
12214 l_component_appl_id          :=  540;
12215 l_amb_context_code           := 'DEFAULT';
12216 l_entity_code                := 'CONTRACTS';
12217 l_event_class_code           := 'SPLIT_ASSET';
12218 l_event_type_code            := 'SPLIT_ASSET_ALL';
12219 l_line_definition_owner_code := 'S';
12220 l_line_definition_code       := 'OKL_SPLIT_ASSET';
12221 --
12222 l_balance_type_code          := 'A';
12223 l_segment                     := NULL;
12224 l_ccid                        := NULL;
12225 l_adr_transaction_coa_id      := NULL;
12226 l_adr_accounting_coa_id       := NULL;
12227 l_adr_flexfield_segment_code  := NULL;
12228 l_adr_flex_value_set_id       := NULL;
12229 l_adr_value_type_code         := NULL;
12230 l_adr_value_combination_id    := NULL;
12231 l_adr_value_segment_code      := NULL;
12232 
12233 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12234 l_bflow_class_code           := '';    -- 4219869 Business Flow
12235 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12236 l_budgetary_control_flag     := 'N';
12237 
12238 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12239 l_bflow_applied_to_amt       := NULL; -- 5132302
12240 l_entered_amt_idx            := NULL;          -- 4262811
12241 l_accted_amt_idx             := NULL;          -- 4262811
12242 l_acc_rev_flag               := NULL;          -- 4262811
12243 l_accrual_line_num           := NULL;          -- 4262811
12244 l_tmp_amt                    := NULL;          -- 4262811
12245 --
12246  
12247 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12248     l_balance_type_code <> 'B' THEN
12249 IF NVL(p_source_6,'
12250 ') =  'LEASE_CREDIT'
12251  THEN 
12252 
12253    --
12254    XLA_AE_LINES_PKG.SetNewLine;
12255 
12256    p_balance_type_code          := l_balance_type_code;
12257    -- set the flag so later we will know whether the gain loss line needs to be created
12258    
12259    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12260      p_actual_flag :='A';
12261    END IF;
12262 
12263    --
12264    -- bulk performance
12265    --
12266    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12267                                       p_header_num   => 0); -- 4262811
12268    --
12269    -- set accounting line options
12270    --
12271    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12272            p_natural_side_code          => 'C'
12273          , p_gain_or_loss_flag          => 'N'
12274          , p_gl_transfer_mode_code      => 'S'
12275          , p_acct_entry_type_code       => 'A'
12276          , p_switch_side_flag           => 'Y'
12280    l_acc_rev_natural_side_code := 'D';  -- 4262811
12277          , p_merge_duplicate_code       => 'N'
12278          );
12279    --
12281    -- 
12282    --
12283    -- set accounting line type info
12284    --
12285    xla_ae_lines_pkg.SetAcctLineType
12286       (p_component_type             => l_component_type
12287       ,p_event_type_code            => l_event_type_code
12288       ,p_line_definition_owner_code => l_line_definition_owner_code
12289       ,p_line_definition_code       => l_line_definition_code
12290       ,p_accounting_line_code       => l_component_code
12291       ,p_accounting_line_type_code  => l_component_type_code
12292       ,p_accounting_line_appl_id    => l_component_appl_id
12293       ,p_amb_context_code           => l_amb_context_code
12294       ,p_entity_code                => l_entity_code
12295       ,p_event_class_code           => l_event_class_code);
12296    --
12297    -- set accounting class
12298    --
12299    xla_ae_lines_pkg.SetAcctClass(
12300            p_accounting_class_code  => 'SPLIT_ASSET'
12301          , p_ae_header_id           => l_ae_header_id
12302          );
12303 
12304    --
12305    -- set rounding class
12306    --
12307    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12308                       'SPLIT_ASSET';
12309 
12310    --
12311    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12312    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12313    --
12314    -- bulk performance
12315    --
12316    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12317 
12318    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12319       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12320 
12321    -- 4955764
12322    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12323       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12324 
12325    -- 4458381 Public Sector Enh
12326    
12327    --
12328    -- set accounting attributes for the line type
12329    --
12330    l_entered_amt_idx := 3;
12331    l_accted_amt_idx  := NULL;
12332    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12333    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12334    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
12335    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12336    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
12337    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12338    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
12339    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12340    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
12341    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12342    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
12343    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12344    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
12345    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12346    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
12347 
12348    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12349    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12350 
12351    ---------------------------------------------------------------------------------------------------------------
12352    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12353    ---------------------------------------------------------------------------------------------------------------
12354    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12355 
12356    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12357    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12358 
12359    IF xla_accounting_cache_pkg.GetValueChar
12360          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12361          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12362    AND l_bflow_method_code = 'PRIOR_ENTRY'
12363 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12364    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12365          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12366        )
12367    THEN
12368          xla_ae_lines_pkg.BflowUpgEntry
12369            (p_business_method_code    => l_bflow_method_code
12370            ,p_business_class_code     => l_bflow_class_code
12371            ,p_balance_type            => l_balance_type_code);
12372    ELSE
12373       NULL;
12374 -- No business flow processing for business flow method of NONE.
12375    END IF;
12376 
12377    --
12378    -- call analytical criteria
12379    --
12380    
12381    --
12382    -- call description
12383    --
12384    
12385 xla_ae_lines_pkg.SetLineDescription(
12386    p_ae_header_id => l_ae_header_id
12387   ,p_description  => Description_1 (
12388      p_application_id         => p_application_id
12389    , p_ae_header_id           => l_ae_header_id 
12390 , p_source_1 => p_source_1
12391 , p_source_2 => p_source_2
12392    )
12393 );
12394 
12395 
12396    --
12397    -- call ADRs
12398    -- Bug 4922099
12399    --
12400    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12401         (NVL(l_actual_upg_option, 'N') = 'O') OR
12402         (NVL(l_enc_upg_option, 'N') = 'O')
12403       )
12404    THEN
12405    NULL;
12406    --
12407    --
12411          , p_ae_header_id             => l_ae_header_id 
12408    
12409   l_ccid := AcctDerRule_3(
12410            p_application_id           => p_application_id
12412 , p_source_5 => p_source_5
12413          , x_transaction_coa_id       => l_adr_transaction_coa_id
12414          , x_accounting_coa_id        => l_adr_accounting_coa_id
12415          , x_value_type_code          => l_adr_value_type_code
12416          , p_side                     => 'NA'
12417    );
12418 
12419    xla_ae_lines_pkg.set_ccid(
12420     p_code_combination_id          => l_ccid
12421   , p_value_type_code              => l_adr_value_type_code
12422   , p_transaction_coa_id           => l_adr_transaction_coa_id
12423   , p_accounting_coa_id            => l_adr_accounting_coa_id
12424   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
12425   , p_adr_type_code                => 'S'
12426   , p_component_type               => l_component_type
12427   , p_component_code               => l_component_code
12428   , p_component_type_code          => l_component_type_code
12429   , p_component_appl_id            => l_component_appl_id
12430   , p_amb_context_code             => l_amb_context_code
12431   , p_side                         => 'NA'
12432   );
12433 
12434 
12435    --
12436    --
12437    END IF;
12438    --
12439    -- Bug 4922099
12440    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12441           (NVL(l_enc_upg_option, 'N') = 'O')
12442         ) AND
12443         (l_bflow_method_code = 'PRIOR_ENTRY')
12444       )
12445    THEN
12446       IF
12447       --
12448       1 = 2
12449       --
12450       THEN
12451       xla_accounting_err_pkg.build_message
12452                                     (p_appli_s_name            => 'XLA'
12453                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12454                                     ,p_token_1                 => 'LINE_NUMBER'
12455                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12456                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12457                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12458                                                                              l_component_type
12459                                                                             ,l_component_code
12460                                                                             ,l_component_type_code
12461                                                                             ,l_component_appl_id
12462                                                                             ,l_amb_context_code
12463                                                                             ,l_entity_code
12464                                                                             ,l_event_class_code
12465                                                                            )
12466                                     ,p_token_3                 => 'OWNER'
12467                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12468                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12469                                                                           ,p_lookup_code    => l_component_type_code
12470                                                                          )
12471                                     ,p_token_4                 => 'PRODUCT_NAME'
12472                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12473                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12474                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12475                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12476                                     ,p_ae_header_id            =>  NULL
12477                                        );
12478 
12479         IF (C_LEVEL_ERROR>= g_log_level) THEN
12480                  trace
12481                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12482                       ,p_level    => C_LEVEL_ERROR
12483                       ,p_module   => l_log_module);
12484         END IF;
12485       END IF;
12486    END IF;
12487    --
12488    --
12489    ------------------------------------------------------------------------------------------------
12490    -- 4219869 Business Flow
12491    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12492    -- Prior Entry.  Currently, the following code is always generated.
12493    ------------------------------------------------------------------------------------------------
12494    XLA_AE_LINES_PKG.ValidateCurrentLine;
12495 
12496    ------------------------------------------------------------------------------------
12497    -- 4219869 Business Flow
12498    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12499    ------------------------------------------------------------------------------------
12500    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12501 
12502    ----------------------------------------------------------------------------------
12503    -- 4219869 Business Flow
12504    -- Update journal entry status -- Need to generate this within IF <condition>
12505    ----------------------------------------------------------------------------------
12506    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12507          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12508          ,p_balance_type_code => l_balance_type_code
12509          );
12510 
12511    -------------------------------------------------------------------------------------------
12512    -- 4262811 - Generate the Accrual Reversal lines
12516                               (g_array_event(p_event_id).array_value_num('header_index'));
12513    -------------------------------------------------------------------------------------------
12514    BEGIN
12515       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12517       IF l_acc_rev_flag IS NULL THEN
12518          l_acc_rev_flag := 'N';
12519       END IF;
12520    EXCEPTION
12521       WHEN OTHERS THEN
12522          l_acc_rev_flag := 'N';
12523    END;
12524    --
12525    IF (l_acc_rev_flag = 'Y') THEN
12526 
12527        -- 4645092  ------------------------------------------------------------------------------
12528        -- To allow MPA report to determine if it should generate report process
12529        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12530        ------------------------------------------------------------------------------------------
12531 
12532        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12533        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12534 
12535        --
12536        -- Update the line information that should be overwritten
12537        --
12538        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12539                                          p_header_num   => 1);
12540        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12541 
12542        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12543 
12544        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12545           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12546        END IF;
12547 
12548       --
12549       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12550       --
12551       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12552           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12553       ELSE
12554           ---------------------------------------------------------------------------------------------------
12555           -- 4262811a Switch Sign
12556           ---------------------------------------------------------------------------------------------------
12557           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12558           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12559                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12560           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12561                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12562           -- 5132302
12563           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12564                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12565 
12566       END IF;
12567 
12568       -- 4955764
12569       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12571 
12572 
12573       XLA_AE_LINES_PKG.ValidateCurrentLine;
12574       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12575 
12576       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12577                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12578                ,p_balance_type_code => l_balance_type_code);
12579 
12580    END IF;
12581 
12582    -----------------------------------------------------------------------------------------
12583    -- 4262811 Multiperiod Accounting
12584    -----------------------------------------------------------------------------------------
12585      -- No MPA option is assigned.
12586 
12587 
12588 END IF;
12589 END IF;
12590 --
12591 
12592 --
12593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12594    trace
12595       (p_msg      => 'END of AcctLineType_26'
12596       ,p_level    => C_LEVEL_PROCEDURE
12597       ,p_module   => l_log_module);
12598 END IF;
12599 --
12600 EXCEPTION
12601   WHEN xla_exceptions_pkg.application_exception THEN
12602       RAISE;
12603   WHEN OTHERS THEN
12604        xla_exceptions_pkg.raise_message
12605            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_26');
12606 END AcctLineType_26;
12607 --
12608 
12609 ---------------------------------------
12610 --
12611 -- PRIVATE FUNCTION
12612 --         AcctLineType_27
12613 --
12614 ---------------------------------------
12615 PROCEDURE AcctLineType_27 (
12616   p_application_id        IN NUMBER
12617  ,p_event_id              IN NUMBER
12618  ,p_calculate_acctd_flag  IN VARCHAR2
12619  ,p_calculate_g_l_flag    IN VARCHAR2
12620  ,p_actual_flag           IN OUT VARCHAR2
12621  ,p_balance_type_code     OUT VARCHAR2
12622  ,p_gain_or_loss_ref      OUT VARCHAR2
12623  
12624 --Contract Number
12625  , p_source_1            IN VARCHAR2
12626 --Contract Product Name
12627  , p_source_2            IN VARCHAR2
12628 --Distribution Account
12629  , p_source_5            IN NUMBER
12630 --Accounting Line Type
12631  , p_source_6            IN VARCHAR2
12632  , p_source_6_meaning    IN VARCHAR2
12633 --Accounting Distribution Identifier
12634  , p_source_7            IN NUMBER
12635 --Distribution Type
12636  , p_source_8            IN VARCHAR2
12637 --Distribution Entered Amount
12638  , p_source_9            IN NUMBER
12639 --Transaction Currency Code
12640  , p_source_10            IN VARCHAR2
12641 --Transaction Currency Conversion Date
12645 --Transaction Currency Conversion Type
12642  , p_source_11            IN DATE
12643 --Transaction Currency Conversion Rate
12644  , p_source_12            IN NUMBER
12646  , p_source_13            IN VARCHAR2
12647 )
12648 IS
12649 
12650 l_component_type              VARCHAR2(80);
12651 l_component_code              VARCHAR2(30);
12652 l_component_type_code         VARCHAR2(1);
12653 l_component_appl_id           INTEGER;
12654 l_amb_context_code            VARCHAR2(30);
12655 l_entity_code                 VARCHAR2(30);
12656 l_event_class_code            VARCHAR2(30);
12657 l_ae_header_id                NUMBER;
12658 l_event_type_code             VARCHAR2(30);
12659 l_line_definition_code        VARCHAR2(30);
12660 l_line_definition_owner_code  VARCHAR2(1);
12661 --
12662 -- adr variables
12663 l_segment                     VARCHAR2(30);
12664 l_ccid                        NUMBER;
12665 l_adr_transaction_coa_id      NUMBER;
12666 l_adr_accounting_coa_id       NUMBER;
12667 l_adr_flexfield_segment_code  VARCHAR2(30);
12668 l_adr_flex_value_set_id       NUMBER;
12669 l_adr_value_type_code         VARCHAR2(30);
12670 l_adr_value_combination_id    NUMBER;
12671 l_adr_value_segment_code      VARCHAR2(30);
12672 
12673 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12674 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12675 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12676 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12677 
12678 -- 4262811 Variables ------------------------------------------------------------------------------------------
12679 l_entered_amt_idx             NUMBER;
12680 l_accted_amt_idx              NUMBER;
12681 l_acc_rev_flag                VARCHAR2(1);
12682 l_accrual_line_num            NUMBER;
12683 l_tmp_amt                     NUMBER;
12684 l_acc_rev_natural_side_code   VARCHAR2(1);
12685 
12686 l_num_entries                 NUMBER;
12687 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12688 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12689 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12690 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12691 l_recog_line_1                NUMBER;
12692 l_recog_line_2                NUMBER;
12693 
12694 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12695 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12696 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12697 
12698 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12699 
12700 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12701 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12702 
12703 ---------------------------------------------------------------------------------------------------------------
12704 
12705 
12706 --
12707 -- bulk performance
12708 --
12709 l_balance_type_code           VARCHAR2(1);
12710 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12711 l_log_module                  VARCHAR2(240);
12712 
12713 --
12714 -- Upgrade strategy
12715 --
12716 l_actual_upg_option           VARCHAR2(1);
12717 l_enc_upg_option           VARCHAR2(1);
12718 
12719 --
12720 BEGIN
12721 --
12722 IF g_log_enabled THEN
12723       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
12724 END IF;
12725 --
12726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12727 
12728       trace
12729          (p_msg      => 'BEGIN of AcctLineType_27'
12730          ,p_level    => C_LEVEL_PROCEDURE
12731          ,p_module   => l_log_module);
12732 
12733 END IF;
12734 --
12735 l_component_type             := 'AMB_JLT';
12736 l_component_code             := 'OKL_SPLIT_ASSET_DR';
12737 l_component_type_code        := 'S';
12738 l_component_appl_id          :=  540;
12739 l_amb_context_code           := 'DEFAULT';
12740 l_entity_code                := 'CONTRACTS';
12741 l_event_class_code           := 'SPLIT_ASSET';
12742 l_event_type_code            := 'SPLIT_ASSET_ALL';
12743 l_line_definition_owner_code := 'S';
12744 l_line_definition_code       := 'OKL_SPLIT_ASSET';
12745 --
12746 l_balance_type_code          := 'A';
12747 l_segment                     := NULL;
12748 l_ccid                        := NULL;
12749 l_adr_transaction_coa_id      := NULL;
12750 l_adr_accounting_coa_id       := NULL;
12751 l_adr_flexfield_segment_code  := NULL;
12752 l_adr_flex_value_set_id       := NULL;
12753 l_adr_value_type_code         := NULL;
12754 l_adr_value_combination_id    := NULL;
12755 l_adr_value_segment_code      := NULL;
12756 
12757 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12758 l_bflow_class_code           := '';    -- 4219869 Business Flow
12759 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12760 l_budgetary_control_flag     := 'N';
12761 
12762 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12763 l_bflow_applied_to_amt       := NULL; -- 5132302
12764 l_entered_amt_idx            := NULL;          -- 4262811
12765 l_accted_amt_idx             := NULL;          -- 4262811
12766 l_acc_rev_flag               := NULL;          -- 4262811
12767 l_accrual_line_num           := NULL;          -- 4262811
12768 l_tmp_amt                    := NULL;          -- 4262811
12769 --
12770  
12771 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12772     l_balance_type_code <> 'B' THEN
12773 IF NVL(p_source_6,'
12774 ') =  'LEASE_DEBIT'
12775  THEN 
12776 
12777    --
12778    XLA_AE_LINES_PKG.SetNewLine;
12779 
12780    p_balance_type_code          := l_balance_type_code;
12784      p_actual_flag :='A';
12781    -- set the flag so later we will know whether the gain loss line needs to be created
12782    
12783    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12785    END IF;
12786 
12787    --
12788    -- bulk performance
12789    --
12790    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12791                                       p_header_num   => 0); -- 4262811
12792    --
12793    -- set accounting line options
12794    --
12795    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12796            p_natural_side_code          => 'D'
12797          , p_gain_or_loss_flag          => 'N'
12798          , p_gl_transfer_mode_code      => 'S'
12799          , p_acct_entry_type_code       => 'A'
12800          , p_switch_side_flag           => 'Y'
12801          , p_merge_duplicate_code       => 'N'
12802          );
12803    --
12804    l_acc_rev_natural_side_code := 'C';  -- 4262811
12805    -- 
12806    --
12807    -- set accounting line type info
12808    --
12809    xla_ae_lines_pkg.SetAcctLineType
12810       (p_component_type             => l_component_type
12811       ,p_event_type_code            => l_event_type_code
12812       ,p_line_definition_owner_code => l_line_definition_owner_code
12813       ,p_line_definition_code       => l_line_definition_code
12814       ,p_accounting_line_code       => l_component_code
12815       ,p_accounting_line_type_code  => l_component_type_code
12816       ,p_accounting_line_appl_id    => l_component_appl_id
12817       ,p_amb_context_code           => l_amb_context_code
12818       ,p_entity_code                => l_entity_code
12819       ,p_event_class_code           => l_event_class_code);
12820    --
12821    -- set accounting class
12822    --
12823    xla_ae_lines_pkg.SetAcctClass(
12824            p_accounting_class_code  => 'SPLIT_ASSET'
12825          , p_ae_header_id           => l_ae_header_id
12826          );
12827 
12828    --
12829    -- set rounding class
12830    --
12831    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12832                       'SPLIT_ASSET';
12833 
12834    --
12835    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12836    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12837    --
12838    -- bulk performance
12839    --
12840    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12841 
12842    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12843       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12844 
12845    -- 4955764
12846    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12847       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12848 
12849    -- 4458381 Public Sector Enh
12850    
12851    --
12852    -- set accounting attributes for the line type
12853    --
12854    l_entered_amt_idx := 3;
12855    l_accted_amt_idx  := NULL;
12856    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12857    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12858    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
12859    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12860    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
12861    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12862    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
12863    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12864    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
12865    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12866    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
12867    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12868    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
12869    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12870    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
12871 
12872    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12873    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12874 
12875    ---------------------------------------------------------------------------------------------------------------
12876    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12877    ---------------------------------------------------------------------------------------------------------------
12878    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12879 
12880    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12881    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12882 
12883    IF xla_accounting_cache_pkg.GetValueChar
12884          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12885          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12886    AND l_bflow_method_code = 'PRIOR_ENTRY'
12887 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12888    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12889          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12890        )
12891    THEN
12892          xla_ae_lines_pkg.BflowUpgEntry
12893            (p_business_method_code    => l_bflow_method_code
12894            ,p_business_class_code     => l_bflow_class_code
12895            ,p_balance_type            => l_balance_type_code);
12896    ELSE
12897       NULL;
12898 -- No business flow processing for business flow method of NONE.
12899    END IF;
12900 
12901    --
12905    --
12902    -- call analytical criteria
12903    --
12904    
12906    -- call description
12907    --
12908    
12909 xla_ae_lines_pkg.SetLineDescription(
12910    p_ae_header_id => l_ae_header_id
12911   ,p_description  => Description_1 (
12912      p_application_id         => p_application_id
12913    , p_ae_header_id           => l_ae_header_id 
12914 , p_source_1 => p_source_1
12915 , p_source_2 => p_source_2
12916    )
12917 );
12918 
12919 
12920    --
12921    -- call ADRs
12922    -- Bug 4922099
12923    --
12924    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12925         (NVL(l_actual_upg_option, 'N') = 'O') OR
12926         (NVL(l_enc_upg_option, 'N') = 'O')
12927       )
12928    THEN
12929    NULL;
12930    --
12931    --
12932    
12933   l_ccid := AcctDerRule_3(
12934            p_application_id           => p_application_id
12935          , p_ae_header_id             => l_ae_header_id 
12936 , p_source_5 => p_source_5
12937          , x_transaction_coa_id       => l_adr_transaction_coa_id
12938          , x_accounting_coa_id        => l_adr_accounting_coa_id
12939          , x_value_type_code          => l_adr_value_type_code
12940          , p_side                     => 'NA'
12941    );
12942 
12943    xla_ae_lines_pkg.set_ccid(
12944     p_code_combination_id          => l_ccid
12945   , p_value_type_code              => l_adr_value_type_code
12946   , p_transaction_coa_id           => l_adr_transaction_coa_id
12947   , p_accounting_coa_id            => l_adr_accounting_coa_id
12948   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
12949   , p_adr_type_code                => 'S'
12950   , p_component_type               => l_component_type
12951   , p_component_code               => l_component_code
12952   , p_component_type_code          => l_component_type_code
12953   , p_component_appl_id            => l_component_appl_id
12954   , p_amb_context_code             => l_amb_context_code
12955   , p_side                         => 'NA'
12956   );
12957 
12958 
12959    --
12960    --
12961    END IF;
12962    --
12963    -- Bug 4922099
12964    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12965           (NVL(l_enc_upg_option, 'N') = 'O')
12966         ) AND
12967         (l_bflow_method_code = 'PRIOR_ENTRY')
12968       )
12969    THEN
12970       IF
12971       --
12972       1 = 2
12973       --
12974       THEN
12975       xla_accounting_err_pkg.build_message
12976                                     (p_appli_s_name            => 'XLA'
12977                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12978                                     ,p_token_1                 => 'LINE_NUMBER'
12979                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12980                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12981                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12982                                                                              l_component_type
12983                                                                             ,l_component_code
12984                                                                             ,l_component_type_code
12985                                                                             ,l_component_appl_id
12986                                                                             ,l_amb_context_code
12987                                                                             ,l_entity_code
12988                                                                             ,l_event_class_code
12989                                                                            )
12990                                     ,p_token_3                 => 'OWNER'
12991                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12992                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12993                                                                           ,p_lookup_code    => l_component_type_code
12994                                                                          )
12995                                     ,p_token_4                 => 'PRODUCT_NAME'
12996                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12997                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12998                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12999                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13000                                     ,p_ae_header_id            =>  NULL
13001                                        );
13002 
13003         IF (C_LEVEL_ERROR>= g_log_level) THEN
13004                  trace
13005                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13006                       ,p_level    => C_LEVEL_ERROR
13007                       ,p_module   => l_log_module);
13008         END IF;
13009       END IF;
13010    END IF;
13011    --
13012    --
13013    ------------------------------------------------------------------------------------------------
13014    -- 4219869 Business Flow
13015    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13016    -- Prior Entry.  Currently, the following code is always generated.
13017    ------------------------------------------------------------------------------------------------
13018    XLA_AE_LINES_PKG.ValidateCurrentLine;
13019 
13020    ------------------------------------------------------------------------------------
13021    -- 4219869 Business Flow
13025 
13022    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13023    ------------------------------------------------------------------------------------
13024    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13026    ----------------------------------------------------------------------------------
13027    -- 4219869 Business Flow
13028    -- Update journal entry status -- Need to generate this within IF <condition>
13029    ----------------------------------------------------------------------------------
13030    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13031          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13032          ,p_balance_type_code => l_balance_type_code
13033          );
13034 
13035    -------------------------------------------------------------------------------------------
13036    -- 4262811 - Generate the Accrual Reversal lines
13037    -------------------------------------------------------------------------------------------
13038    BEGIN
13039       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13040                               (g_array_event(p_event_id).array_value_num('header_index'));
13041       IF l_acc_rev_flag IS NULL THEN
13042          l_acc_rev_flag := 'N';
13043       END IF;
13044    EXCEPTION
13045       WHEN OTHERS THEN
13046          l_acc_rev_flag := 'N';
13047    END;
13048    --
13049    IF (l_acc_rev_flag = 'Y') THEN
13050 
13051        -- 4645092  ------------------------------------------------------------------------------
13052        -- To allow MPA report to determine if it should generate report process
13053        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13054        ------------------------------------------------------------------------------------------
13055 
13056        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13057        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13058 
13059        --
13060        -- Update the line information that should be overwritten
13061        --
13062        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13063                                          p_header_num   => 1);
13064        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13065 
13066        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13067 
13068        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13069           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13070        END IF;
13071 
13072       --
13073       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13074       --
13075       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13076           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13077       ELSE
13078           ---------------------------------------------------------------------------------------------------
13079           -- 4262811a Switch Sign
13080           ---------------------------------------------------------------------------------------------------
13081           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13082           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13083                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13084           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13085                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13086           -- 5132302
13087           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13088                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13089 
13090       END IF;
13091 
13092       -- 4955764
13093       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13094       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13095 
13096 
13097       XLA_AE_LINES_PKG.ValidateCurrentLine;
13098       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13099 
13100       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13101                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13102                ,p_balance_type_code => l_balance_type_code);
13103 
13104    END IF;
13105 
13106    -----------------------------------------------------------------------------------------
13107    -- 4262811 Multiperiod Accounting
13108    -----------------------------------------------------------------------------------------
13109      -- No MPA option is assigned.
13110 
13111 
13112 END IF;
13113 END IF;
13114 --
13115 
13116 --
13117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13118    trace
13119       (p_msg      => 'END of AcctLineType_27'
13120       ,p_level    => C_LEVEL_PROCEDURE
13121       ,p_module   => l_log_module);
13122 END IF;
13123 --
13124 EXCEPTION
13125   WHEN xla_exceptions_pkg.application_exception THEN
13126       RAISE;
13127   WHEN OTHERS THEN
13128        xla_exceptions_pkg.raise_message
13129            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_27');
13130 END AcctLineType_27;
13131 --
13132 
13133 ---------------------------------------
13134 --
13135 -- PRIVATE FUNCTION
13136 --         AcctLineType_28
13137 --
13138 ---------------------------------------
13139 PROCEDURE AcctLineType_28 (
13140   p_application_id        IN NUMBER
13141  ,p_event_id              IN NUMBER
13142  ,p_calculate_acctd_flag  IN VARCHAR2
13143  ,p_calculate_g_l_flag    IN VARCHAR2
13147  
13144  ,p_actual_flag           IN OUT VARCHAR2
13145  ,p_balance_type_code     OUT VARCHAR2
13146  ,p_gain_or_loss_ref      OUT VARCHAR2
13148 --Contract Number
13149  , p_source_1            IN VARCHAR2
13150 --Contract Product Name
13151  , p_source_2            IN VARCHAR2
13152 --Distribution Account
13153  , p_source_5            IN NUMBER
13154 --Accounting Line Type
13155  , p_source_6            IN VARCHAR2
13156  , p_source_6_meaning    IN VARCHAR2
13157 --Accounting Distribution Identifier
13158  , p_source_7            IN NUMBER
13159 --Distribution Type
13160  , p_source_8            IN VARCHAR2
13161 --Distribution Entered Amount
13162  , p_source_9            IN NUMBER
13163 --Transaction Currency Code
13164  , p_source_10            IN VARCHAR2
13165 --Transaction Currency Conversion Date
13166  , p_source_11            IN DATE
13167 --Transaction Currency Conversion Rate
13168  , p_source_12            IN NUMBER
13169 --Transaction Currency Conversion Type
13170  , p_source_13            IN VARCHAR2
13171 )
13172 IS
13173 
13174 l_component_type              VARCHAR2(80);
13175 l_component_code              VARCHAR2(30);
13176 l_component_type_code         VARCHAR2(1);
13177 l_component_appl_id           INTEGER;
13178 l_amb_context_code            VARCHAR2(30);
13179 l_entity_code                 VARCHAR2(30);
13180 l_event_class_code            VARCHAR2(30);
13181 l_ae_header_id                NUMBER;
13182 l_event_type_code             VARCHAR2(30);
13183 l_line_definition_code        VARCHAR2(30);
13184 l_line_definition_owner_code  VARCHAR2(1);
13185 --
13186 -- adr variables
13187 l_segment                     VARCHAR2(30);
13188 l_ccid                        NUMBER;
13189 l_adr_transaction_coa_id      NUMBER;
13190 l_adr_accounting_coa_id       NUMBER;
13191 l_adr_flexfield_segment_code  VARCHAR2(30);
13192 l_adr_flex_value_set_id       NUMBER;
13193 l_adr_value_type_code         VARCHAR2(30);
13194 l_adr_value_combination_id    NUMBER;
13195 l_adr_value_segment_code      VARCHAR2(30);
13196 
13197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13201 
13202 -- 4262811 Variables ------------------------------------------------------------------------------------------
13203 l_entered_amt_idx             NUMBER;
13204 l_accted_amt_idx              NUMBER;
13205 l_acc_rev_flag                VARCHAR2(1);
13206 l_accrual_line_num            NUMBER;
13207 l_tmp_amt                     NUMBER;
13208 l_acc_rev_natural_side_code   VARCHAR2(1);
13209 
13210 l_num_entries                 NUMBER;
13211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13215 l_recog_line_1                NUMBER;
13216 l_recog_line_2                NUMBER;
13217 
13218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13221 
13222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13223 
13224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13226 
13227 ---------------------------------------------------------------------------------------------------------------
13228 
13229 
13230 --
13231 -- bulk performance
13232 --
13233 l_balance_type_code           VARCHAR2(1);
13234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13235 l_log_module                  VARCHAR2(240);
13236 
13237 --
13238 -- Upgrade strategy
13239 --
13240 l_actual_upg_option           VARCHAR2(1);
13241 l_enc_upg_option           VARCHAR2(1);
13242 
13243 --
13244 BEGIN
13245 --
13246 IF g_log_enabled THEN
13247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13248 END IF;
13249 --
13250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13251 
13252       trace
13253          (p_msg      => 'BEGIN of AcctLineType_28'
13254          ,p_level    => C_LEVEL_PROCEDURE
13255          ,p_module   => l_log_module);
13256 
13257 END IF;
13258 --
13259 l_component_type             := 'AMB_JLT';
13260 l_component_code             := 'OKL_TERMINATION_CR';
13261 l_component_type_code        := 'S';
13262 l_component_appl_id          :=  540;
13263 l_amb_context_code           := 'DEFAULT';
13264 l_entity_code                := 'CONTRACTS';
13265 l_event_class_code           := 'TERMINATION';
13266 l_event_type_code            := 'TERMINATION_ALL';
13267 l_line_definition_owner_code := 'S';
13268 l_line_definition_code       := 'OKL_TERMINATION';
13269 --
13270 l_balance_type_code          := 'A';
13271 l_segment                     := NULL;
13272 l_ccid                        := NULL;
13273 l_adr_transaction_coa_id      := NULL;
13274 l_adr_accounting_coa_id       := NULL;
13275 l_adr_flexfield_segment_code  := NULL;
13276 l_adr_flex_value_set_id       := NULL;
13277 l_adr_value_type_code         := NULL;
13278 l_adr_value_combination_id    := NULL;
13279 l_adr_value_segment_code      := NULL;
13280 
13281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13282 l_bflow_class_code           := '';    -- 4219869 Business Flow
13283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13287 l_bflow_applied_to_amt       := NULL; -- 5132302
13284 l_budgetary_control_flag     := 'N';
13285 
13286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13288 l_entered_amt_idx            := NULL;          -- 4262811
13289 l_accted_amt_idx             := NULL;          -- 4262811
13290 l_acc_rev_flag               := NULL;          -- 4262811
13291 l_accrual_line_num           := NULL;          -- 4262811
13292 l_tmp_amt                    := NULL;          -- 4262811
13293 --
13294  
13295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13296     l_balance_type_code <> 'B' THEN
13297 IF NVL(p_source_6,'
13298 ') =  'LEASE_CREDIT'
13299  THEN 
13300 
13301    --
13302    XLA_AE_LINES_PKG.SetNewLine;
13303 
13304    p_balance_type_code          := l_balance_type_code;
13305    -- set the flag so later we will know whether the gain loss line needs to be created
13306    
13307    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13308      p_actual_flag :='A';
13309    END IF;
13310 
13311    --
13312    -- bulk performance
13313    --
13314    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13315                                       p_header_num   => 0); -- 4262811
13316    --
13317    -- set accounting line options
13318    --
13319    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13320            p_natural_side_code          => 'C'
13321          , p_gain_or_loss_flag          => 'N'
13322          , p_gl_transfer_mode_code      => 'S'
13323          , p_acct_entry_type_code       => 'A'
13324          , p_switch_side_flag           => 'Y'
13325          , p_merge_duplicate_code       => 'N'
13326          );
13327    --
13328    l_acc_rev_natural_side_code := 'D';  -- 4262811
13329    -- 
13330    --
13331    -- set accounting line type info
13332    --
13333    xla_ae_lines_pkg.SetAcctLineType
13334       (p_component_type             => l_component_type
13335       ,p_event_type_code            => l_event_type_code
13336       ,p_line_definition_owner_code => l_line_definition_owner_code
13337       ,p_line_definition_code       => l_line_definition_code
13338       ,p_accounting_line_code       => l_component_code
13339       ,p_accounting_line_type_code  => l_component_type_code
13340       ,p_accounting_line_appl_id    => l_component_appl_id
13341       ,p_amb_context_code           => l_amb_context_code
13342       ,p_entity_code                => l_entity_code
13343       ,p_event_class_code           => l_event_class_code);
13344    --
13345    -- set accounting class
13346    --
13347    xla_ae_lines_pkg.SetAcctClass(
13348            p_accounting_class_code  => 'TERMINATION'
13349          , p_ae_header_id           => l_ae_header_id
13350          );
13351 
13352    --
13353    -- set rounding class
13354    --
13355    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13356                       'TERMINATION';
13357 
13358    --
13359    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13360    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13361    --
13362    -- bulk performance
13363    --
13364    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13365 
13366    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13367       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13368 
13369    -- 4955764
13370    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13371       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13372 
13373    -- 4458381 Public Sector Enh
13374    
13375    --
13376    -- set accounting attributes for the line type
13377    --
13378    l_entered_amt_idx := 3;
13379    l_accted_amt_idx  := NULL;
13380    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13381    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13382    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
13383    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13384    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
13385    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13386    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
13387    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13388    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
13389    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13390    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
13391    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13392    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
13393    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13394    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
13395 
13396    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13397    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13398 
13399    ---------------------------------------------------------------------------------------------------------------
13400    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13401    ---------------------------------------------------------------------------------------------------------------
13402    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13403 
13404    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13405    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13406 
13407    IF xla_accounting_cache_pkg.GetValueChar
13411 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13408          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13409          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13410    AND l_bflow_method_code = 'PRIOR_ENTRY'
13412    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13413          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13414        )
13415    THEN
13416          xla_ae_lines_pkg.BflowUpgEntry
13417            (p_business_method_code    => l_bflow_method_code
13418            ,p_business_class_code     => l_bflow_class_code
13419            ,p_balance_type            => l_balance_type_code);
13420    ELSE
13421       NULL;
13422 -- No business flow processing for business flow method of NONE.
13423    END IF;
13424 
13425    --
13426    -- call analytical criteria
13427    --
13428    
13429    --
13430    -- call description
13431    --
13432    
13433 xla_ae_lines_pkg.SetLineDescription(
13434    p_ae_header_id => l_ae_header_id
13435   ,p_description  => Description_1 (
13436      p_application_id         => p_application_id
13437    , p_ae_header_id           => l_ae_header_id 
13438 , p_source_1 => p_source_1
13439 , p_source_2 => p_source_2
13440    )
13441 );
13442 
13443 
13444    --
13445    -- call ADRs
13446    -- Bug 4922099
13447    --
13448    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13449         (NVL(l_actual_upg_option, 'N') = 'O') OR
13450         (NVL(l_enc_upg_option, 'N') = 'O')
13451       )
13452    THEN
13453    NULL;
13454    --
13455    --
13456    
13457   l_ccid := AcctDerRule_3(
13458            p_application_id           => p_application_id
13459          , p_ae_header_id             => l_ae_header_id 
13460 , p_source_5 => p_source_5
13461          , x_transaction_coa_id       => l_adr_transaction_coa_id
13462          , x_accounting_coa_id        => l_adr_accounting_coa_id
13463          , x_value_type_code          => l_adr_value_type_code
13464          , p_side                     => 'NA'
13465    );
13466 
13467    xla_ae_lines_pkg.set_ccid(
13468     p_code_combination_id          => l_ccid
13469   , p_value_type_code              => l_adr_value_type_code
13470   , p_transaction_coa_id           => l_adr_transaction_coa_id
13471   , p_accounting_coa_id            => l_adr_accounting_coa_id
13472   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
13473   , p_adr_type_code                => 'S'
13474   , p_component_type               => l_component_type
13475   , p_component_code               => l_component_code
13476   , p_component_type_code          => l_component_type_code
13477   , p_component_appl_id            => l_component_appl_id
13478   , p_amb_context_code             => l_amb_context_code
13479   , p_side                         => 'NA'
13480   );
13481 
13482 
13483    --
13484    --
13485    END IF;
13486    --
13487    -- Bug 4922099
13488    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13489           (NVL(l_enc_upg_option, 'N') = 'O')
13490         ) AND
13491         (l_bflow_method_code = 'PRIOR_ENTRY')
13492       )
13493    THEN
13494       IF
13495       --
13496       1 = 2
13497       --
13498       THEN
13499       xla_accounting_err_pkg.build_message
13500                                     (p_appli_s_name            => 'XLA'
13501                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13502                                     ,p_token_1                 => 'LINE_NUMBER'
13503                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13504                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13505                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13506                                                                              l_component_type
13507                                                                             ,l_component_code
13508                                                                             ,l_component_type_code
13509                                                                             ,l_component_appl_id
13510                                                                             ,l_amb_context_code
13511                                                                             ,l_entity_code
13512                                                                             ,l_event_class_code
13513                                                                            )
13514                                     ,p_token_3                 => 'OWNER'
13515                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13516                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13517                                                                           ,p_lookup_code    => l_component_type_code
13518                                                                          )
13519                                     ,p_token_4                 => 'PRODUCT_NAME'
13520                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13521                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13522                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13523                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13524                                     ,p_ae_header_id            =>  NULL
13525                                        );
13526 
13527         IF (C_LEVEL_ERROR>= g_log_level) THEN
13528                  trace
13529                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13533       END IF;
13530                       ,p_level    => C_LEVEL_ERROR
13531                       ,p_module   => l_log_module);
13532         END IF;
13534    END IF;
13535    --
13536    --
13537    ------------------------------------------------------------------------------------------------
13538    -- 4219869 Business Flow
13539    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13540    -- Prior Entry.  Currently, the following code is always generated.
13541    ------------------------------------------------------------------------------------------------
13542    XLA_AE_LINES_PKG.ValidateCurrentLine;
13543 
13544    ------------------------------------------------------------------------------------
13545    -- 4219869 Business Flow
13546    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13547    ------------------------------------------------------------------------------------
13548    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13549 
13550    ----------------------------------------------------------------------------------
13551    -- 4219869 Business Flow
13552    -- Update journal entry status -- Need to generate this within IF <condition>
13553    ----------------------------------------------------------------------------------
13554    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13555          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13556          ,p_balance_type_code => l_balance_type_code
13557          );
13558 
13559    -------------------------------------------------------------------------------------------
13560    -- 4262811 - Generate the Accrual Reversal lines
13561    -------------------------------------------------------------------------------------------
13562    BEGIN
13563       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13564                               (g_array_event(p_event_id).array_value_num('header_index'));
13565       IF l_acc_rev_flag IS NULL THEN
13566          l_acc_rev_flag := 'N';
13567       END IF;
13568    EXCEPTION
13569       WHEN OTHERS THEN
13570          l_acc_rev_flag := 'N';
13571    END;
13572    --
13573    IF (l_acc_rev_flag = 'Y') THEN
13574 
13575        -- 4645092  ------------------------------------------------------------------------------
13576        -- To allow MPA report to determine if it should generate report process
13577        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13578        ------------------------------------------------------------------------------------------
13579 
13580        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13581        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13582 
13583        --
13584        -- Update the line information that should be overwritten
13585        --
13586        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13587                                          p_header_num   => 1);
13588        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13589 
13590        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13591 
13592        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13593           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13594        END IF;
13595 
13596       --
13597       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13598       --
13599       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13600           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13601       ELSE
13602           ---------------------------------------------------------------------------------------------------
13603           -- 4262811a Switch Sign
13604           ---------------------------------------------------------------------------------------------------
13605           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13606           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13607                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13608           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13609                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13610           -- 5132302
13611           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13612                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13613 
13614       END IF;
13615 
13616       -- 4955764
13617       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13618       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13619 
13620 
13621       XLA_AE_LINES_PKG.ValidateCurrentLine;
13622       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13623 
13624       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13625                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13626                ,p_balance_type_code => l_balance_type_code);
13627 
13628    END IF;
13629 
13630    -----------------------------------------------------------------------------------------
13631    -- 4262811 Multiperiod Accounting
13632    -----------------------------------------------------------------------------------------
13633      -- No MPA option is assigned.
13634 
13635 
13636 END IF;
13637 END IF;
13638 --
13639 
13640 --
13641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13642    trace
13643       (p_msg      => 'END of AcctLineType_28'
13647 --
13644       ,p_level    => C_LEVEL_PROCEDURE
13645       ,p_module   => l_log_module);
13646 END IF;
13648 EXCEPTION
13649   WHEN xla_exceptions_pkg.application_exception THEN
13650       RAISE;
13651   WHEN OTHERS THEN
13652        xla_exceptions_pkg.raise_message
13653            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_28');
13654 END AcctLineType_28;
13655 --
13656 
13657 ---------------------------------------
13658 --
13659 -- PRIVATE FUNCTION
13660 --         AcctLineType_29
13661 --
13662 ---------------------------------------
13663 PROCEDURE AcctLineType_29 (
13664   p_application_id        IN NUMBER
13665  ,p_event_id              IN NUMBER
13666  ,p_calculate_acctd_flag  IN VARCHAR2
13667  ,p_calculate_g_l_flag    IN VARCHAR2
13668  ,p_actual_flag           IN OUT VARCHAR2
13669  ,p_balance_type_code     OUT VARCHAR2
13670  ,p_gain_or_loss_ref      OUT VARCHAR2
13671  
13672 --Contract Number
13673  , p_source_1            IN VARCHAR2
13674 --Contract Product Name
13675  , p_source_2            IN VARCHAR2
13676 --Distribution Account
13677  , p_source_5            IN NUMBER
13678 --Accounting Line Type
13679  , p_source_6            IN VARCHAR2
13680  , p_source_6_meaning    IN VARCHAR2
13681 --Accounting Distribution Identifier
13682  , p_source_7            IN NUMBER
13683 --Distribution Type
13684  , p_source_8            IN VARCHAR2
13685 --Distribution Entered Amount
13686  , p_source_9            IN NUMBER
13687 --Transaction Currency Code
13688  , p_source_10            IN VARCHAR2
13689 --Transaction Currency Conversion Date
13690  , p_source_11            IN DATE
13691 --Transaction Currency Conversion Rate
13692  , p_source_12            IN NUMBER
13693 --Transaction Currency Conversion Type
13694  , p_source_13            IN VARCHAR2
13695 )
13696 IS
13697 
13698 l_component_type              VARCHAR2(80);
13699 l_component_code              VARCHAR2(30);
13700 l_component_type_code         VARCHAR2(1);
13701 l_component_appl_id           INTEGER;
13702 l_amb_context_code            VARCHAR2(30);
13703 l_entity_code                 VARCHAR2(30);
13704 l_event_class_code            VARCHAR2(30);
13705 l_ae_header_id                NUMBER;
13706 l_event_type_code             VARCHAR2(30);
13707 l_line_definition_code        VARCHAR2(30);
13708 l_line_definition_owner_code  VARCHAR2(1);
13709 --
13710 -- adr variables
13711 l_segment                     VARCHAR2(30);
13712 l_ccid                        NUMBER;
13713 l_adr_transaction_coa_id      NUMBER;
13714 l_adr_accounting_coa_id       NUMBER;
13715 l_adr_flexfield_segment_code  VARCHAR2(30);
13716 l_adr_flex_value_set_id       NUMBER;
13717 l_adr_value_type_code         VARCHAR2(30);
13718 l_adr_value_combination_id    NUMBER;
13719 l_adr_value_segment_code      VARCHAR2(30);
13720 
13721 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13722 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13723 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13724 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13725 
13726 -- 4262811 Variables ------------------------------------------------------------------------------------------
13727 l_entered_amt_idx             NUMBER;
13728 l_accted_amt_idx              NUMBER;
13729 l_acc_rev_flag                VARCHAR2(1);
13730 l_accrual_line_num            NUMBER;
13731 l_tmp_amt                     NUMBER;
13732 l_acc_rev_natural_side_code   VARCHAR2(1);
13733 
13734 l_num_entries                 NUMBER;
13735 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13736 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13737 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13738 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13739 l_recog_line_1                NUMBER;
13740 l_recog_line_2                NUMBER;
13741 
13742 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13743 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13744 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13745 
13746 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13747 
13748 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13749 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13750 
13751 ---------------------------------------------------------------------------------------------------------------
13752 
13753 
13754 --
13755 -- bulk performance
13756 --
13757 l_balance_type_code           VARCHAR2(1);
13758 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13759 l_log_module                  VARCHAR2(240);
13760 
13761 --
13762 -- Upgrade strategy
13763 --
13764 l_actual_upg_option           VARCHAR2(1);
13765 l_enc_upg_option           VARCHAR2(1);
13766 
13767 --
13768 BEGIN
13769 --
13770 IF g_log_enabled THEN
13771       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
13772 END IF;
13773 --
13774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13775 
13776       trace
13777          (p_msg      => 'BEGIN of AcctLineType_29'
13778          ,p_level    => C_LEVEL_PROCEDURE
13779          ,p_module   => l_log_module);
13780 
13781 END IF;
13782 --
13783 l_component_type             := 'AMB_JLT';
13784 l_component_code             := 'OKL_TERMINATION_DR';
13785 l_component_type_code        := 'S';
13786 l_component_appl_id          :=  540;
13787 l_amb_context_code           := 'DEFAULT';
13788 l_entity_code                := 'CONTRACTS';
13789 l_event_class_code           := 'TERMINATION';
13793 --
13790 l_event_type_code            := 'TERMINATION_ALL';
13791 l_line_definition_owner_code := 'S';
13792 l_line_definition_code       := 'OKL_TERMINATION';
13794 l_balance_type_code          := 'A';
13795 l_segment                     := NULL;
13796 l_ccid                        := NULL;
13797 l_adr_transaction_coa_id      := NULL;
13798 l_adr_accounting_coa_id       := NULL;
13799 l_adr_flexfield_segment_code  := NULL;
13800 l_adr_flex_value_set_id       := NULL;
13801 l_adr_value_type_code         := NULL;
13802 l_adr_value_combination_id    := NULL;
13803 l_adr_value_segment_code      := NULL;
13804 
13805 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13806 l_bflow_class_code           := '';    -- 4219869 Business Flow
13807 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13808 l_budgetary_control_flag     := 'N';
13809 
13810 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13811 l_bflow_applied_to_amt       := NULL; -- 5132302
13812 l_entered_amt_idx            := NULL;          -- 4262811
13813 l_accted_amt_idx             := NULL;          -- 4262811
13814 l_acc_rev_flag               := NULL;          -- 4262811
13815 l_accrual_line_num           := NULL;          -- 4262811
13816 l_tmp_amt                    := NULL;          -- 4262811
13817 --
13818  
13819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13820     l_balance_type_code <> 'B' THEN
13821 IF NVL(p_source_6,'
13822 ') =  'LEASE_DEBIT'
13823  THEN 
13824 
13825    --
13826    XLA_AE_LINES_PKG.SetNewLine;
13827 
13828    p_balance_type_code          := l_balance_type_code;
13829    -- set the flag so later we will know whether the gain loss line needs to be created
13830    
13831    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13832      p_actual_flag :='A';
13833    END IF;
13834 
13835    --
13836    -- bulk performance
13837    --
13838    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13839                                       p_header_num   => 0); -- 4262811
13840    --
13841    -- set accounting line options
13842    --
13843    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13844            p_natural_side_code          => 'D'
13845          , p_gain_or_loss_flag          => 'N'
13846          , p_gl_transfer_mode_code      => 'S'
13847          , p_acct_entry_type_code       => 'A'
13848          , p_switch_side_flag           => 'Y'
13849          , p_merge_duplicate_code       => 'N'
13850          );
13851    --
13852    l_acc_rev_natural_side_code := 'C';  -- 4262811
13853    -- 
13854    --
13855    -- set accounting line type info
13856    --
13857    xla_ae_lines_pkg.SetAcctLineType
13858       (p_component_type             => l_component_type
13859       ,p_event_type_code            => l_event_type_code
13860       ,p_line_definition_owner_code => l_line_definition_owner_code
13861       ,p_line_definition_code       => l_line_definition_code
13862       ,p_accounting_line_code       => l_component_code
13863       ,p_accounting_line_type_code  => l_component_type_code
13864       ,p_accounting_line_appl_id    => l_component_appl_id
13865       ,p_amb_context_code           => l_amb_context_code
13866       ,p_entity_code                => l_entity_code
13867       ,p_event_class_code           => l_event_class_code);
13868    --
13869    -- set accounting class
13870    --
13871    xla_ae_lines_pkg.SetAcctClass(
13872            p_accounting_class_code  => 'TERMINATION'
13873          , p_ae_header_id           => l_ae_header_id
13874          );
13875 
13876    --
13877    -- set rounding class
13878    --
13879    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13880                       'TERMINATION';
13881 
13882    --
13883    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13884    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13885    --
13886    -- bulk performance
13887    --
13888    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13889 
13890    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13891       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13892 
13893    -- 4955764
13894    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13895       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13896 
13897    -- 4458381 Public Sector Enh
13898    
13899    --
13900    -- set accounting attributes for the line type
13901    --
13902    l_entered_amt_idx := 3;
13903    l_accted_amt_idx  := NULL;
13904    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13905    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13906    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
13907    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13908    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
13909    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13910    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
13911    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13912    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
13913    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13914    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
13915    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13916    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
13917    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13918    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
13919 
13923    ---------------------------------------------------------------------------------------------------------------
13920    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13921    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13922 
13924    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13925    ---------------------------------------------------------------------------------------------------------------
13926    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13927 
13928    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13929    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13930 
13931    IF xla_accounting_cache_pkg.GetValueChar
13932          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13933          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13934    AND l_bflow_method_code = 'PRIOR_ENTRY'
13935 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13936    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13937          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13938        )
13939    THEN
13940          xla_ae_lines_pkg.BflowUpgEntry
13941            (p_business_method_code    => l_bflow_method_code
13942            ,p_business_class_code     => l_bflow_class_code
13943            ,p_balance_type            => l_balance_type_code);
13944    ELSE
13945       NULL;
13946 -- No business flow processing for business flow method of NONE.
13947    END IF;
13948 
13949    --
13950    -- call analytical criteria
13951    --
13952    
13953    --
13954    -- call description
13955    --
13956    
13957 xla_ae_lines_pkg.SetLineDescription(
13958    p_ae_header_id => l_ae_header_id
13959   ,p_description  => Description_1 (
13960      p_application_id         => p_application_id
13961    , p_ae_header_id           => l_ae_header_id 
13962 , p_source_1 => p_source_1
13963 , p_source_2 => p_source_2
13964    )
13965 );
13966 
13967 
13968    --
13969    -- call ADRs
13970    -- Bug 4922099
13971    --
13972    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13973         (NVL(l_actual_upg_option, 'N') = 'O') OR
13974         (NVL(l_enc_upg_option, 'N') = 'O')
13975       )
13976    THEN
13977    NULL;
13978    --
13979    --
13980    
13981   l_ccid := AcctDerRule_3(
13982            p_application_id           => p_application_id
13983          , p_ae_header_id             => l_ae_header_id 
13984 , p_source_5 => p_source_5
13985          , x_transaction_coa_id       => l_adr_transaction_coa_id
13986          , x_accounting_coa_id        => l_adr_accounting_coa_id
13987          , x_value_type_code          => l_adr_value_type_code
13988          , p_side                     => 'NA'
13989    );
13990 
13991    xla_ae_lines_pkg.set_ccid(
13992     p_code_combination_id          => l_ccid
13993   , p_value_type_code              => l_adr_value_type_code
13994   , p_transaction_coa_id           => l_adr_transaction_coa_id
13995   , p_accounting_coa_id            => l_adr_accounting_coa_id
13996   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
13997   , p_adr_type_code                => 'S'
13998   , p_component_type               => l_component_type
13999   , p_component_code               => l_component_code
14000   , p_component_type_code          => l_component_type_code
14001   , p_component_appl_id            => l_component_appl_id
14002   , p_amb_context_code             => l_amb_context_code
14003   , p_side                         => 'NA'
14004   );
14005 
14006 
14007    --
14008    --
14009    END IF;
14010    --
14011    -- Bug 4922099
14012    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14013           (NVL(l_enc_upg_option, 'N') = 'O')
14014         ) AND
14015         (l_bflow_method_code = 'PRIOR_ENTRY')
14016       )
14017    THEN
14018       IF
14019       --
14020       1 = 2
14021       --
14022       THEN
14023       xla_accounting_err_pkg.build_message
14024                                     (p_appli_s_name            => 'XLA'
14025                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14026                                     ,p_token_1                 => 'LINE_NUMBER'
14027                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14028                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14029                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14030                                                                              l_component_type
14031                                                                             ,l_component_code
14032                                                                             ,l_component_type_code
14033                                                                             ,l_component_appl_id
14034                                                                             ,l_amb_context_code
14035                                                                             ,l_entity_code
14036                                                                             ,l_event_class_code
14037                                                                            )
14038                                     ,p_token_3                 => 'OWNER'
14039                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14040                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14041                                                                           ,p_lookup_code    => l_component_type_code
14045                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14042                                                                          )
14043                                     ,p_token_4                 => 'PRODUCT_NAME'
14044                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14046                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14047                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14048                                     ,p_ae_header_id            =>  NULL
14049                                        );
14050 
14051         IF (C_LEVEL_ERROR>= g_log_level) THEN
14052                  trace
14053                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14054                       ,p_level    => C_LEVEL_ERROR
14055                       ,p_module   => l_log_module);
14056         END IF;
14057       END IF;
14058    END IF;
14059    --
14060    --
14061    ------------------------------------------------------------------------------------------------
14062    -- 4219869 Business Flow
14063    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14064    -- Prior Entry.  Currently, the following code is always generated.
14065    ------------------------------------------------------------------------------------------------
14066    XLA_AE_LINES_PKG.ValidateCurrentLine;
14067 
14068    ------------------------------------------------------------------------------------
14069    -- 4219869 Business Flow
14070    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14071    ------------------------------------------------------------------------------------
14072    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14073 
14074    ----------------------------------------------------------------------------------
14075    -- 4219869 Business Flow
14076    -- Update journal entry status -- Need to generate this within IF <condition>
14077    ----------------------------------------------------------------------------------
14078    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14079          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14080          ,p_balance_type_code => l_balance_type_code
14081          );
14082 
14083    -------------------------------------------------------------------------------------------
14084    -- 4262811 - Generate the Accrual Reversal lines
14085    -------------------------------------------------------------------------------------------
14086    BEGIN
14087       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14088                               (g_array_event(p_event_id).array_value_num('header_index'));
14089       IF l_acc_rev_flag IS NULL THEN
14090          l_acc_rev_flag := 'N';
14091       END IF;
14092    EXCEPTION
14093       WHEN OTHERS THEN
14094          l_acc_rev_flag := 'N';
14095    END;
14096    --
14097    IF (l_acc_rev_flag = 'Y') THEN
14098 
14099        -- 4645092  ------------------------------------------------------------------------------
14100        -- To allow MPA report to determine if it should generate report process
14101        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14102        ------------------------------------------------------------------------------------------
14103 
14104        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14105        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14106 
14107        --
14108        -- Update the line information that should be overwritten
14109        --
14110        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14111                                          p_header_num   => 1);
14112        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14113 
14114        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14115 
14116        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14117           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14118        END IF;
14119 
14120       --
14121       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14122       --
14123       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14124           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14125       ELSE
14126           ---------------------------------------------------------------------------------------------------
14127           -- 4262811a Switch Sign
14128           ---------------------------------------------------------------------------------------------------
14129           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14130           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14131                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14132           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14133                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14134           -- 5132302
14135           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14136                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14137 
14138       END IF;
14139 
14140       -- 4955764
14141       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14142       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14143 
14144 
14148       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14145       XLA_AE_LINES_PKG.ValidateCurrentLine;
14146       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14147 
14149                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14150                ,p_balance_type_code => l_balance_type_code);
14151 
14152    END IF;
14153 
14154    -----------------------------------------------------------------------------------------
14155    -- 4262811 Multiperiod Accounting
14156    -----------------------------------------------------------------------------------------
14157      -- No MPA option is assigned.
14158 
14159 
14160 END IF;
14161 END IF;
14162 --
14163 
14164 --
14165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14166    trace
14167       (p_msg      => 'END of AcctLineType_29'
14168       ,p_level    => C_LEVEL_PROCEDURE
14169       ,p_module   => l_log_module);
14170 END IF;
14171 --
14172 EXCEPTION
14173   WHEN xla_exceptions_pkg.application_exception THEN
14174       RAISE;
14175   WHEN OTHERS THEN
14176        xla_exceptions_pkg.raise_message
14177            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_29');
14178 END AcctLineType_29;
14179 --
14180 
14181 ---------------------------------------
14182 --
14183 -- PRIVATE FUNCTION
14184 --         AcctLineType_30
14185 --
14186 ---------------------------------------
14187 PROCEDURE AcctLineType_30 (
14188   p_application_id        IN NUMBER
14189  ,p_event_id              IN NUMBER
14190  ,p_calculate_acctd_flag  IN VARCHAR2
14191  ,p_calculate_g_l_flag    IN VARCHAR2
14192  ,p_actual_flag           IN OUT VARCHAR2
14193  ,p_balance_type_code     OUT VARCHAR2
14194  ,p_gain_or_loss_ref      OUT VARCHAR2
14195  
14196 --Contract Number
14197  , p_source_1            IN VARCHAR2
14198 --Contract Product Name
14199  , p_source_2            IN VARCHAR2
14200 --Distribution Account
14201  , p_source_5            IN NUMBER
14202 --Accounting Line Type
14203  , p_source_6            IN VARCHAR2
14204  , p_source_6_meaning    IN VARCHAR2
14205 --Accounting Distribution Identifier
14206  , p_source_7            IN NUMBER
14207 --Distribution Type
14208  , p_source_8            IN VARCHAR2
14209 --Distribution Entered Amount
14210  , p_source_9            IN NUMBER
14211 --Transaction Currency Code
14212  , p_source_10            IN VARCHAR2
14213 --Transaction Currency Conversion Date
14214  , p_source_11            IN DATE
14215 --Transaction Currency Conversion Rate
14216  , p_source_12            IN NUMBER
14217 --Transaction Currency Conversion Type
14218  , p_source_13            IN VARCHAR2
14219 )
14220 IS
14221 
14222 l_component_type              VARCHAR2(80);
14223 l_component_code              VARCHAR2(30);
14224 l_component_type_code         VARCHAR2(1);
14225 l_component_appl_id           INTEGER;
14226 l_amb_context_code            VARCHAR2(30);
14227 l_entity_code                 VARCHAR2(30);
14228 l_event_class_code            VARCHAR2(30);
14229 l_ae_header_id                NUMBER;
14230 l_event_type_code             VARCHAR2(30);
14231 l_line_definition_code        VARCHAR2(30);
14232 l_line_definition_owner_code  VARCHAR2(1);
14233 --
14234 -- adr variables
14235 l_segment                     VARCHAR2(30);
14236 l_ccid                        NUMBER;
14237 l_adr_transaction_coa_id      NUMBER;
14238 l_adr_accounting_coa_id       NUMBER;
14239 l_adr_flexfield_segment_code  VARCHAR2(30);
14240 l_adr_flex_value_set_id       NUMBER;
14241 l_adr_value_type_code         VARCHAR2(30);
14242 l_adr_value_combination_id    NUMBER;
14243 l_adr_value_segment_code      VARCHAR2(30);
14244 
14245 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14246 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14247 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14248 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14249 
14250 -- 4262811 Variables ------------------------------------------------------------------------------------------
14251 l_entered_amt_idx             NUMBER;
14252 l_accted_amt_idx              NUMBER;
14253 l_acc_rev_flag                VARCHAR2(1);
14254 l_accrual_line_num            NUMBER;
14255 l_tmp_amt                     NUMBER;
14256 l_acc_rev_natural_side_code   VARCHAR2(1);
14257 
14258 l_num_entries                 NUMBER;
14259 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14260 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14261 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14262 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14263 l_recog_line_1                NUMBER;
14264 l_recog_line_2                NUMBER;
14265 
14266 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14267 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14268 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14269 
14270 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14271 
14272 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14273 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14274 
14275 ---------------------------------------------------------------------------------------------------------------
14276 
14277 
14278 --
14279 -- bulk performance
14280 --
14281 l_balance_type_code           VARCHAR2(1);
14282 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14283 l_log_module                  VARCHAR2(240);
14284 
14285 --
14286 -- Upgrade strategy
14287 --
14288 l_actual_upg_option           VARCHAR2(1);
14292 BEGIN
14289 l_enc_upg_option           VARCHAR2(1);
14290 
14291 --
14293 --
14294 IF g_log_enabled THEN
14295       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
14296 END IF;
14297 --
14298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14299 
14300       trace
14301          (p_msg      => 'BEGIN of AcctLineType_30'
14302          ,p_level    => C_LEVEL_PROCEDURE
14303          ,p_module   => l_log_module);
14304 
14305 END IF;
14306 --
14307 l_component_type             := 'AMB_JLT';
14308 l_component_code             := 'OKL_UPFRONT_TAX_CR';
14309 l_component_type_code        := 'S';
14310 l_component_appl_id          :=  540;
14311 l_amb_context_code           := 'DEFAULT';
14312 l_entity_code                := 'CONTRACTS';
14313 l_event_class_code           := 'UPFRONT_TAX';
14314 l_event_type_code            := 'UPFRONT_TAX_ALL';
14315 l_line_definition_owner_code := 'S';
14316 l_line_definition_code       := 'OKL_UPFRONT_TAX';
14317 --
14318 l_balance_type_code          := 'A';
14319 l_segment                     := NULL;
14320 l_ccid                        := NULL;
14321 l_adr_transaction_coa_id      := NULL;
14322 l_adr_accounting_coa_id       := NULL;
14323 l_adr_flexfield_segment_code  := NULL;
14324 l_adr_flex_value_set_id       := NULL;
14325 l_adr_value_type_code         := NULL;
14326 l_adr_value_combination_id    := NULL;
14327 l_adr_value_segment_code      := NULL;
14328 
14329 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14330 l_bflow_class_code           := '';    -- 4219869 Business Flow
14331 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14332 l_budgetary_control_flag     := 'N';
14333 
14334 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14335 l_bflow_applied_to_amt       := NULL; -- 5132302
14336 l_entered_amt_idx            := NULL;          -- 4262811
14337 l_accted_amt_idx             := NULL;          -- 4262811
14338 l_acc_rev_flag               := NULL;          -- 4262811
14339 l_accrual_line_num           := NULL;          -- 4262811
14340 l_tmp_amt                    := NULL;          -- 4262811
14341 --
14342  
14343 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14344     l_balance_type_code <> 'B' THEN
14345 IF NVL(p_source_6,'
14346 ') =  'LEASE_CREDIT'
14347  THEN 
14348 
14349    --
14350    XLA_AE_LINES_PKG.SetNewLine;
14351 
14352    p_balance_type_code          := l_balance_type_code;
14353    -- set the flag so later we will know whether the gain loss line needs to be created
14354    
14355    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14356      p_actual_flag :='A';
14357    END IF;
14358 
14359    --
14360    -- bulk performance
14361    --
14362    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14363                                       p_header_num   => 0); -- 4262811
14364    --
14365    -- set accounting line options
14366    --
14367    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14368            p_natural_side_code          => 'C'
14369          , p_gain_or_loss_flag          => 'N'
14370          , p_gl_transfer_mode_code      => 'S'
14371          , p_acct_entry_type_code       => 'A'
14372          , p_switch_side_flag           => 'Y'
14373          , p_merge_duplicate_code       => 'N'
14374          );
14375    --
14376    l_acc_rev_natural_side_code := 'D';  -- 4262811
14377    -- 
14378    --
14379    -- set accounting line type info
14380    --
14381    xla_ae_lines_pkg.SetAcctLineType
14382       (p_component_type             => l_component_type
14383       ,p_event_type_code            => l_event_type_code
14384       ,p_line_definition_owner_code => l_line_definition_owner_code
14385       ,p_line_definition_code       => l_line_definition_code
14386       ,p_accounting_line_code       => l_component_code
14387       ,p_accounting_line_type_code  => l_component_type_code
14388       ,p_accounting_line_appl_id    => l_component_appl_id
14389       ,p_amb_context_code           => l_amb_context_code
14390       ,p_entity_code                => l_entity_code
14391       ,p_event_class_code           => l_event_class_code);
14392    --
14393    -- set accounting class
14394    --
14395    xla_ae_lines_pkg.SetAcctClass(
14396            p_accounting_class_code  => 'UPFRONT_TAX'
14397          , p_ae_header_id           => l_ae_header_id
14398          );
14399 
14400    --
14401    -- set rounding class
14402    --
14403    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14404                       'UPFRONT_TAX';
14405 
14406    --
14407    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14408    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14409    --
14410    -- bulk performance
14411    --
14412    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14413 
14414    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14415       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14416 
14417    -- 4955764
14418    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14419       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14420 
14421    -- 4458381 Public Sector Enh
14422    
14423    --
14424    -- set accounting attributes for the line type
14425    --
14426    l_entered_amt_idx := 3;
14427    l_accted_amt_idx  := NULL;
14428    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14429    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14433    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14430    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
14431    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14432    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
14434    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
14435    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14436    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
14437    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14438    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
14439    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14440    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
14441    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14442    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
14443 
14444    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14445    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14446 
14447    ---------------------------------------------------------------------------------------------------------------
14448    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14449    ---------------------------------------------------------------------------------------------------------------
14450    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14451 
14452    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14453    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14454 
14455    IF xla_accounting_cache_pkg.GetValueChar
14456          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14457          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14458    AND l_bflow_method_code = 'PRIOR_ENTRY'
14459 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14460    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14461          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14462        )
14463    THEN
14464          xla_ae_lines_pkg.BflowUpgEntry
14465            (p_business_method_code    => l_bflow_method_code
14466            ,p_business_class_code     => l_bflow_class_code
14467            ,p_balance_type            => l_balance_type_code);
14468    ELSE
14469       NULL;
14470 -- No business flow processing for business flow method of NONE.
14471    END IF;
14472 
14473    --
14474    -- call analytical criteria
14475    --
14476    
14477    --
14478    -- call description
14479    --
14480    
14481 xla_ae_lines_pkg.SetLineDescription(
14482    p_ae_header_id => l_ae_header_id
14483   ,p_description  => Description_1 (
14484      p_application_id         => p_application_id
14485    , p_ae_header_id           => l_ae_header_id 
14486 , p_source_1 => p_source_1
14487 , p_source_2 => p_source_2
14488    )
14489 );
14490 
14491 
14492    --
14493    -- call ADRs
14494    -- Bug 4922099
14495    --
14496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14497         (NVL(l_actual_upg_option, 'N') = 'O') OR
14498         (NVL(l_enc_upg_option, 'N') = 'O')
14499       )
14500    THEN
14501    NULL;
14502    --
14503    --
14504    
14505   l_ccid := AcctDerRule_3(
14506            p_application_id           => p_application_id
14507          , p_ae_header_id             => l_ae_header_id 
14508 , p_source_5 => p_source_5
14509          , x_transaction_coa_id       => l_adr_transaction_coa_id
14510          , x_accounting_coa_id        => l_adr_accounting_coa_id
14511          , x_value_type_code          => l_adr_value_type_code
14512          , p_side                     => 'NA'
14513    );
14514 
14515    xla_ae_lines_pkg.set_ccid(
14516     p_code_combination_id          => l_ccid
14517   , p_value_type_code              => l_adr_value_type_code
14518   , p_transaction_coa_id           => l_adr_transaction_coa_id
14519   , p_accounting_coa_id            => l_adr_accounting_coa_id
14520   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
14521   , p_adr_type_code                => 'S'
14522   , p_component_type               => l_component_type
14523   , p_component_code               => l_component_code
14524   , p_component_type_code          => l_component_type_code
14525   , p_component_appl_id            => l_component_appl_id
14526   , p_amb_context_code             => l_amb_context_code
14527   , p_side                         => 'NA'
14528   );
14529 
14530 
14531    --
14532    --
14533    END IF;
14534    --
14535    -- Bug 4922099
14536    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14537           (NVL(l_enc_upg_option, 'N') = 'O')
14538         ) AND
14539         (l_bflow_method_code = 'PRIOR_ENTRY')
14540       )
14541    THEN
14542       IF
14543       --
14544       1 = 2
14545       --
14546       THEN
14547       xla_accounting_err_pkg.build_message
14548                                     (p_appli_s_name            => 'XLA'
14549                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14550                                     ,p_token_1                 => 'LINE_NUMBER'
14551                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14552                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14553                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14554                                                                              l_component_type
14555                                                                             ,l_component_code
14559                                                                             ,l_entity_code
14556                                                                             ,l_component_type_code
14557                                                                             ,l_component_appl_id
14558                                                                             ,l_amb_context_code
14560                                                                             ,l_event_class_code
14561                                                                            )
14562                                     ,p_token_3                 => 'OWNER'
14563                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14564                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14565                                                                           ,p_lookup_code    => l_component_type_code
14566                                                                          )
14567                                     ,p_token_4                 => 'PRODUCT_NAME'
14568                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14569                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14570                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14571                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14572                                     ,p_ae_header_id            =>  NULL
14573                                        );
14574 
14575         IF (C_LEVEL_ERROR>= g_log_level) THEN
14576                  trace
14577                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14578                       ,p_level    => C_LEVEL_ERROR
14579                       ,p_module   => l_log_module);
14580         END IF;
14581       END IF;
14582    END IF;
14583    --
14584    --
14585    ------------------------------------------------------------------------------------------------
14586    -- 4219869 Business Flow
14587    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14588    -- Prior Entry.  Currently, the following code is always generated.
14589    ------------------------------------------------------------------------------------------------
14590    XLA_AE_LINES_PKG.ValidateCurrentLine;
14591 
14592    ------------------------------------------------------------------------------------
14593    -- 4219869 Business Flow
14594    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14595    ------------------------------------------------------------------------------------
14596    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14597 
14598    ----------------------------------------------------------------------------------
14599    -- 4219869 Business Flow
14600    -- Update journal entry status -- Need to generate this within IF <condition>
14601    ----------------------------------------------------------------------------------
14602    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14603          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14604          ,p_balance_type_code => l_balance_type_code
14605          );
14606 
14607    -------------------------------------------------------------------------------------------
14608    -- 4262811 - Generate the Accrual Reversal lines
14609    -------------------------------------------------------------------------------------------
14610    BEGIN
14611       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14612                               (g_array_event(p_event_id).array_value_num('header_index'));
14613       IF l_acc_rev_flag IS NULL THEN
14614          l_acc_rev_flag := 'N';
14615       END IF;
14616    EXCEPTION
14617       WHEN OTHERS THEN
14618          l_acc_rev_flag := 'N';
14619    END;
14620    --
14621    IF (l_acc_rev_flag = 'Y') THEN
14622 
14623        -- 4645092  ------------------------------------------------------------------------------
14624        -- To allow MPA report to determine if it should generate report process
14625        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14626        ------------------------------------------------------------------------------------------
14627 
14628        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14629        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14630 
14631        --
14632        -- Update the line information that should be overwritten
14633        --
14634        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14635                                          p_header_num   => 1);
14636        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14637 
14638        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14639 
14640        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14641           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14642        END IF;
14643 
14644       --
14645       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14646       --
14647       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14648           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14649       ELSE
14650           ---------------------------------------------------------------------------------------------------
14651           -- 4262811a Switch Sign
14652           ---------------------------------------------------------------------------------------------------
14653           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14657                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14654           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14655                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14656           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14658           -- 5132302
14659           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14660                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14661 
14662       END IF;
14663 
14664       -- 4955764
14665       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14666       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14667 
14668 
14669       XLA_AE_LINES_PKG.ValidateCurrentLine;
14670       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14671 
14672       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14673                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14674                ,p_balance_type_code => l_balance_type_code);
14675 
14676    END IF;
14677 
14678    -----------------------------------------------------------------------------------------
14679    -- 4262811 Multiperiod Accounting
14680    -----------------------------------------------------------------------------------------
14681      -- No MPA option is assigned.
14682 
14683 
14684 END IF;
14685 END IF;
14686 --
14687 
14688 --
14689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14690    trace
14691       (p_msg      => 'END of AcctLineType_30'
14692       ,p_level    => C_LEVEL_PROCEDURE
14693       ,p_module   => l_log_module);
14694 END IF;
14695 --
14696 EXCEPTION
14697   WHEN xla_exceptions_pkg.application_exception THEN
14698       RAISE;
14699   WHEN OTHERS THEN
14700        xla_exceptions_pkg.raise_message
14701            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_30');
14702 END AcctLineType_30;
14703 --
14704 
14705 ---------------------------------------
14706 --
14707 -- PRIVATE FUNCTION
14708 --         AcctLineType_31
14709 --
14710 ---------------------------------------
14711 PROCEDURE AcctLineType_31 (
14712   p_application_id        IN NUMBER
14713  ,p_event_id              IN NUMBER
14714  ,p_calculate_acctd_flag  IN VARCHAR2
14715  ,p_calculate_g_l_flag    IN VARCHAR2
14716  ,p_actual_flag           IN OUT VARCHAR2
14717  ,p_balance_type_code     OUT VARCHAR2
14718  ,p_gain_or_loss_ref      OUT VARCHAR2
14719  
14720 --Contract Number
14721  , p_source_1            IN VARCHAR2
14722 --Contract Product Name
14723  , p_source_2            IN VARCHAR2
14724 --Distribution Account
14725  , p_source_5            IN NUMBER
14726 --Accounting Line Type
14727  , p_source_6            IN VARCHAR2
14728  , p_source_6_meaning    IN VARCHAR2
14729 --Accounting Distribution Identifier
14730  , p_source_7            IN NUMBER
14731 --Distribution Type
14732  , p_source_8            IN VARCHAR2
14733 --Distribution Entered Amount
14734  , p_source_9            IN NUMBER
14735 --Transaction Currency Code
14736  , p_source_10            IN VARCHAR2
14737 --Transaction Currency Conversion Date
14738  , p_source_11            IN DATE
14739 --Transaction Currency Conversion Rate
14740  , p_source_12            IN NUMBER
14741 --Transaction Currency Conversion Type
14742  , p_source_13            IN VARCHAR2
14743 )
14744 IS
14745 
14746 l_component_type              VARCHAR2(80);
14747 l_component_code              VARCHAR2(30);
14748 l_component_type_code         VARCHAR2(1);
14749 l_component_appl_id           INTEGER;
14750 l_amb_context_code            VARCHAR2(30);
14751 l_entity_code                 VARCHAR2(30);
14752 l_event_class_code            VARCHAR2(30);
14753 l_ae_header_id                NUMBER;
14754 l_event_type_code             VARCHAR2(30);
14755 l_line_definition_code        VARCHAR2(30);
14756 l_line_definition_owner_code  VARCHAR2(1);
14757 --
14758 -- adr variables
14759 l_segment                     VARCHAR2(30);
14760 l_ccid                        NUMBER;
14761 l_adr_transaction_coa_id      NUMBER;
14762 l_adr_accounting_coa_id       NUMBER;
14763 l_adr_flexfield_segment_code  VARCHAR2(30);
14764 l_adr_flex_value_set_id       NUMBER;
14765 l_adr_value_type_code         VARCHAR2(30);
14766 l_adr_value_combination_id    NUMBER;
14767 l_adr_value_segment_code      VARCHAR2(30);
14768 
14769 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14770 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14771 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14772 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14773 
14774 -- 4262811 Variables ------------------------------------------------------------------------------------------
14775 l_entered_amt_idx             NUMBER;
14776 l_accted_amt_idx              NUMBER;
14777 l_acc_rev_flag                VARCHAR2(1);
14778 l_accrual_line_num            NUMBER;
14779 l_tmp_amt                     NUMBER;
14780 l_acc_rev_natural_side_code   VARCHAR2(1);
14781 
14782 l_num_entries                 NUMBER;
14783 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14784 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14785 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14786 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14787 l_recog_line_1                NUMBER;
14788 l_recog_line_2                NUMBER;
14789 
14790 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14794 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14791 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14792 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14793 
14795 
14796 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14797 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14798 
14799 ---------------------------------------------------------------------------------------------------------------
14800 
14801 
14802 --
14803 -- bulk performance
14804 --
14805 l_balance_type_code           VARCHAR2(1);
14806 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14807 l_log_module                  VARCHAR2(240);
14808 
14809 --
14810 -- Upgrade strategy
14811 --
14812 l_actual_upg_option           VARCHAR2(1);
14813 l_enc_upg_option           VARCHAR2(1);
14814 
14815 --
14816 BEGIN
14817 --
14818 IF g_log_enabled THEN
14819       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
14820 END IF;
14821 --
14822 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14823 
14824       trace
14825          (p_msg      => 'BEGIN of AcctLineType_31'
14826          ,p_level    => C_LEVEL_PROCEDURE
14827          ,p_module   => l_log_module);
14828 
14829 END IF;
14830 --
14831 l_component_type             := 'AMB_JLT';
14832 l_component_code             := 'OKL_UPFRONT_TAX_DR';
14833 l_component_type_code        := 'S';
14834 l_component_appl_id          :=  540;
14835 l_amb_context_code           := 'DEFAULT';
14836 l_entity_code                := 'CONTRACTS';
14837 l_event_class_code           := 'UPFRONT_TAX';
14838 l_event_type_code            := 'UPFRONT_TAX_ALL';
14839 l_line_definition_owner_code := 'S';
14840 l_line_definition_code       := 'OKL_UPFRONT_TAX';
14841 --
14842 l_balance_type_code          := 'A';
14843 l_segment                     := NULL;
14844 l_ccid                        := NULL;
14845 l_adr_transaction_coa_id      := NULL;
14846 l_adr_accounting_coa_id       := NULL;
14847 l_adr_flexfield_segment_code  := NULL;
14848 l_adr_flex_value_set_id       := NULL;
14849 l_adr_value_type_code         := NULL;
14850 l_adr_value_combination_id    := NULL;
14851 l_adr_value_segment_code      := NULL;
14852 
14853 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14854 l_bflow_class_code           := '';    -- 4219869 Business Flow
14855 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14856 l_budgetary_control_flag     := 'N';
14857 
14858 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14859 l_bflow_applied_to_amt       := NULL; -- 5132302
14860 l_entered_amt_idx            := NULL;          -- 4262811
14861 l_accted_amt_idx             := NULL;          -- 4262811
14862 l_acc_rev_flag               := NULL;          -- 4262811
14863 l_accrual_line_num           := NULL;          -- 4262811
14864 l_tmp_amt                    := NULL;          -- 4262811
14865 --
14866  
14867 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14868     l_balance_type_code <> 'B' THEN
14869 IF NVL(p_source_6,'
14870 ') =  'LEASE_DEBIT'
14871  THEN 
14872 
14873    --
14874    XLA_AE_LINES_PKG.SetNewLine;
14875 
14876    p_balance_type_code          := l_balance_type_code;
14877    -- set the flag so later we will know whether the gain loss line needs to be created
14878    
14879    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14880      p_actual_flag :='A';
14881    END IF;
14882 
14883    --
14884    -- bulk performance
14885    --
14886    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14887                                       p_header_num   => 0); -- 4262811
14888    --
14889    -- set accounting line options
14890    --
14891    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14892            p_natural_side_code          => 'D'
14893          , p_gain_or_loss_flag          => 'N'
14894          , p_gl_transfer_mode_code      => 'S'
14895          , p_acct_entry_type_code       => 'A'
14896          , p_switch_side_flag           => 'Y'
14897          , p_merge_duplicate_code       => 'N'
14898          );
14899    --
14900    l_acc_rev_natural_side_code := 'C';  -- 4262811
14901    -- 
14902    --
14903    -- set accounting line type info
14904    --
14905    xla_ae_lines_pkg.SetAcctLineType
14906       (p_component_type             => l_component_type
14907       ,p_event_type_code            => l_event_type_code
14908       ,p_line_definition_owner_code => l_line_definition_owner_code
14909       ,p_line_definition_code       => l_line_definition_code
14910       ,p_accounting_line_code       => l_component_code
14911       ,p_accounting_line_type_code  => l_component_type_code
14912       ,p_accounting_line_appl_id    => l_component_appl_id
14913       ,p_amb_context_code           => l_amb_context_code
14914       ,p_entity_code                => l_entity_code
14915       ,p_event_class_code           => l_event_class_code);
14916    --
14917    -- set accounting class
14918    --
14919    xla_ae_lines_pkg.SetAcctClass(
14920            p_accounting_class_code  => 'UPFRONT_TAX'
14921          , p_ae_header_id           => l_ae_header_id
14922          );
14923 
14924    --
14925    -- set rounding class
14926    --
14927    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14928                       'UPFRONT_TAX';
14929 
14930    --
14931    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14932    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14933    --
14937 
14934    -- bulk performance
14935    --
14936    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14938    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14939       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14940 
14941    -- 4955764
14942    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14944 
14945    -- 4458381 Public Sector Enh
14946    
14947    --
14948    -- set accounting attributes for the line type
14949    --
14950    l_entered_amt_idx := 3;
14951    l_accted_amt_idx  := NULL;
14952    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14953    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14954    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_7);
14955    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14956    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
14957    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14958    l_rec_acct_attrs.array_num_value(3)  := p_source_9;
14959    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14960    l_rec_acct_attrs.array_char_value(4)  := p_source_10;
14961    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14962    l_rec_acct_attrs.array_date_value(5)  := p_source_11;
14963    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14964    l_rec_acct_attrs.array_num_value(6)  := p_source_12;
14965    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14966    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
14967 
14968    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14969    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14970 
14971    ---------------------------------------------------------------------------------------------------------------
14972    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14973    ---------------------------------------------------------------------------------------------------------------
14974    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14975 
14976    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14977    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14978 
14979    IF xla_accounting_cache_pkg.GetValueChar
14980          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14981          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14982    AND l_bflow_method_code = 'PRIOR_ENTRY'
14983 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14984    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14985          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14986        )
14987    THEN
14988          xla_ae_lines_pkg.BflowUpgEntry
14989            (p_business_method_code    => l_bflow_method_code
14990            ,p_business_class_code     => l_bflow_class_code
14991            ,p_balance_type            => l_balance_type_code);
14992    ELSE
14993       NULL;
14994 -- No business flow processing for business flow method of NONE.
14995    END IF;
14996 
14997    --
14998    -- call analytical criteria
14999    --
15000    
15001    --
15002    -- call description
15003    --
15004    
15005 xla_ae_lines_pkg.SetLineDescription(
15006    p_ae_header_id => l_ae_header_id
15007   ,p_description  => Description_1 (
15008      p_application_id         => p_application_id
15009    , p_ae_header_id           => l_ae_header_id 
15010 , p_source_1 => p_source_1
15011 , p_source_2 => p_source_2
15012    )
15013 );
15014 
15015 
15016    --
15017    -- call ADRs
15018    -- Bug 4922099
15019    --
15020    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15021         (NVL(l_actual_upg_option, 'N') = 'O') OR
15022         (NVL(l_enc_upg_option, 'N') = 'O')
15023       )
15024    THEN
15025    NULL;
15026    --
15027    --
15028    
15029   l_ccid := AcctDerRule_3(
15030            p_application_id           => p_application_id
15031          , p_ae_header_id             => l_ae_header_id 
15032 , p_source_5 => p_source_5
15033          , x_transaction_coa_id       => l_adr_transaction_coa_id
15034          , x_accounting_coa_id        => l_adr_accounting_coa_id
15035          , x_value_type_code          => l_adr_value_type_code
15036          , p_side                     => 'NA'
15037    );
15038 
15039    xla_ae_lines_pkg.set_ccid(
15040     p_code_combination_id          => l_ccid
15041   , p_value_type_code              => l_adr_value_type_code
15042   , p_transaction_coa_id           => l_adr_transaction_coa_id
15043   , p_accounting_coa_id            => l_adr_accounting_coa_id
15044   , p_adr_code                     => 'OKL_DEFAULT_ACCOUNT'
15045   , p_adr_type_code                => 'S'
15046   , p_component_type               => l_component_type
15047   , p_component_code               => l_component_code
15048   , p_component_type_code          => l_component_type_code
15049   , p_component_appl_id            => l_component_appl_id
15050   , p_amb_context_code             => l_amb_context_code
15051   , p_side                         => 'NA'
15052   );
15053 
15054 
15055    --
15056    --
15057    END IF;
15058    --
15059    -- Bug 4922099
15060    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15061           (NVL(l_enc_upg_option, 'N') = 'O')
15062         ) AND
15063         (l_bflow_method_code = 'PRIOR_ENTRY')
15064       )
15065    THEN
15066       IF
15070       THEN
15067       --
15068       1 = 2
15069       --
15071       xla_accounting_err_pkg.build_message
15072                                     (p_appli_s_name            => 'XLA'
15073                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15074                                     ,p_token_1                 => 'LINE_NUMBER'
15075                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15076                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15077                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15078                                                                              l_component_type
15079                                                                             ,l_component_code
15080                                                                             ,l_component_type_code
15081                                                                             ,l_component_appl_id
15082                                                                             ,l_amb_context_code
15083                                                                             ,l_entity_code
15084                                                                             ,l_event_class_code
15085                                                                            )
15086                                     ,p_token_3                 => 'OWNER'
15087                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15088                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15089                                                                           ,p_lookup_code    => l_component_type_code
15090                                                                          )
15091                                     ,p_token_4                 => 'PRODUCT_NAME'
15092                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15093                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15094                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15095                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15096                                     ,p_ae_header_id            =>  NULL
15097                                        );
15098 
15099         IF (C_LEVEL_ERROR>= g_log_level) THEN
15100                  trace
15101                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15102                       ,p_level    => C_LEVEL_ERROR
15103                       ,p_module   => l_log_module);
15104         END IF;
15105       END IF;
15106    END IF;
15107    --
15108    --
15109    ------------------------------------------------------------------------------------------------
15110    -- 4219869 Business Flow
15111    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15112    -- Prior Entry.  Currently, the following code is always generated.
15113    ------------------------------------------------------------------------------------------------
15114    XLA_AE_LINES_PKG.ValidateCurrentLine;
15115 
15116    ------------------------------------------------------------------------------------
15117    -- 4219869 Business Flow
15118    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15119    ------------------------------------------------------------------------------------
15120    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15121 
15122    ----------------------------------------------------------------------------------
15123    -- 4219869 Business Flow
15124    -- Update journal entry status -- Need to generate this within IF <condition>
15125    ----------------------------------------------------------------------------------
15126    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15127          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15128          ,p_balance_type_code => l_balance_type_code
15129          );
15130 
15131    -------------------------------------------------------------------------------------------
15132    -- 4262811 - Generate the Accrual Reversal lines
15133    -------------------------------------------------------------------------------------------
15134    BEGIN
15135       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15136                               (g_array_event(p_event_id).array_value_num('header_index'));
15137       IF l_acc_rev_flag IS NULL THEN
15138          l_acc_rev_flag := 'N';
15139       END IF;
15140    EXCEPTION
15141       WHEN OTHERS THEN
15142          l_acc_rev_flag := 'N';
15143    END;
15144    --
15145    IF (l_acc_rev_flag = 'Y') THEN
15146 
15147        -- 4645092  ------------------------------------------------------------------------------
15148        -- To allow MPA report to determine if it should generate report process
15149        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15150        ------------------------------------------------------------------------------------------
15151 
15152        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15153        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15154 
15155        --
15156        -- Update the line information that should be overwritten
15157        --
15158        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15159                                          p_header_num   => 1);
15160        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15161 
15162        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15163 
15164        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15168       --
15165           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15166        END IF;
15167 
15169       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15170       --
15171       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15172           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15173       ELSE
15174           ---------------------------------------------------------------------------------------------------
15175           -- 4262811a Switch Sign
15176           ---------------------------------------------------------------------------------------------------
15177           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15178           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15179                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15180           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15181                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15182           -- 5132302
15183           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15184                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15185 
15186       END IF;
15187 
15188       -- 4955764
15189       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15191 
15192 
15193       XLA_AE_LINES_PKG.ValidateCurrentLine;
15194       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15195 
15196       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15197                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15198                ,p_balance_type_code => l_balance_type_code);
15199 
15200    END IF;
15201 
15202    -----------------------------------------------------------------------------------------
15203    -- 4262811 Multiperiod Accounting
15204    -----------------------------------------------------------------------------------------
15205      -- No MPA option is assigned.
15206 
15207 
15208 END IF;
15209 END IF;
15210 --
15211 
15212 --
15213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15214    trace
15215       (p_msg      => 'END of AcctLineType_31'
15216       ,p_level    => C_LEVEL_PROCEDURE
15217       ,p_module   => l_log_module);
15218 END IF;
15219 --
15220 EXCEPTION
15221   WHEN xla_exceptions_pkg.application_exception THEN
15222       RAISE;
15223   WHEN OTHERS THEN
15224        xla_exceptions_pkg.raise_message
15225            (p_location => 'XLA_00540_AAD_S_000014_PKG.AcctLineType_31');
15226 END AcctLineType_31;
15227 --
15228 
15229 ---------------------------------------
15230 --
15231 -- PRIVATE PROCEDURE
15232 --         insert_sources_32
15233 --
15234 ----------------------------------------
15235 --
15236 PROCEDURE insert_sources_32(
15237                                 p_target_ledger_id       IN NUMBER
15238                               , p_language               IN VARCHAR2
15239                               , p_sla_ledger_id          IN NUMBER
15240                               , p_pad_start_date         IN DATE
15241                               , p_pad_end_date           IN DATE
15242                          )
15243 IS
15244 
15245 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_ALL';
15246 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ACCRUAL';
15247 p_apps_owner                   VARCHAR2(30);
15248 l_log_module                   VARCHAR2(240);
15249 BEGIN
15250 IF g_log_enabled THEN
15251       l_log_module := C_DEFAULT_MODULE||'.insert_sources_32';
15252 END IF;
15253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15254 
15255       trace
15256          (p_msg      => 'BEGIN of insert_sources_32'
15257          ,p_level    => C_LEVEL_PROCEDURE
15258          ,p_module   => l_log_module);
15259 
15260 END IF;
15261 
15262 -- select APPS owner
15263 SELECT oracle_username
15264   INTO p_apps_owner
15265   FROM fnd_oracle_userid
15266  WHERE read_only_flag = 'U'
15267 ;
15268 
15269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15270       trace
15271          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
15272                         ' - p_language = '||p_language||
15273                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
15274                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
15275                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
15276                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
15277          ,p_level    => C_LEVEL_STATEMENT
15278          ,p_module   => l_log_module);
15279 END IF;
15280 
15281 
15282 --
15283 INSERT INTO xla_diag_sources --hdr2
15284 (
15285         event_id
15286       , ledger_id
15287       , sla_ledger_id
15288       , description_language
15289       , object_name
15290       , object_type_code
15291       , line_number
15292       , source_application_id
15293       , source_type_code
15294       , source_code
15295       , source_value
15296       , source_meaning
15297       , created_by
15298       , creation_date
15299       , last_update_date
15300       , last_updated_by
15301       , last_update_login
15302       , program_update_date
15303       , program_application_id
15304       , program_id
15305       , request_id
15306 )
15310       , p_sla_ledger_id
15307 SELECT
15308         event_id
15309       , p_target_ledger_id
15311       , p_language
15312       , object_name
15313       , object_type_code
15314       , line_number
15315       , source_application_id
15316       , source_type_code
15317       , source_code
15318       , SUBSTR(source_value ,1,1996)
15319       , SUBSTR(source_meaning ,1,200)
15320       , xla_environment_pkg.g_Usr_Id
15321       , TRUNC(SYSDATE)
15322       , TRUNC(SYSDATE)
15323       , xla_environment_pkg.g_Usr_Id
15324       , xla_environment_pkg.g_Login_Id
15325       , TRUNC(SYSDATE)
15326       , xla_environment_pkg.g_Prog_Appl_Id
15327       , xla_environment_pkg.g_Prog_Id
15328       , xla_environment_pkg.g_Req_Id
15329   FROM (
15330        SELECT xet.event_id                  event_id
15331             , 0                          line_number
15332             , CASE r
15333                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15334                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15335                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15336                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15337                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15338                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15339                 WHEN 7 THEN 'OKL_SHR_EXTRACT_HDR_V' 
15340                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15341                 WHEN 9 THEN 'OKL_CMN_EXTRACT_HDR_V' 
15342                 
15343                ELSE null
15344               END                           object_name
15345             , CASE r
15346                 WHEN 1 THEN 'HEADER' 
15347                 WHEN 2 THEN 'HEADER' 
15348                 WHEN 3 THEN 'HEADER' 
15349                 WHEN 4 THEN 'HEADER' 
15350                 WHEN 5 THEN 'HEADER' 
15351                 WHEN 6 THEN 'HEADER' 
15352                 WHEN 7 THEN 'HEADER' 
15353                 WHEN 8 THEN 'HEADER' 
15354                 WHEN 9 THEN 'HEADER' 
15355                 
15356                 ELSE null
15357               END                           object_type_code
15358             , CASE r
15359                 WHEN 1 THEN '540' 
15360                 WHEN 2 THEN '540' 
15361                 WHEN 3 THEN '540' 
15362                 WHEN 4 THEN '540' 
15363                 WHEN 5 THEN '540' 
15364                 WHEN 6 THEN '540' 
15365                 WHEN 7 THEN '540' 
15366                 WHEN 8 THEN '540' 
15367                 WHEN 9 THEN '540' 
15368                 
15369                 ELSE null
15370               END                           source_application_id
15371             , 'S'             source_type_code
15372             , CASE r
15373                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
15374                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
15375                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
15376                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
15377                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
15378                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
15379                 WHEN 7 THEN 'TCN_ACCRUAL_REVERSAL_DATE' 
15380                 WHEN 8 THEN 'GL_DATE' 
15381                 WHEN 9 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
15382                 
15383                 ELSE null
15384               END                           source_code
15385             , CASE r
15386                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
15387                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
15388                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
15389                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
15390                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
15391                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
15392                 WHEN 7 THEN TO_CHAR(h3.TCN_ACCRUAL_REVERSAL_DATE)
15393                 WHEN 8 THEN TO_CHAR(h1.GL_DATE)
15394                 WHEN 9 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
15395                 
15396                 ELSE null
15397               END                           source_value
15398             , null              source_meaning
15399          FROM xla_events_gt     xet  
15400       , OKL_CMN_EXTRACT_HDR_V  h1
15401       , OKL_SHR_EXTRACT_HDR_V  h3
15402              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
15403          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15404            AND xet.event_class_code = C_EVENT_CLASS_CODE
15405               AND h1.event_id = xet.event_id
15406  AND h3.tcn_id  (+) = h1.tcn_id
15407 )
15408 ;
15409 --
15410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15411 
15412       trace
15413          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
15414          ,p_level    => C_LEVEL_STATEMENT
15415          ,p_module   => l_log_module);
15416 
15417 END IF;
15418 --
15419 
15420 
15421 
15422 --
15423 INSERT INTO xla_diag_sources  --line2
15424 (
15425         event_id
15426       , ledger_id
15427       , sla_ledger_id
15428       , description_language
15429       , object_name
15430       , object_type_code
15431       , line_number
15432       , source_application_id
15433       , source_type_code
15434       , source_code
15435       , source_value
15436       , source_meaning
15437       , created_by
15438       , creation_date
15439       , last_update_date
15440       , last_updated_by
15441       , last_update_login
15442       , program_update_date
15443       , program_application_id
15444       , program_id
15445       , request_id
15446 )
15447 SELECT  event_id
15448       , p_target_ledger_id
15449       , p_sla_ledger_id
15450       , p_language
15451       , object_name
15452       , object_type_code
15453       , line_number
15457       , SUBSTR(source_value,1,1996)
15454       , source_application_id
15455       , source_type_code
15456       , source_code
15458       , SUBSTR(source_meaning ,1,200)
15459       , xla_environment_pkg.g_Usr_Id
15460       , TRUNC(SYSDATE)
15461       , TRUNC(SYSDATE)
15462       , xla_environment_pkg.g_Usr_Id
15463       , xla_environment_pkg.g_Login_Id
15464       , TRUNC(SYSDATE)
15465       , xla_environment_pkg.g_Prog_Appl_Id
15466       , xla_environment_pkg.g_Prog_Id
15467       , xla_environment_pkg.g_Req_Id
15468   FROM (
15469        SELECT xet.event_id                  event_id
15470             , l2.line_number                 line_number
15471             , CASE r
15472                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
15473                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
15474                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
15475                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
15476                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
15477                 
15478                ELSE null
15479               END                           object_name
15480             , CASE r
15481                 WHEN 1 THEN 'LINE' 
15482                 WHEN 2 THEN 'LINE' 
15483                 WHEN 3 THEN 'LINE' 
15484                 WHEN 4 THEN 'LINE' 
15485                 WHEN 5 THEN 'LINE' 
15486                 
15487                 ELSE null
15488               END                           object_type_code
15489             , CASE r
15490                 WHEN 1 THEN '540' 
15491                 WHEN 2 THEN '540' 
15492                 WHEN 3 THEN '540' 
15493                 WHEN 4 THEN '540' 
15494                 WHEN 5 THEN '540' 
15495                 
15496                 ELSE null
15497               END                           source_application_id
15498             , 'S'             source_type_code
15499             , CASE r
15500                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
15501                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
15502                 WHEN 3 THEN 'DIST_ID' 
15503                 WHEN 4 THEN 'DIST_TYPE' 
15504                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
15505                 
15506                 ELSE null
15507               END                           source_code
15508             , CASE r
15509                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
15510                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
15511                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
15512                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
15513                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
15514                 
15515                 ELSE null
15516               END                           source_value
15517             , CASE r
15518                 WHEN 2 THEN fvl6.meaning
15519                 
15520                 ELSE null
15521               END               source_meaning
15522          FROM  xla_events_gt     xet  
15523         , OKL_CMN_EXTRACT_LINE_V  l2
15524   , fnd_lookup_values    fvl6
15525             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
15526         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15527           AND xet.event_class_code = C_EVENT_CLASS_CODE
15528             AND l2.event_id          = xet.event_id
15529    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
15530   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
15531   AND fvl6.view_application_id(+) = 0
15532   AND fvl6.language(+)            = USERENV('LANG')
15533   
15534 )
15535 ;
15536 --
15537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15538 
15539       trace
15540          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
15541          ,p_level    => C_LEVEL_STATEMENT
15542          ,p_module   => l_log_module);
15543 
15544 END IF;
15545 
15546 
15547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15548       trace
15549          (p_msg      => 'END of insert_sources_32'
15550          ,p_level    => C_LEVEL_PROCEDURE
15551          ,p_module   => l_log_module);
15552 END IF;
15553 EXCEPTION
15554   WHEN xla_exceptions_pkg.application_exception THEN
15555       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15556             trace
15557                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15558                ,p_level    => C_LEVEL_EXCEPTION
15559                ,p_module   => l_log_module);
15560       END IF;
15561       RAISE;
15562   WHEN OTHERS THEN
15563       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15564             trace
15565                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15566                ,p_level    => C_LEVEL_EXCEPTION
15567                ,p_module   => l_log_module);
15568        END IF;
15569        xla_exceptions_pkg.raise_message
15570            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_32');
15571 END insert_sources_32;
15572 --
15573 
15574 ---------------------------------------
15575 --
15576 -- PRIVATE FUNCTION
15577 --         EventClass_32
15578 --
15579 ----------------------------------------
15580 --
15581 FUNCTION EventClass_32
15582        (p_application_id         IN NUMBER
15583        ,p_base_ledger_id         IN NUMBER
15584        ,p_target_ledger_id       IN NUMBER
15585        ,p_language               IN VARCHAR2
15586        ,p_currency_code          IN VARCHAR2
15587        ,p_sla_ledger_id          IN NUMBER
15588        ,p_pad_start_date         IN DATE
15589        ,p_pad_end_date           IN DATE
15590        ,p_primary_ledger_id      IN NUMBER)
15591 RETURN BOOLEAN IS
15592 --
15593 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_ALL';
15594 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ACCRUAL';
15595 
15599 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15596 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
15597 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
15598 --
15600 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15601 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15602 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15603 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15604 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15605 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15606 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15607 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15608 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15609 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15610 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15611 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15612 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15613 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15614 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15615 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15616 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15617 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15618 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15619 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15620 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15621 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
15622 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15623 
15624 l_event_id                             NUMBER;
15625 l_previous_event_id                    NUMBER;
15626 l_first_event_id                       NUMBER;
15627 l_last_event_id                        NUMBER;
15628 
15629 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
15630 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
15631 --
15632 --
15633 l_result                    BOOLEAN := TRUE;
15634 l_rows                      NUMBER  := 1000;
15635 l_event_type_name           VARCHAR2(80) := 'All';
15636 l_event_class_name          VARCHAR2(80) := 'Accrual';
15637 l_description               VARCHAR2(4000);
15638 l_transaction_reversal      NUMBER;
15639 l_ae_header_id              NUMBER;
15640 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
15641 l_log_module                VARCHAR2(240);
15642 --
15643 l_acct_reversal_source      VARCHAR2(30);
15644 l_trx_reversal_source       VARCHAR2(30);
15645 
15646 l_continue_with_lines       BOOLEAN := TRUE;
15647 --
15648 l_acc_rev_gl_date_source    DATE;                      -- 4262811
15649 --
15650 type t_array_event_id is table of number index by binary_integer;
15651 
15652 l_rec_array_event                    t_rec_array_event;
15653 l_null_rec_array_event               t_rec_array_event;
15654 l_array_ae_header_id                 xla_number_array_type;
15655 l_actual_flag                        VARCHAR2(1) := NULL;
15656 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
15657 l_balance_type_code                  VARCHAR2(1) :=NULL;
15658 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
15659 
15660 --
15661 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
15662 --
15663 
15664 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
15665 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
15666 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
15667 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
15668 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
15669 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
15670 TYPE t_array_source_14 IS TABLE OF OKL_SHR_EXTRACT_HDR_V.TCN_ACCRUAL_REVERSAL_DATE%TYPE INDEX BY BINARY_INTEGER;
15671 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
15672 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
15673 
15674 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
15675 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
15676 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
15677 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
15678 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
15679 
15680 l_array_source_1              t_array_source_1;
15681 l_array_source_2              t_array_source_2;
15682 l_array_source_10              t_array_source_10;
15683 l_array_source_11              t_array_source_11;
15684 l_array_source_12              t_array_source_12;
15685 l_array_source_13              t_array_source_13;
15686 l_array_source_14              t_array_source_14;
15687 l_array_source_15              t_array_source_15;
15688 l_array_source_16              t_array_source_16;
15689 
15690 l_array_source_5      t_array_source_5;
15691 l_array_source_6      t_array_source_6;
15692 l_array_source_6_meaning      t_array_lookup_meaning;
15693 l_array_source_7      t_array_source_7;
15694 l_array_source_8      t_array_source_8;
15698 CURSOR header_cur
15695 l_array_source_9      t_array_source_9;
15696 
15697 --
15699 IS
15700 SELECT /*+ leading(xet) cardinality(xet,1) */
15701 -- Event Class Code: ACCRUAL
15702     xet.entity_id
15703    ,xet.legal_entity_id
15704    ,xet.entity_code
15705    ,xet.transaction_number
15706    ,xet.event_id
15707    ,xet.event_class_code
15708    ,xet.event_type_code
15709    ,xet.event_number
15710    ,xet.event_date
15711    ,xet.transaction_date
15712    ,xet.reference_num_1
15713    ,xet.reference_num_2
15714    ,xet.reference_num_3
15715    ,xet.reference_num_4
15716    ,xet.reference_char_1
15717    ,xet.reference_char_2
15718    ,xet.reference_char_3
15719    ,xet.reference_char_4
15720    ,xet.reference_date_1
15721    ,xet.reference_date_2
15722    ,xet.reference_date_3
15723    ,xet.reference_date_4
15724    ,xet.event_created_by
15725    ,xet.budgetary_control_flag 
15726   , h1.TEH_CONTRACT_NUMBER    source_1
15727   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
15728   , h1.TCN_CURRENCY_CODE    source_10
15729   , h1.TCN_CURR_CONVERSION_DATE    source_11
15730   , h1.TCN_CURR_CONVERSION_RATE    source_12
15731   , h1.TCN_CURR_CONVERSION_TYPE    source_13
15732   , h3.TCN_ACCRUAL_REVERSAL_DATE    source_14
15733   , h1.GL_DATE    source_15
15734   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
15735   FROM xla_events_gt     xet 
15736   , OKL_CMN_EXTRACT_HDR_V  h1
15737   , OKL_SHR_EXTRACT_HDR_V  h3
15738  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
15739    and xet.event_class_code = C_EVENT_CLASS_CODE
15740    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
15741  AND h3.TCN_ID  (+) = h1.TCN_ID
15742  ORDER BY event_id
15743 ;
15744 
15745 
15746 --
15747 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
15748 IS
15749 SELECT  /*+ leading(xet) cardinality(xet,1) */
15750 -- Event Class Code: ACCRUAL
15751     xet.entity_id
15752    ,xet.legal_entity_id
15753    ,xet.entity_code
15754    ,xet.transaction_number
15755    ,xet.event_id
15756    ,xet.event_class_code
15757    ,xet.event_type_code
15758    ,xet.event_number
15759    ,xet.event_date
15760    ,xet.transaction_date
15761    ,xet.reference_num_1
15762    ,xet.reference_num_2
15763    ,xet.reference_num_3
15764    ,xet.reference_num_4
15765    ,xet.reference_char_1
15766    ,xet.reference_char_2
15767    ,xet.reference_char_3
15768    ,xet.reference_char_4
15769    ,xet.reference_date_1
15770    ,xet.reference_date_2
15771    ,xet.reference_date_3
15772    ,xet.reference_date_4
15773    ,xet.event_created_by
15774    ,xet.budgetary_control_flag
15775  , l2.LINE_NUMBER  
15776   , l2.DIST_CODE_COMBINATION_ID    source_5
15777   , l2.DIST_AE_LINE_TYPE_CODE    source_6
15778   , fvl6.meaning   source_6_meaning
15779   , l2.DIST_ID    source_7
15780   , l2.DIST_TYPE    source_8
15781   , l2.DIST_ENTERED_AMOUNT    source_9
15782   FROM xla_events_gt     xet 
15783   , OKL_CMN_EXTRACT_LINE_V  l2
15784   , fnd_lookup_values    fvl6
15785  WHERE xet.event_id between x_first_event_id and x_last_event_id
15786    and xet.event_date between p_pad_start_date and p_pad_end_date
15787    and xet.event_class_code = C_EVENT_CLASS_CODE
15788    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
15789    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
15790   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
15791   AND fvl6.view_application_id(+) = 0
15792   AND fvl6.language(+)            = USERENV('LANG')
15793   ;
15794 
15795 --
15796 BEGIN
15797 IF g_log_enabled THEN
15798    l_log_module := C_DEFAULT_MODULE||'.EventClass_32';
15799 END IF;
15800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15801    trace
15802       (p_msg      => 'BEGIN of EventClass_32'
15803       ,p_level    => C_LEVEL_PROCEDURE
15804       ,p_module   => l_log_module);
15805 END IF;
15806 
15807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15808    trace
15809       (p_msg      => 'p_application_id = '||p_application_id||
15810                      ' - p_base_ledger_id = '||p_base_ledger_id||
15811                      ' - p_target_ledger_id  = '||p_target_ledger_id||
15812                      ' - p_language = '||p_language||
15813                      ' - p_currency_code = '||p_currency_code||
15814                      ' - p_sla_ledger_id = '||p_sla_ledger_id
15815       ,p_level    => C_LEVEL_STATEMENT
15816       ,p_module   => l_log_module);
15817 END IF;
15818 --
15819 -- initialze arrays
15820 --
15821 g_array_event.DELETE;
15822 l_rec_array_event := l_null_rec_array_event;
15823 --
15824 --------------------------------------
15825 -- 4262811 Initialze MPA Line Number
15826 --------------------------------------
15827 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
15828 
15829 --
15830 
15831 --
15832 OPEN header_cur;
15833 --
15834 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15835    trace
15836    (p_msg      => 'SQL - FETCH header_cur'
15837    ,p_level    => C_LEVEL_STATEMENT
15838    ,p_module   => l_log_module);
15839 END IF;
15840 --
15841 LOOP
15842 FETCH header_cur BULK COLLECT INTO
15843         l_array_entity_id
15844       , l_array_legal_entity_id
15845       , l_array_entity_code
15846       , l_array_transaction_num
15847       , l_array_event_id
15848       , l_array_class_code
15849       , l_array_event_type
15850       , l_array_event_number
15851       , l_array_event_date
15852       , l_array_transaction_date
15853       , l_array_reference_num_1
15854       , l_array_reference_num_2
15855       , l_array_reference_num_3
15856       , l_array_reference_num_4
15860       , l_array_reference_char_4
15857       , l_array_reference_char_1
15858       , l_array_reference_char_2
15859       , l_array_reference_char_3
15861       , l_array_reference_date_1
15862       , l_array_reference_date_2
15863       , l_array_reference_date_3
15864       , l_array_reference_date_4
15865       , l_array_event_created_by
15866       , l_array_budgetary_control_flag 
15867       , l_array_source_1
15868       , l_array_source_2
15869       , l_array_source_10
15870       , l_array_source_11
15871       , l_array_source_12
15872       , l_array_source_13
15873       , l_array_source_14
15874       , l_array_source_15
15875       , l_array_source_16
15876       LIMIT l_rows;
15877 --
15878 IF (C_LEVEL_EVENT >= g_log_level) THEN
15879    trace
15880    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
15881    ,p_level    => C_LEVEL_EVENT
15882    ,p_module   => l_log_module);
15883 END IF;
15884 --
15885 EXIT WHEN l_array_entity_id.COUNT = 0;
15886 
15887 -- initialize arrays
15888 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
15889 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
15890 
15891 --
15892 -- Bug 4458708
15893 --
15894 XLA_AE_LINES_PKG.g_LineNumber := 0;
15895 
15896 
15897 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
15898 g_last_hdr_idx := l_array_event_id.LAST;
15899 --
15900 -- loop for the headers. Each iteration is for each header extract row
15901 -- fetched in header cursor
15902 --
15903 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
15904 
15905 --
15906 -- set event info as cache for other routines to refer event attributes
15907 --
15908 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
15909    (p_application_id           => p_application_id
15910    ,p_primary_ledger_id        => p_primary_ledger_id
15911    ,p_base_ledger_id           => p_base_ledger_id
15912    ,p_target_ledger_id         => p_target_ledger_id
15913    ,p_entity_id                => l_array_entity_id(hdr_idx)
15914    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
15915    ,p_entity_code              => l_array_entity_code(hdr_idx)
15916    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
15917    ,p_event_id                 => l_array_event_id(hdr_idx)
15918    ,p_event_class_code         => l_array_class_code(hdr_idx)
15919    ,p_event_type_code          => l_array_event_type(hdr_idx)
15920    ,p_event_number             => l_array_event_number(hdr_idx)
15921    ,p_event_date               => l_array_event_date(hdr_idx)
15922    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
15923    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
15924    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
15925    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
15926    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
15927    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
15928    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
15929    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
15930    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
15931    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
15932    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
15933    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
15934    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
15935    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
15936    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
15937 
15938 --
15939 -- set the status of entry to C_VALID (0)
15940 --
15941 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
15942 
15943 --
15944 -- initialize a row for ae header
15945 --
15946 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
15947 
15948 l_event_id := l_array_event_id(hdr_idx);
15949 
15950 --
15951 -- storing the hdr_idx for event. May be used by line cursor.
15952 --
15953 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
15954 
15955 --
15956 -- store sources from header extract. This can be improved to
15957 -- store only those sources from header extract that may be used in lines
15958 --
15959 
15960 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
15961 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
15962 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
15963 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
15964 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
15965 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
15966 g_array_event(l_event_id).array_value_date('source_14') := l_array_source_14(hdr_idx);
15967 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
15968 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
15969 
15970 --
15971 -- initilaize the status of ae headers for diffrent balance types
15972 -- the status is initialised to C_NOT_CREATED (2)
15973 --
15974 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15975 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15976 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15977 
15978 --
15979 -- call api to validate and store accounting attributes for header
15980 --
15981 
15982 ------------------------------------------------------------
15983 -- Accrual Reversal : to get date for Standard Source (NONE)
15987      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
15984 ------------------------------------------------------------
15985 l_acc_rev_gl_date_source := g_array_event(l_event_id).array_value_date('source_14');
15986 
15988       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
15989      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
15990       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
15991 
15992 
15993 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
15994 
15995 XLA_AE_HEADER_PKG.SetJeCategoryName;
15996 
15997 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
15998 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
15999 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
16000 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
16001 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
16002 
16003 
16004 --
16005 xla_ae_header_pkg.SetHdrDescription(
16006    p_description => Description_1 (
16007    p_application_id => p_application_id 
16008  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16009  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16010    )
16011 );
16012 --
16013 
16014 -- No header level analytical criteria
16015 
16016 --
16017 --accounting attribute enhancement, bug 3612931
16018 --
16019 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
16020 
16021 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
16022    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
16023 
16024    xla_accounting_err_pkg.build_message
16025       (p_appli_s_name            => 'XLA'
16026       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
16027       ,p_token_1                 => 'ACCT_ATTR_NAME'
16028       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
16029       ,p_token_2                 => 'PRODUCT_NAME'
16030       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
16031       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16032       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
16033       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
16034 
16035 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
16036    --
16037    -- following sets the accounting attributes needed to reverse
16038    -- accounting for a distributeion
16039    --
16040    xla_ae_lines_pkg.SetTrxReversalAttrs
16041       (p_event_id              => l_event_id
16042       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
16043       ,p_trx_reversal_source   => l_trx_reversal_source);
16044 
16045 END IF;
16046 
16047 
16048 ----------------------------------------------------------------
16049 -- 4262811 -  update the header statuses to invalid in need be
16050 ----------------------------------------------------------------
16051 --
16052 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
16053 
16054 
16055 --
16056 -- Generate the accrual reversal headers
16057 --
16058 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
16059 
16060 IF l_acc_rev_gl_date_source IS NOT NULL THEN 
16061 
16062 -- indicate that the accrual entry has a reversal entry
16063 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
16064 
16065 --
16066 -- initialize a row for ae header
16067 --
16068 g_last_hdr_idx := g_last_hdr_idx + 1;
16069 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
16070                                   p_hdr_idx        => g_last_hdr_idx) ;
16071 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
16072 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
16073                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
16074 
16075 --
16076 -- record the index for the reversal entry, it will be used by the journal
16077 -- line creation
16078 --
16079 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
16080 
16081 --
16082 -- Populate the GL Date and override the GL date defined in the
16083 -- SetHdrAcctAttrs if necessary
16084 --
16085 
16086               ---------------------- NONE - Standard Source  ----------------------
16087               IF l_acc_rev_gl_date_source < XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx) THEN
16088                  xla_accounting_err_pkg.build_message
16089                            (p_appli_s_name            => 'XLA'
16090                            ,p_msg_name                => 'XLA_MA_INVALID_GL_DATE'
16091                            ,p_token_1                 => 'ACCRUAL_REVERSAL_DATE'
16092                            ,p_value_1                 => l_acc_rev_gl_date_source
16093                            ,p_token_2                 => 'ACCRUAL_GL_DATE'    -- 4262811
16094                            ,p_value_2                 => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
16095                            ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16096                            ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
16097                            ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
16098                           );
16099               END IF;
16100               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'NONE';
16104 --
16101               XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_last_hdr_idx) := trunc(l_acc_rev_gl_date_source);
16102               
16103 
16105 -- Update the header status
16106 --
16107 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
16108 
16109 END IF;
16110 
16111 END IF;
16112 
16113 
16114 ----------------------------------------------------------------
16115 
16116 --
16117 -- this ends the header loop iteration for one bulk fetch
16118 --
16119 END LOOP;
16120 
16121 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
16122 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
16123 
16124 --
16125 -- insert dummy rows into lines gt table that were created due to
16126 -- transaction reversals
16127 --
16128 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
16129    l_result := XLA_AE_LINES_PKG.InsertLines;
16130 END IF;
16131 
16132 --
16133 -- reset the temp_line_num for each set of events fetched from header
16134 -- cursor rather than doing it for each new event in line cursor
16135 -- Bug 3939231
16136 --
16137 xla_ae_lines_pkg.g_temp_line_num := 0;
16138 
16139 
16140 
16141 --
16142 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
16143 --
16144 --
16145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16146 
16147       trace
16148          (p_msg      => 'SQL - FETCH line_cur'
16149          ,p_level    => C_LEVEL_STATEMENT
16150          ,p_module   => l_log_module);
16151 
16152 END IF;
16153 --
16154 --
16155 LOOP
16156   --
16157   FETCH line_cur BULK COLLECT INTO
16158         l_array_entity_id
16159       , l_array_legal_entity_id
16160       , l_array_entity_code
16161       , l_array_transaction_num
16162       , l_array_event_id
16163       , l_array_class_code
16164       , l_array_event_type
16165       , l_array_event_number
16166       , l_array_event_date
16167       , l_array_transaction_date
16168       , l_array_reference_num_1
16169       , l_array_reference_num_2
16170       , l_array_reference_num_3
16171       , l_array_reference_num_4
16172       , l_array_reference_char_1
16173       , l_array_reference_char_2
16174       , l_array_reference_char_3
16175       , l_array_reference_char_4
16176       , l_array_reference_date_1
16177       , l_array_reference_date_2
16178       , l_array_reference_date_3
16179       , l_array_reference_date_4
16180       , l_array_event_created_by
16181       , l_array_budgetary_control_flag
16182       , l_array_extract_line_num 
16183       , l_array_source_5
16184       , l_array_source_6
16185       , l_array_source_6_meaning
16186       , l_array_source_7
16187       , l_array_source_8
16188       , l_array_source_9
16189       LIMIT l_rows;
16190 
16191   --
16192   IF (C_LEVEL_EVENT >= g_log_level) THEN
16193             trace
16194                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
16195                ,p_level    => C_LEVEL_EVENT
16196                ,p_module   => l_log_module);
16197   END IF;
16198   --
16199   EXIT WHEN l_array_entity_id.count = 0;
16200 
16201   XLA_AE_LINES_PKG.g_rec_lines := null;
16202 
16203 --
16204 -- Bug 4458708
16205 --
16206 XLA_AE_LINES_PKG.g_LineNumber := 0;
16207 --
16208 --
16209 
16210 FOR Idx IN 1..l_array_event_id.count LOOP
16211    --
16212    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
16213    --
16214    l_event_id := l_array_event_id(idx);  -- 5648433
16215 
16216    --
16217    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16218    --
16219 
16220    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
16221              (g_array_event(l_event_id).array_value_num('header_index'))
16222          ,'N'
16223          ) <> 'Y'
16224    THEN
16225       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16226          trace
16227             (p_msg      => 'Trancaction revesal option is not Y '
16228             ,p_level    => C_LEVEL_STATEMENT
16229             ,p_module   => l_log_module);
16230       END IF;
16231 
16232 --
16233 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
16234 --
16235 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
16236 --
16237 -- set event info as cache for other routines to refer event attributes
16238 --
16239 
16240 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
16241    l_previous_event_id := l_event_id;
16242 
16243    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
16244       (p_application_id           => p_application_id
16245       ,p_primary_ledger_id        => p_primary_ledger_id
16246       ,p_base_ledger_id           => p_base_ledger_id
16247       ,p_target_ledger_id         => p_target_ledger_id
16248       ,p_entity_id                => l_array_entity_id(Idx)
16249       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
16250       ,p_entity_code              => l_array_entity_code(Idx)
16251       ,p_transaction_num          => l_array_transaction_num(Idx)
16252       ,p_event_id                 => l_array_event_id(Idx)
16253       ,p_event_class_code         => l_array_class_code(Idx)
16254       ,p_event_type_code          => l_array_event_type(Idx)
16255       ,p_event_number             => l_array_event_number(Idx)
16256       ,p_event_date               => l_array_event_date(Idx)
16257       ,p_transaction_date         => l_array_transaction_date(Idx)
16258       ,p_reference_num_1          => l_array_reference_num_1(Idx)
16259       ,p_reference_num_2          => l_array_reference_num_2(Idx)
16263       ,p_reference_char_2         => l_array_reference_char_2(Idx)
16260       ,p_reference_num_3          => l_array_reference_num_3(Idx)
16261       ,p_reference_num_4          => l_array_reference_num_4(Idx)
16262       ,p_reference_char_1         => l_array_reference_char_1(Idx)
16264       ,p_reference_char_3         => l_array_reference_char_3(Idx)
16265       ,p_reference_char_4         => l_array_reference_char_4(Idx)
16266       ,p_reference_date_1         => l_array_reference_date_1(Idx)
16267       ,p_reference_date_2         => l_array_reference_date_2(Idx)
16268       ,p_reference_date_3         => l_array_reference_date_3(Idx)
16269       ,p_reference_date_4         => l_array_reference_date_4(Idx)
16270       ,p_event_created_by         => l_array_event_created_by(Idx)
16271       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
16272        --
16273 END IF;
16274 
16275 
16276 
16277 --
16278 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
16279 
16280 l_acct_reversal_source := SUBSTR(NULL, 1,30);
16281 
16282 IF l_continue_with_lines THEN
16283    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
16284       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
16285 
16286       xla_accounting_err_pkg.build_message
16287          (p_appli_s_name            => 'XLA'
16288          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
16289          ,p_token_1                 => 'LINE_NUMBER'
16290          ,p_value_1                 => l_array_extract_line_num(Idx)
16291          ,p_token_2                 => 'PRODUCT_NAME'
16292          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
16293          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16294          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
16295          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
16296 
16297    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
16298       --
16299       -- following sets the accounting attributes needed to reverse
16300       -- accounting for a distributeion
16301       --
16302 
16303       --
16304       -- 5217187
16305       --
16306       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
16307       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
16308                                        g_array_event(l_event_id).array_value_num('header_index'));
16309       --
16310       --
16311 
16312       -- No reversal code generated
16313 
16314       xla_ae_lines_pkg.SetAcctReversalAttrs
16315          (p_event_id             => l_event_id
16316          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
16317          ,p_calculate_acctd_flag => l_calculate_acctd_flag
16318          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
16319    END IF;
16320 
16321    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
16322        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
16323 
16324 --
16325 AcctLineType_4 (
16326  p_application_id  => p_application_id
16327  ,p_event_id     => l_event_id
16328  ,p_calculate_acctd_flag => l_calculate_acctd_flag
16329  ,p_calculate_g_l_flag => l_calculate_g_l_flag
16330  ,p_actual_flag => l_actual_flag
16331  ,p_balance_type_code => l_balance_type_code
16332  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
16333  
16334  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16335  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16336  , p_source_5 => l_array_source_5(Idx)
16337  , p_source_6 => l_array_source_6(Idx)
16338  , p_source_6_meaning => l_array_source_6_meaning(Idx)
16339  , p_source_7 => l_array_source_7(Idx)
16340  , p_source_8 => l_array_source_8(Idx)
16341  , p_source_9 => l_array_source_9(Idx)
16342  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
16343  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
16344  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
16345  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
16346  );
16347 If(l_balance_type_code = 'A') THEN
16348   l_actual_gain_loss_ref := l_gain_or_loss_ref;
16349 END IF;
16350 
16351 --
16352 
16353 
16354 --
16355 AcctLineType_5 (
16356  p_application_id  => p_application_id
16357  ,p_event_id     => l_event_id
16358  ,p_calculate_acctd_flag => l_calculate_acctd_flag
16359  ,p_calculate_g_l_flag => l_calculate_g_l_flag
16360  ,p_actual_flag => l_actual_flag
16361  ,p_balance_type_code => l_balance_type_code
16362  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
16363  
16364  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
16365  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
16366  , p_source_5 => l_array_source_5(Idx)
16367  , p_source_6 => l_array_source_6(Idx)
16368  , p_source_6_meaning => l_array_source_6_meaning(Idx)
16369  , p_source_7 => l_array_source_7(Idx)
16370  , p_source_8 => l_array_source_8(Idx)
16371  , p_source_9 => l_array_source_9(Idx)
16372  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
16373  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
16374  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
16375  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
16376  );
16377 If(l_balance_type_code = 'A') THEN
16378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
16379 END IF;
16380 
16381 --
16382 
16383       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
16384       -- or secondary ledger that has different currency with primary
16385       -- or alc that is calculated by sla
16389 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
16386       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
16387             (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'))
16388 
16390 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
16391           AND (l_actual_flag = 'A')) THEN
16392         XLA_AE_LINES_PKG.CreateGainOrLossLines(
16393           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
16394          ,p_application_id   => p_application_id
16395          ,p_amb_context_code => 'DEFAULT'
16396          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
16397          ,p_event_class_code => C_EVENT_CLASS_CODE
16398          ,p_event_type_code  => C_EVENT_TYPE_CODE
16399          
16400          ,p_gain_ccid        => -1
16401          ,p_loss_ccid        => -1
16402 
16403          ,p_actual_flag      => l_actual_flag
16404          ,p_enc_flag         => null
16405          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
16406          ,p_enc_g_l_ref      => null
16407          );
16408       END IF;
16409    END IF;
16410 END IF;
16411 
16412    ELSE
16413       --
16414       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16415       --
16416       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16417          trace
16418             (p_msg      => 'Trancaction revesal option is Y'
16419             ,p_level    => C_LEVEL_STATEMENT
16420             ,p_module   => l_log_module);
16421       END IF;
16422    END IF;
16423 
16424 END LOOP;
16425 l_result := XLA_AE_LINES_PKG.InsertLines ;
16426 end loop;
16427 close line_cur;
16428 
16429 
16430 --
16431 -- insert headers into xla_ae_headers_gt table
16432 --
16433 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
16434 
16435 -- insert into errors table here.
16436 
16437 END LOOP;
16438 
16439 --
16440 -- 4865292
16441 --
16442 -- Compare g_hdr_extract_count with event count in
16443 -- CreateHeadersAndLines.
16444 --
16445 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
16446 
16447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16448    trace (p_msg     => '# rows extracted from header extract objects '
16449                     || ' (running total): '
16450                     || g_hdr_extract_count
16451          ,p_level   => C_LEVEL_STATEMENT
16452          ,p_module  => l_log_module);
16453 END IF;
16454 
16455 CLOSE header_cur;
16456 --
16457 
16458 --
16459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16460    trace
16461       (p_msg      => 'END of EventClass_32'
16462       ,p_level    => C_LEVEL_PROCEDURE
16463       ,p_module   => l_log_module);
16464 END IF;
16465 --
16466 RETURN l_result;
16467 EXCEPTION
16468 WHEN xla_exceptions_pkg.application_exception THEN
16469    
16470 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
16471 
16472    
16473 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
16474 
16475    RAISE;
16476 WHEN OTHERS THEN
16477    xla_exceptions_pkg.raise_message
16478       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_32');
16479 END EventClass_32;
16480 --
16481 
16482 ---------------------------------------
16483 --
16484 -- PRIVATE PROCEDURE
16485 --         insert_sources_33
16486 --
16487 ----------------------------------------
16488 --
16489 PROCEDURE insert_sources_33(
16490                                 p_target_ledger_id       IN NUMBER
16491                               , p_language               IN VARCHAR2
16492                               , p_sla_ledger_id          IN NUMBER
16493                               , p_pad_start_date         IN DATE
16494                               , p_pad_end_date           IN DATE
16495                          )
16496 IS
16497 
16498 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ASSET_DISPOSITION_ALL';
16499 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ASSET_DISPOSITION';
16500 p_apps_owner                   VARCHAR2(30);
16501 l_log_module                   VARCHAR2(240);
16502 BEGIN
16503 IF g_log_enabled THEN
16504       l_log_module := C_DEFAULT_MODULE||'.insert_sources_33';
16505 END IF;
16506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16507 
16508       trace
16509          (p_msg      => 'BEGIN of insert_sources_33'
16510          ,p_level    => C_LEVEL_PROCEDURE
16511          ,p_module   => l_log_module);
16512 
16513 END IF;
16514 
16515 -- select APPS owner
16516 SELECT oracle_username
16517   INTO p_apps_owner
16518   FROM fnd_oracle_userid
16519  WHERE read_only_flag = 'U'
16520 ;
16521 
16522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16523       trace
16524          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
16525                         ' - p_language = '||p_language||
16526                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
16527                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
16528                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
16529                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
16530          ,p_level    => C_LEVEL_STATEMENT
16531          ,p_module   => l_log_module);
16532 END IF;
16533 
16534 
16535 --
16536 INSERT INTO xla_diag_sources --hdr2
16537 (
16538         event_id
16539       , ledger_id
16540       , sla_ledger_id
16541       , description_language
16542       , object_name
16543       , object_type_code
16544       , line_number
16548       , source_value
16545       , source_application_id
16546       , source_type_code
16547       , source_code
16549       , source_meaning
16550       , created_by
16551       , creation_date
16552       , last_update_date
16553       , last_updated_by
16554       , last_update_login
16555       , program_update_date
16556       , program_application_id
16557       , program_id
16558       , request_id
16559 )
16560 SELECT
16561         event_id
16562       , p_target_ledger_id
16563       , p_sla_ledger_id
16564       , p_language
16565       , object_name
16566       , object_type_code
16567       , line_number
16568       , source_application_id
16569       , source_type_code
16570       , source_code
16571       , SUBSTR(source_value ,1,1996)
16572       , SUBSTR(source_meaning ,1,200)
16573       , xla_environment_pkg.g_Usr_Id
16574       , TRUNC(SYSDATE)
16575       , TRUNC(SYSDATE)
16576       , xla_environment_pkg.g_Usr_Id
16577       , xla_environment_pkg.g_Login_Id
16578       , TRUNC(SYSDATE)
16579       , xla_environment_pkg.g_Prog_Appl_Id
16580       , xla_environment_pkg.g_Prog_Id
16581       , xla_environment_pkg.g_Req_Id
16582   FROM (
16583        SELECT xet.event_id                  event_id
16584             , 0                          line_number
16585             , CASE r
16586                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16587                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16588                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16589                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16590                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16591                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16592                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16593                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
16594                 
16595                ELSE null
16596               END                           object_name
16597             , CASE r
16598                 WHEN 1 THEN 'HEADER' 
16599                 WHEN 2 THEN 'HEADER' 
16600                 WHEN 3 THEN 'HEADER' 
16601                 WHEN 4 THEN 'HEADER' 
16602                 WHEN 5 THEN 'HEADER' 
16603                 WHEN 6 THEN 'HEADER' 
16604                 WHEN 7 THEN 'HEADER' 
16605                 WHEN 8 THEN 'HEADER' 
16606                 
16607                 ELSE null
16608               END                           object_type_code
16609             , CASE r
16610                 WHEN 1 THEN '540' 
16611                 WHEN 2 THEN '540' 
16612                 WHEN 3 THEN '540' 
16613                 WHEN 4 THEN '540' 
16614                 WHEN 5 THEN '540' 
16615                 WHEN 6 THEN '540' 
16616                 WHEN 7 THEN '540' 
16617                 WHEN 8 THEN '540' 
16618                 
16619                 ELSE null
16620               END                           source_application_id
16621             , 'S'             source_type_code
16622             , CASE r
16623                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
16624                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
16625                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
16626                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
16627                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
16628                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
16629                 WHEN 7 THEN 'GL_DATE' 
16630                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
16631                 
16632                 ELSE null
16633               END                           source_code
16634             , CASE r
16635                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
16636                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
16637                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
16638                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
16639                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
16640                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
16641                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
16642                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
16643                 
16644                 ELSE null
16645               END                           source_value
16646             , null              source_meaning
16647          FROM xla_events_gt     xet  
16648       , OKL_CMN_EXTRACT_HDR_V  h1
16649              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
16650          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16651            AND xet.event_class_code = C_EVENT_CLASS_CODE
16652               AND h1.event_id = xet.event_id
16653 
16654 )
16655 ;
16656 --
16657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16658 
16659       trace
16660          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
16661          ,p_level    => C_LEVEL_STATEMENT
16662          ,p_module   => l_log_module);
16663 
16664 END IF;
16665 --
16666 
16667 
16668 
16669 --
16670 INSERT INTO xla_diag_sources  --line2
16671 (
16672         event_id
16673       , ledger_id
16674       , sla_ledger_id
16675       , description_language
16676       , object_name
16677       , object_type_code
16678       , line_number
16679       , source_application_id
16680       , source_type_code
16681       , source_code
16682       , source_value
16683       , source_meaning
16684       , created_by
16685       , creation_date
16686       , last_update_date
16687       , last_updated_by
16688       , last_update_login
16689       , program_update_date
16690       , program_application_id
16691       , program_id
16692       , request_id
16693 )
16694 SELECT  event_id
16695       , p_target_ledger_id
16699       , object_type_code
16696       , p_sla_ledger_id
16697       , p_language
16698       , object_name
16700       , line_number
16701       , source_application_id
16702       , source_type_code
16703       , source_code
16704       , SUBSTR(source_value,1,1996)
16705       , SUBSTR(source_meaning ,1,200)
16706       , xla_environment_pkg.g_Usr_Id
16707       , TRUNC(SYSDATE)
16708       , TRUNC(SYSDATE)
16709       , xla_environment_pkg.g_Usr_Id
16710       , xla_environment_pkg.g_Login_Id
16711       , TRUNC(SYSDATE)
16712       , xla_environment_pkg.g_Prog_Appl_Id
16713       , xla_environment_pkg.g_Prog_Id
16714       , xla_environment_pkg.g_Req_Id
16715   FROM (
16716        SELECT xet.event_id                  event_id
16717             , l2.line_number                 line_number
16718             , CASE r
16719                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
16720                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
16721                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
16722                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
16723                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
16724                 
16725                ELSE null
16726               END                           object_name
16727             , CASE r
16728                 WHEN 1 THEN 'LINE' 
16729                 WHEN 2 THEN 'LINE' 
16730                 WHEN 3 THEN 'LINE' 
16731                 WHEN 4 THEN 'LINE' 
16732                 WHEN 5 THEN 'LINE' 
16733                 
16734                 ELSE null
16735               END                           object_type_code
16736             , CASE r
16737                 WHEN 1 THEN '540' 
16738                 WHEN 2 THEN '540' 
16739                 WHEN 3 THEN '540' 
16740                 WHEN 4 THEN '540' 
16741                 WHEN 5 THEN '540' 
16742                 
16743                 ELSE null
16744               END                           source_application_id
16745             , 'S'             source_type_code
16746             , CASE r
16747                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
16748                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
16749                 WHEN 3 THEN 'DIST_ID' 
16750                 WHEN 4 THEN 'DIST_TYPE' 
16751                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
16752                 
16753                 ELSE null
16754               END                           source_code
16755             , CASE r
16756                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
16757                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
16758                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
16759                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
16760                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
16761                 
16762                 ELSE null
16763               END                           source_value
16764             , CASE r
16765                 WHEN 2 THEN fvl6.meaning
16766                 
16767                 ELSE null
16768               END               source_meaning
16769          FROM  xla_events_gt     xet  
16770         , OKL_CMN_EXTRACT_LINE_V  l2
16771   , fnd_lookup_values    fvl6
16772             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
16773         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16774           AND xet.event_class_code = C_EVENT_CLASS_CODE
16775             AND l2.event_id          = xet.event_id
16776    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
16777   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
16778   AND fvl6.view_application_id(+) = 0
16779   AND fvl6.language(+)            = USERENV('LANG')
16780   
16781 )
16782 ;
16783 --
16784 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16785 
16786       trace
16787          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
16788          ,p_level    => C_LEVEL_STATEMENT
16789          ,p_module   => l_log_module);
16790 
16791 END IF;
16792 
16793 
16794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16795       trace
16796          (p_msg      => 'END of insert_sources_33'
16797          ,p_level    => C_LEVEL_PROCEDURE
16798          ,p_module   => l_log_module);
16799 END IF;
16800 EXCEPTION
16801   WHEN xla_exceptions_pkg.application_exception THEN
16802       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16803             trace
16804                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16805                ,p_level    => C_LEVEL_EXCEPTION
16806                ,p_module   => l_log_module);
16807       END IF;
16808       RAISE;
16809   WHEN OTHERS THEN
16810       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16811             trace
16812                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16813                ,p_level    => C_LEVEL_EXCEPTION
16814                ,p_module   => l_log_module);
16815        END IF;
16816        xla_exceptions_pkg.raise_message
16817            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_33');
16818 END insert_sources_33;
16819 --
16820 
16821 ---------------------------------------
16822 --
16823 -- PRIVATE FUNCTION
16824 --         EventClass_33
16825 --
16826 ----------------------------------------
16827 --
16828 FUNCTION EventClass_33
16829        (p_application_id         IN NUMBER
16830        ,p_base_ledger_id         IN NUMBER
16831        ,p_target_ledger_id       IN NUMBER
16832        ,p_language               IN VARCHAR2
16833        ,p_currency_code          IN VARCHAR2
16834        ,p_sla_ledger_id          IN NUMBER
16835        ,p_pad_start_date         IN DATE
16836        ,p_pad_end_date           IN DATE
16837        ,p_primary_ledger_id      IN NUMBER)
16838 RETURN BOOLEAN IS
16839 --
16843 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
16840 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ASSET_DISPOSITION_ALL';
16841 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ASSET_DISPOSITION';
16842 
16844 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
16845 --
16846 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16847 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16848 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16849 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16850 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16851 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16852 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16853 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16854 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16855 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16856 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16857 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16858 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16859 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16860 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16861 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16862 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16863 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16864 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16865 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16866 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16867 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16868 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
16869 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16870 
16871 l_event_id                             NUMBER;
16872 l_previous_event_id                    NUMBER;
16873 l_first_event_id                       NUMBER;
16874 l_last_event_id                        NUMBER;
16875 
16876 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
16877 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
16878 --
16879 --
16880 l_result                    BOOLEAN := TRUE;
16881 l_rows                      NUMBER  := 1000;
16882 l_event_type_name           VARCHAR2(80) := 'All';
16883 l_event_class_name          VARCHAR2(80) := 'Asset Disposition';
16884 l_description               VARCHAR2(4000);
16885 l_transaction_reversal      NUMBER;
16886 l_ae_header_id              NUMBER;
16887 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
16888 l_log_module                VARCHAR2(240);
16889 --
16890 l_acct_reversal_source      VARCHAR2(30);
16891 l_trx_reversal_source       VARCHAR2(30);
16892 
16893 l_continue_with_lines       BOOLEAN := TRUE;
16894 --
16895 l_acc_rev_gl_date_source    DATE;                      -- 4262811
16896 --
16897 type t_array_event_id is table of number index by binary_integer;
16898 
16899 l_rec_array_event                    t_rec_array_event;
16900 l_null_rec_array_event               t_rec_array_event;
16901 l_array_ae_header_id                 xla_number_array_type;
16902 l_actual_flag                        VARCHAR2(1) := NULL;
16903 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
16904 l_balance_type_code                  VARCHAR2(1) :=NULL;
16905 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
16906 
16907 --
16908 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
16909 --
16910 
16911 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
16912 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
16913 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
16914 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
16915 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
16916 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
16917 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
16918 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
16919 
16920 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
16921 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
16922 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
16923 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
16924 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
16925 
16926 l_array_source_1              t_array_source_1;
16927 l_array_source_2              t_array_source_2;
16928 l_array_source_10              t_array_source_10;
16929 l_array_source_11              t_array_source_11;
16930 l_array_source_12              t_array_source_12;
16931 l_array_source_13              t_array_source_13;
16932 l_array_source_15              t_array_source_15;
16933 l_array_source_16              t_array_source_16;
16934 
16935 l_array_source_5      t_array_source_5;
16936 l_array_source_6      t_array_source_6;
16937 l_array_source_6_meaning      t_array_lookup_meaning;
16938 l_array_source_7      t_array_source_7;
16939 l_array_source_8      t_array_source_8;
16943 CURSOR header_cur
16940 l_array_source_9      t_array_source_9;
16941 
16942 --
16944 IS
16945 SELECT /*+ leading(xet) cardinality(xet,1) */
16946 -- Event Class Code: ASSET_DISPOSITION
16947     xet.entity_id
16948    ,xet.legal_entity_id
16949    ,xet.entity_code
16950    ,xet.transaction_number
16951    ,xet.event_id
16952    ,xet.event_class_code
16953    ,xet.event_type_code
16954    ,xet.event_number
16955    ,xet.event_date
16956    ,xet.transaction_date
16957    ,xet.reference_num_1
16958    ,xet.reference_num_2
16959    ,xet.reference_num_3
16960    ,xet.reference_num_4
16961    ,xet.reference_char_1
16962    ,xet.reference_char_2
16963    ,xet.reference_char_3
16964    ,xet.reference_char_4
16965    ,xet.reference_date_1
16966    ,xet.reference_date_2
16967    ,xet.reference_date_3
16968    ,xet.reference_date_4
16969    ,xet.event_created_by
16970    ,xet.budgetary_control_flag 
16971   , h1.TEH_CONTRACT_NUMBER    source_1
16972   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
16973   , h1.TCN_CURRENCY_CODE    source_10
16974   , h1.TCN_CURR_CONVERSION_DATE    source_11
16975   , h1.TCN_CURR_CONVERSION_RATE    source_12
16976   , h1.TCN_CURR_CONVERSION_TYPE    source_13
16977   , h1.GL_DATE    source_15
16978   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
16979   FROM xla_events_gt     xet 
16980   , OKL_CMN_EXTRACT_HDR_V  h1
16981  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
16982    and xet.event_class_code = C_EVENT_CLASS_CODE
16983    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
16984 
16985  ORDER BY event_id
16986 ;
16987 
16988 
16989 --
16990 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
16991 IS
16992 SELECT  /*+ leading(xet) cardinality(xet,1) */
16993 -- Event Class Code: ASSET_DISPOSITION
16994     xet.entity_id
16995    ,xet.legal_entity_id
16996    ,xet.entity_code
16997    ,xet.transaction_number
16998    ,xet.event_id
16999    ,xet.event_class_code
17000    ,xet.event_type_code
17001    ,xet.event_number
17002    ,xet.event_date
17003    ,xet.transaction_date
17004    ,xet.reference_num_1
17005    ,xet.reference_num_2
17006    ,xet.reference_num_3
17007    ,xet.reference_num_4
17008    ,xet.reference_char_1
17009    ,xet.reference_char_2
17010    ,xet.reference_char_3
17011    ,xet.reference_char_4
17012    ,xet.reference_date_1
17013    ,xet.reference_date_2
17014    ,xet.reference_date_3
17015    ,xet.reference_date_4
17016    ,xet.event_created_by
17017    ,xet.budgetary_control_flag
17018  , l2.LINE_NUMBER  
17019   , l2.DIST_CODE_COMBINATION_ID    source_5
17020   , l2.DIST_AE_LINE_TYPE_CODE    source_6
17021   , fvl6.meaning   source_6_meaning
17022   , l2.DIST_ID    source_7
17023   , l2.DIST_TYPE    source_8
17024   , l2.DIST_ENTERED_AMOUNT    source_9
17025   FROM xla_events_gt     xet 
17026   , OKL_CMN_EXTRACT_LINE_V  l2
17027   , fnd_lookup_values    fvl6
17028  WHERE xet.event_id between x_first_event_id and x_last_event_id
17029    and xet.event_date between p_pad_start_date and p_pad_end_date
17030    and xet.event_class_code = C_EVENT_CLASS_CODE
17031    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
17032    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
17033   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
17034   AND fvl6.view_application_id(+) = 0
17035   AND fvl6.language(+)            = USERENV('LANG')
17036   ;
17037 
17038 --
17039 BEGIN
17040 IF g_log_enabled THEN
17041    l_log_module := C_DEFAULT_MODULE||'.EventClass_33';
17042 END IF;
17043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17044    trace
17045       (p_msg      => 'BEGIN of EventClass_33'
17046       ,p_level    => C_LEVEL_PROCEDURE
17047       ,p_module   => l_log_module);
17048 END IF;
17049 
17050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17051    trace
17052       (p_msg      => 'p_application_id = '||p_application_id||
17053                      ' - p_base_ledger_id = '||p_base_ledger_id||
17054                      ' - p_target_ledger_id  = '||p_target_ledger_id||
17055                      ' - p_language = '||p_language||
17056                      ' - p_currency_code = '||p_currency_code||
17057                      ' - p_sla_ledger_id = '||p_sla_ledger_id
17058       ,p_level    => C_LEVEL_STATEMENT
17059       ,p_module   => l_log_module);
17060 END IF;
17061 --
17062 -- initialze arrays
17063 --
17064 g_array_event.DELETE;
17065 l_rec_array_event := l_null_rec_array_event;
17066 --
17067 --------------------------------------
17068 -- 4262811 Initialze MPA Line Number
17069 --------------------------------------
17070 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
17071 
17072 --
17073 
17074 --
17075 OPEN header_cur;
17076 --
17077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17078    trace
17079    (p_msg      => 'SQL - FETCH header_cur'
17080    ,p_level    => C_LEVEL_STATEMENT
17081    ,p_module   => l_log_module);
17082 END IF;
17083 --
17084 LOOP
17085 FETCH header_cur BULK COLLECT INTO
17086         l_array_entity_id
17087       , l_array_legal_entity_id
17088       , l_array_entity_code
17089       , l_array_transaction_num
17090       , l_array_event_id
17091       , l_array_class_code
17092       , l_array_event_type
17093       , l_array_event_number
17094       , l_array_event_date
17095       , l_array_transaction_date
17096       , l_array_reference_num_1
17097       , l_array_reference_num_2
17098       , l_array_reference_num_3
17099       , l_array_reference_num_4
17100       , l_array_reference_char_1
17101       , l_array_reference_char_2
17102       , l_array_reference_char_3
17106       , l_array_reference_date_3
17103       , l_array_reference_char_4
17104       , l_array_reference_date_1
17105       , l_array_reference_date_2
17107       , l_array_reference_date_4
17108       , l_array_event_created_by
17109       , l_array_budgetary_control_flag 
17110       , l_array_source_1
17111       , l_array_source_2
17112       , l_array_source_10
17113       , l_array_source_11
17114       , l_array_source_12
17115       , l_array_source_13
17116       , l_array_source_15
17117       , l_array_source_16
17118       LIMIT l_rows;
17119 --
17120 IF (C_LEVEL_EVENT >= g_log_level) THEN
17121    trace
17122    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
17123    ,p_level    => C_LEVEL_EVENT
17124    ,p_module   => l_log_module);
17125 END IF;
17126 --
17127 EXIT WHEN l_array_entity_id.COUNT = 0;
17128 
17129 -- initialize arrays
17130 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
17131 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
17132 
17133 --
17134 -- Bug 4458708
17135 --
17136 XLA_AE_LINES_PKG.g_LineNumber := 0;
17137 
17138 
17139 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
17140 g_last_hdr_idx := l_array_event_id.LAST;
17141 --
17142 -- loop for the headers. Each iteration is for each header extract row
17143 -- fetched in header cursor
17144 --
17145 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
17146 
17147 --
17148 -- set event info as cache for other routines to refer event attributes
17149 --
17150 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17151    (p_application_id           => p_application_id
17152    ,p_primary_ledger_id        => p_primary_ledger_id
17153    ,p_base_ledger_id           => p_base_ledger_id
17154    ,p_target_ledger_id         => p_target_ledger_id
17155    ,p_entity_id                => l_array_entity_id(hdr_idx)
17156    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
17157    ,p_entity_code              => l_array_entity_code(hdr_idx)
17158    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
17159    ,p_event_id                 => l_array_event_id(hdr_idx)
17160    ,p_event_class_code         => l_array_class_code(hdr_idx)
17161    ,p_event_type_code          => l_array_event_type(hdr_idx)
17162    ,p_event_number             => l_array_event_number(hdr_idx)
17163    ,p_event_date               => l_array_event_date(hdr_idx)
17164    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
17165    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
17166    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
17167    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
17168    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
17169    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
17170    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
17171    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
17172    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
17173    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
17174    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
17175    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
17176    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
17177    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
17178    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
17179 
17180 --
17181 -- set the status of entry to C_VALID (0)
17182 --
17183 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17184 
17185 --
17186 -- initialize a row for ae header
17187 --
17188 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
17189 
17190 l_event_id := l_array_event_id(hdr_idx);
17191 
17192 --
17193 -- storing the hdr_idx for event. May be used by line cursor.
17194 --
17195 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
17196 
17197 --
17198 -- store sources from header extract. This can be improved to
17199 -- store only those sources from header extract that may be used in lines
17200 --
17201 
17202 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
17203 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
17204 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
17205 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
17206 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
17207 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
17208 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
17209 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
17210 
17211 --
17212 -- initilaize the status of ae headers for diffrent balance types
17213 -- the status is initialised to C_NOT_CREATED (2)
17214 --
17215 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17216 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17217 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17218 
17219 --
17220 -- call api to validate and store accounting attributes for header
17221 --
17222 
17223 ------------------------------------------------------------
17224 -- Accrual Reversal : to get date for Standard Source (NONE)
17225 ------------------------------------------------------------
17226 l_acc_rev_gl_date_source := NULL;
17227 
17228      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
17232 
17229       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
17230      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
17231       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
17233 
17234 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
17235 
17236 XLA_AE_HEADER_PKG.SetJeCategoryName;
17237 
17238 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
17239 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
17240 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
17241 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
17242 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
17243 
17244 
17245 --
17246 xla_ae_header_pkg.SetHdrDescription(
17247    p_description => Description_1 (
17248    p_application_id => p_application_id 
17249  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17250  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17251    )
17252 );
17253 --
17254 
17255 -- No header level analytical criteria
17256 
17257 --
17258 --accounting attribute enhancement, bug 3612931
17259 --
17260 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
17261 
17262 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
17263    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
17264 
17265    xla_accounting_err_pkg.build_message
17266       (p_appli_s_name            => 'XLA'
17267       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
17268       ,p_token_1                 => 'ACCT_ATTR_NAME'
17269       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
17270       ,p_token_2                 => 'PRODUCT_NAME'
17271       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17272       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17273       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
17274       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17275 
17276 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
17277    --
17278    -- following sets the accounting attributes needed to reverse
17279    -- accounting for a distributeion
17280    --
17281    xla_ae_lines_pkg.SetTrxReversalAttrs
17282       (p_event_id              => l_event_id
17283       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
17284       ,p_trx_reversal_source   => l_trx_reversal_source);
17285 
17286 END IF;
17287 
17288 
17289 ----------------------------------------------------------------
17290 -- 4262811 -  update the header statuses to invalid in need be
17291 ----------------------------------------------------------------
17292 --
17293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
17294 
17295 
17296   -----------------------------------------------
17297   -- No accrual reversal for the event class/type
17298   -----------------------------------------------
17299 ----------------------------------------------------------------
17300 
17301 --
17302 -- this ends the header loop iteration for one bulk fetch
17303 --
17304 END LOOP;
17305 
17306 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
17307 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
17308 
17309 --
17310 -- insert dummy rows into lines gt table that were created due to
17311 -- transaction reversals
17312 --
17313 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
17314    l_result := XLA_AE_LINES_PKG.InsertLines;
17315 END IF;
17316 
17317 --
17318 -- reset the temp_line_num for each set of events fetched from header
17319 -- cursor rather than doing it for each new event in line cursor
17320 -- Bug 3939231
17321 --
17322 xla_ae_lines_pkg.g_temp_line_num := 0;
17323 
17324 
17325 
17326 --
17327 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
17328 --
17329 --
17330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17331 
17332       trace
17333          (p_msg      => 'SQL - FETCH line_cur'
17334          ,p_level    => C_LEVEL_STATEMENT
17335          ,p_module   => l_log_module);
17336 
17337 END IF;
17338 --
17339 --
17340 LOOP
17341   --
17342   FETCH line_cur BULK COLLECT INTO
17343         l_array_entity_id
17344       , l_array_legal_entity_id
17345       , l_array_entity_code
17346       , l_array_transaction_num
17347       , l_array_event_id
17348       , l_array_class_code
17349       , l_array_event_type
17350       , l_array_event_number
17351       , l_array_event_date
17352       , l_array_transaction_date
17353       , l_array_reference_num_1
17354       , l_array_reference_num_2
17355       , l_array_reference_num_3
17356       , l_array_reference_num_4
17357       , l_array_reference_char_1
17358       , l_array_reference_char_2
17359       , l_array_reference_char_3
17360       , l_array_reference_char_4
17361       , l_array_reference_date_1
17362       , l_array_reference_date_2
17363       , l_array_reference_date_3
17364       , l_array_reference_date_4
17365       , l_array_event_created_by
17366       , l_array_budgetary_control_flag
17367       , l_array_extract_line_num 
17368       , l_array_source_5
17369       , l_array_source_6
17370       , l_array_source_6_meaning
17371       , l_array_source_7
17372       , l_array_source_8
17376   --
17373       , l_array_source_9
17374       LIMIT l_rows;
17375 
17377   IF (C_LEVEL_EVENT >= g_log_level) THEN
17378             trace
17379                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
17380                ,p_level    => C_LEVEL_EVENT
17381                ,p_module   => l_log_module);
17382   END IF;
17383   --
17384   EXIT WHEN l_array_entity_id.count = 0;
17385 
17386   XLA_AE_LINES_PKG.g_rec_lines := null;
17387 
17388 --
17389 -- Bug 4458708
17390 --
17391 XLA_AE_LINES_PKG.g_LineNumber := 0;
17392 --
17393 --
17394 
17395 FOR Idx IN 1..l_array_event_id.count LOOP
17396    --
17397    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
17398    --
17399    l_event_id := l_array_event_id(idx);  -- 5648433
17400 
17401    --
17402    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17403    --
17404 
17405    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
17406              (g_array_event(l_event_id).array_value_num('header_index'))
17407          ,'N'
17408          ) <> 'Y'
17409    THEN
17410       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17411          trace
17412             (p_msg      => 'Trancaction revesal option is not Y '
17413             ,p_level    => C_LEVEL_STATEMENT
17414             ,p_module   => l_log_module);
17415       END IF;
17416 
17417 --
17418 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
17419 --
17420 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17421 --
17422 -- set event info as cache for other routines to refer event attributes
17423 --
17424 
17425 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
17426    l_previous_event_id := l_event_id;
17427 
17428    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17429       (p_application_id           => p_application_id
17430       ,p_primary_ledger_id        => p_primary_ledger_id
17431       ,p_base_ledger_id           => p_base_ledger_id
17432       ,p_target_ledger_id         => p_target_ledger_id
17433       ,p_entity_id                => l_array_entity_id(Idx)
17434       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
17435       ,p_entity_code              => l_array_entity_code(Idx)
17436       ,p_transaction_num          => l_array_transaction_num(Idx)
17437       ,p_event_id                 => l_array_event_id(Idx)
17438       ,p_event_class_code         => l_array_class_code(Idx)
17439       ,p_event_type_code          => l_array_event_type(Idx)
17440       ,p_event_number             => l_array_event_number(Idx)
17441       ,p_event_date               => l_array_event_date(Idx)
17442       ,p_transaction_date         => l_array_transaction_date(Idx)
17443       ,p_reference_num_1          => l_array_reference_num_1(Idx)
17444       ,p_reference_num_2          => l_array_reference_num_2(Idx)
17445       ,p_reference_num_3          => l_array_reference_num_3(Idx)
17446       ,p_reference_num_4          => l_array_reference_num_4(Idx)
17447       ,p_reference_char_1         => l_array_reference_char_1(Idx)
17448       ,p_reference_char_2         => l_array_reference_char_2(Idx)
17449       ,p_reference_char_3         => l_array_reference_char_3(Idx)
17450       ,p_reference_char_4         => l_array_reference_char_4(Idx)
17451       ,p_reference_date_1         => l_array_reference_date_1(Idx)
17452       ,p_reference_date_2         => l_array_reference_date_2(Idx)
17453       ,p_reference_date_3         => l_array_reference_date_3(Idx)
17454       ,p_reference_date_4         => l_array_reference_date_4(Idx)
17455       ,p_event_created_by         => l_array_event_created_by(Idx)
17456       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
17457        --
17458 END IF;
17459 
17460 
17461 
17462 --
17463 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
17464 
17465 l_acct_reversal_source := SUBSTR(NULL, 1,30);
17466 
17467 IF l_continue_with_lines THEN
17468    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
17469       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
17470 
17471       xla_accounting_err_pkg.build_message
17472          (p_appli_s_name            => 'XLA'
17473          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
17474          ,p_token_1                 => 'LINE_NUMBER'
17475          ,p_value_1                 => l_array_extract_line_num(Idx)
17476          ,p_token_2                 => 'PRODUCT_NAME'
17477          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17478          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17479          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
17480          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17481 
17482    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
17483       --
17484       -- following sets the accounting attributes needed to reverse
17485       -- accounting for a distributeion
17486       --
17487 
17488       --
17489       -- 5217187
17490       --
17491       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
17492       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
17493                                        g_array_event(l_event_id).array_value_num('header_index'));
17494       --
17495       --
17496 
17497       -- No reversal code generated
17498 
17499       xla_ae_lines_pkg.SetAcctReversalAttrs
17500          (p_event_id             => l_event_id
17501          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
17502          ,p_calculate_acctd_flag => l_calculate_acctd_flag
17503          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
17507        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
17504    END IF;
17505 
17506    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
17508 
17509 --
17510 AcctLineType_6 (
17511  p_application_id  => p_application_id
17512  ,p_event_id     => l_event_id
17513  ,p_calculate_acctd_flag => l_calculate_acctd_flag
17514  ,p_calculate_g_l_flag => l_calculate_g_l_flag
17515  ,p_actual_flag => l_actual_flag
17516  ,p_balance_type_code => l_balance_type_code
17517  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
17518  
17519  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17520  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17521  , p_source_5 => l_array_source_5(Idx)
17522  , p_source_6 => l_array_source_6(Idx)
17523  , p_source_6_meaning => l_array_source_6_meaning(Idx)
17524  , p_source_7 => l_array_source_7(Idx)
17525  , p_source_8 => l_array_source_8(Idx)
17526  , p_source_9 => l_array_source_9(Idx)
17527  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
17528  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
17529  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
17530  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
17531  );
17532 If(l_balance_type_code = 'A') THEN
17533   l_actual_gain_loss_ref := l_gain_or_loss_ref;
17534 END IF;
17535 
17536 --
17537 
17538 
17539 --
17540 AcctLineType_7 (
17541  p_application_id  => p_application_id
17542  ,p_event_id     => l_event_id
17543  ,p_calculate_acctd_flag => l_calculate_acctd_flag
17544  ,p_calculate_g_l_flag => l_calculate_g_l_flag
17545  ,p_actual_flag => l_actual_flag
17546  ,p_balance_type_code => l_balance_type_code
17547  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
17548  
17549  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
17550  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17551  , p_source_5 => l_array_source_5(Idx)
17552  , p_source_6 => l_array_source_6(Idx)
17553  , p_source_6_meaning => l_array_source_6_meaning(Idx)
17554  , p_source_7 => l_array_source_7(Idx)
17555  , p_source_8 => l_array_source_8(Idx)
17556  , p_source_9 => l_array_source_9(Idx)
17557  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
17558  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
17559  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
17560  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
17561  );
17562 If(l_balance_type_code = 'A') THEN
17563   l_actual_gain_loss_ref := l_gain_or_loss_ref;
17564 END IF;
17565 
17566 --
17567 
17568       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
17569       -- or secondary ledger that has different currency with primary
17570       -- or alc that is calculated by sla
17571       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
17572             (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'))
17573 
17574 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
17575 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
17576           AND (l_actual_flag = 'A')) THEN
17577         XLA_AE_LINES_PKG.CreateGainOrLossLines(
17578           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
17579          ,p_application_id   => p_application_id
17580          ,p_amb_context_code => 'DEFAULT'
17581          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
17582          ,p_event_class_code => C_EVENT_CLASS_CODE
17583          ,p_event_type_code  => C_EVENT_TYPE_CODE
17584          
17585          ,p_gain_ccid        => -1
17586          ,p_loss_ccid        => -1
17587 
17588          ,p_actual_flag      => l_actual_flag
17589          ,p_enc_flag         => null
17590          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
17591          ,p_enc_g_l_ref      => null
17592          );
17593       END IF;
17594    END IF;
17595 END IF;
17596 
17597    ELSE
17598       --
17599       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17600       --
17601       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17602          trace
17603             (p_msg      => 'Trancaction revesal option is Y'
17604             ,p_level    => C_LEVEL_STATEMENT
17605             ,p_module   => l_log_module);
17606       END IF;
17607    END IF;
17608 
17609 END LOOP;
17610 l_result := XLA_AE_LINES_PKG.InsertLines ;
17611 end loop;
17612 close line_cur;
17613 
17614 
17615 --
17616 -- insert headers into xla_ae_headers_gt table
17617 --
17618 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
17619 
17620 -- insert into errors table here.
17621 
17622 END LOOP;
17623 
17624 --
17625 -- 4865292
17626 --
17627 -- Compare g_hdr_extract_count with event count in
17628 -- CreateHeadersAndLines.
17629 --
17630 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
17631 
17632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17633    trace (p_msg     => '# rows extracted from header extract objects '
17634                     || ' (running total): '
17635                     || g_hdr_extract_count
17636          ,p_level   => C_LEVEL_STATEMENT
17637          ,p_module  => l_log_module);
17638 END IF;
17639 
17640 CLOSE header_cur;
17641 --
17642 
17643 --
17644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17645    trace
17646       (p_msg      => 'END of EventClass_33'
17647       ,p_level    => C_LEVEL_PROCEDURE
17651 RETURN l_result;
17648       ,p_module   => l_log_module);
17649 END IF;
17650 --
17652 EXCEPTION
17653 WHEN xla_exceptions_pkg.application_exception THEN
17654    
17655 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
17656 
17657    
17658 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
17659 
17660    RAISE;
17661 WHEN OTHERS THEN
17662    xla_exceptions_pkg.raise_message
17663       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_33');
17664 END EventClass_33;
17665 --
17666 
17667 ---------------------------------------
17668 --
17669 -- PRIVATE PROCEDURE
17670 --         insert_sources_34
17671 --
17672 ----------------------------------------
17673 --
17674 PROCEDURE insert_sources_34(
17675                                 p_target_ledger_id       IN NUMBER
17676                               , p_language               IN VARCHAR2
17677                               , p_sla_ledger_id          IN NUMBER
17678                               , p_pad_start_date         IN DATE
17679                               , p_pad_end_date           IN DATE
17680                          )
17681 IS
17682 
17683 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BOOKING_ALL';
17684 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BOOKING';
17685 p_apps_owner                   VARCHAR2(30);
17686 l_log_module                   VARCHAR2(240);
17687 BEGIN
17688 IF g_log_enabled THEN
17689       l_log_module := C_DEFAULT_MODULE||'.insert_sources_34';
17690 END IF;
17691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17692 
17693       trace
17694          (p_msg      => 'BEGIN of insert_sources_34'
17695          ,p_level    => C_LEVEL_PROCEDURE
17696          ,p_module   => l_log_module);
17697 
17698 END IF;
17699 
17700 -- select APPS owner
17701 SELECT oracle_username
17702   INTO p_apps_owner
17703   FROM fnd_oracle_userid
17704  WHERE read_only_flag = 'U'
17705 ;
17706 
17707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17708       trace
17709          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
17710                         ' - p_language = '||p_language||
17711                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
17712                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
17713                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
17714                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
17715          ,p_level    => C_LEVEL_STATEMENT
17716          ,p_module   => l_log_module);
17717 END IF;
17718 
17719 
17720 --
17721 INSERT INTO xla_diag_sources --hdr2
17722 (
17723         event_id
17724       , ledger_id
17725       , sla_ledger_id
17726       , description_language
17727       , object_name
17728       , object_type_code
17729       , line_number
17730       , source_application_id
17731       , source_type_code
17732       , source_code
17733       , source_value
17734       , source_meaning
17735       , created_by
17736       , creation_date
17737       , last_update_date
17738       , last_updated_by
17739       , last_update_login
17740       , program_update_date
17741       , program_application_id
17742       , program_id
17743       , request_id
17744 )
17745 SELECT
17746         event_id
17747       , p_target_ledger_id
17748       , p_sla_ledger_id
17749       , p_language
17750       , object_name
17751       , object_type_code
17752       , line_number
17753       , source_application_id
17754       , source_type_code
17755       , source_code
17756       , SUBSTR(source_value ,1,1996)
17757       , SUBSTR(source_meaning ,1,200)
17758       , xla_environment_pkg.g_Usr_Id
17759       , TRUNC(SYSDATE)
17760       , TRUNC(SYSDATE)
17761       , xla_environment_pkg.g_Usr_Id
17762       , xla_environment_pkg.g_Login_Id
17763       , TRUNC(SYSDATE)
17764       , xla_environment_pkg.g_Prog_Appl_Id
17765       , xla_environment_pkg.g_Prog_Id
17766       , xla_environment_pkg.g_Req_Id
17767   FROM (
17768        SELECT xet.event_id                  event_id
17769             , 0                          line_number
17770             , CASE r
17771                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17772                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17773                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17774                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17775                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17776                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17777                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17778                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
17779                 
17780                ELSE null
17781               END                           object_name
17782             , CASE r
17783                 WHEN 1 THEN 'HEADER' 
17784                 WHEN 2 THEN 'HEADER' 
17785                 WHEN 3 THEN 'HEADER' 
17786                 WHEN 4 THEN 'HEADER' 
17787                 WHEN 5 THEN 'HEADER' 
17788                 WHEN 6 THEN 'HEADER' 
17789                 WHEN 7 THEN 'HEADER' 
17790                 WHEN 8 THEN 'HEADER' 
17791                 
17792                 ELSE null
17793               END                           object_type_code
17794             , CASE r
17795                 WHEN 1 THEN '540' 
17796                 WHEN 2 THEN '540' 
17797                 WHEN 3 THEN '540' 
17798                 WHEN 4 THEN '540' 
17799                 WHEN 5 THEN '540' 
17800                 WHEN 6 THEN '540' 
17801                 WHEN 7 THEN '540' 
17802                 WHEN 8 THEN '540' 
17803                 
17804                 ELSE null
17805               END                           source_application_id
17809                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
17806             , 'S'             source_type_code
17807             , CASE r
17808                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
17810                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
17811                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
17812                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
17813                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
17814                 WHEN 7 THEN 'GL_DATE' 
17815                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
17816                 
17817                 ELSE null
17818               END                           source_code
17819             , CASE r
17820                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
17821                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
17822                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
17823                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
17824                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
17825                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
17826                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
17827                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
17828                 
17829                 ELSE null
17830               END                           source_value
17831             , null              source_meaning
17832          FROM xla_events_gt     xet  
17833       , OKL_CMN_EXTRACT_HDR_V  h1
17834              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
17835          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17836            AND xet.event_class_code = C_EVENT_CLASS_CODE
17837               AND h1.event_id = xet.event_id
17838 
17839 )
17840 ;
17841 --
17842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17843 
17844       trace
17845          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
17846          ,p_level    => C_LEVEL_STATEMENT
17847          ,p_module   => l_log_module);
17848 
17849 END IF;
17850 --
17851 
17852 
17853 
17854 --
17855 INSERT INTO xla_diag_sources  --line2
17856 (
17857         event_id
17858       , ledger_id
17859       , sla_ledger_id
17860       , description_language
17861       , object_name
17862       , object_type_code
17863       , line_number
17864       , source_application_id
17865       , source_type_code
17866       , source_code
17867       , source_value
17868       , source_meaning
17869       , created_by
17870       , creation_date
17871       , last_update_date
17872       , last_updated_by
17873       , last_update_login
17874       , program_update_date
17875       , program_application_id
17876       , program_id
17877       , request_id
17878 )
17879 SELECT  event_id
17880       , p_target_ledger_id
17881       , p_sla_ledger_id
17882       , p_language
17883       , object_name
17884       , object_type_code
17885       , line_number
17886       , source_application_id
17887       , source_type_code
17888       , source_code
17889       , SUBSTR(source_value,1,1996)
17890       , SUBSTR(source_meaning ,1,200)
17891       , xla_environment_pkg.g_Usr_Id
17892       , TRUNC(SYSDATE)
17893       , TRUNC(SYSDATE)
17894       , xla_environment_pkg.g_Usr_Id
17895       , xla_environment_pkg.g_Login_Id
17896       , TRUNC(SYSDATE)
17897       , xla_environment_pkg.g_Prog_Appl_Id
17898       , xla_environment_pkg.g_Prog_Id
17899       , xla_environment_pkg.g_Req_Id
17900   FROM (
17901        SELECT xet.event_id                  event_id
17902             , l2.line_number                 line_number
17903             , CASE r
17904                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
17905                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
17906                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
17907                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
17908                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
17909                 
17910                ELSE null
17911               END                           object_name
17912             , CASE r
17913                 WHEN 1 THEN 'LINE' 
17914                 WHEN 2 THEN 'LINE' 
17915                 WHEN 3 THEN 'LINE' 
17916                 WHEN 4 THEN 'LINE' 
17917                 WHEN 5 THEN 'LINE' 
17918                 
17919                 ELSE null
17920               END                           object_type_code
17921             , CASE r
17922                 WHEN 1 THEN '540' 
17923                 WHEN 2 THEN '540' 
17924                 WHEN 3 THEN '540' 
17925                 WHEN 4 THEN '540' 
17926                 WHEN 5 THEN '540' 
17927                 
17928                 ELSE null
17929               END                           source_application_id
17930             , 'S'             source_type_code
17931             , CASE r
17932                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
17933                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
17934                 WHEN 3 THEN 'DIST_ID' 
17935                 WHEN 4 THEN 'DIST_TYPE' 
17936                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
17937                 
17938                 ELSE null
17939               END                           source_code
17940             , CASE r
17941                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
17942                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
17943                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
17944                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
17945                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
17946                 
17947                 ELSE null
17948               END                           source_value
17949             , CASE r
17950                 WHEN 2 THEN fvl6.meaning
17954          FROM  xla_events_gt     xet  
17951                 
17952                 ELSE null
17953               END               source_meaning
17955         , OKL_CMN_EXTRACT_LINE_V  l2
17956   , fnd_lookup_values    fvl6
17957             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
17958         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17959           AND xet.event_class_code = C_EVENT_CLASS_CODE
17960             AND l2.event_id          = xet.event_id
17961    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
17962   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
17963   AND fvl6.view_application_id(+) = 0
17964   AND fvl6.language(+)            = USERENV('LANG')
17965   
17966 )
17967 ;
17968 --
17969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17970 
17971       trace
17972          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
17973          ,p_level    => C_LEVEL_STATEMENT
17974          ,p_module   => l_log_module);
17975 
17976 END IF;
17977 
17978 
17979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17980       trace
17981          (p_msg      => 'END of insert_sources_34'
17982          ,p_level    => C_LEVEL_PROCEDURE
17983          ,p_module   => l_log_module);
17984 END IF;
17985 EXCEPTION
17986   WHEN xla_exceptions_pkg.application_exception THEN
17987       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17988             trace
17989                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17990                ,p_level    => C_LEVEL_EXCEPTION
17991                ,p_module   => l_log_module);
17992       END IF;
17993       RAISE;
17994   WHEN OTHERS THEN
17995       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17996             trace
17997                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17998                ,p_level    => C_LEVEL_EXCEPTION
17999                ,p_module   => l_log_module);
18000        END IF;
18001        xla_exceptions_pkg.raise_message
18002            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_34');
18003 END insert_sources_34;
18004 --
18005 
18006 ---------------------------------------
18007 --
18008 -- PRIVATE FUNCTION
18009 --         EventClass_34
18010 --
18011 ----------------------------------------
18012 --
18013 FUNCTION EventClass_34
18014        (p_application_id         IN NUMBER
18015        ,p_base_ledger_id         IN NUMBER
18016        ,p_target_ledger_id       IN NUMBER
18017        ,p_language               IN VARCHAR2
18018        ,p_currency_code          IN VARCHAR2
18019        ,p_sla_ledger_id          IN NUMBER
18020        ,p_pad_start_date         IN DATE
18021        ,p_pad_end_date           IN DATE
18022        ,p_primary_ledger_id      IN NUMBER)
18023 RETURN BOOLEAN IS
18024 --
18025 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BOOKING_ALL';
18026 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BOOKING';
18027 
18028 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
18029 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
18030 --
18031 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18032 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18033 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18034 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18035 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18036 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18037 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18038 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18039 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18040 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18041 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18042 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18043 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18044 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18045 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18046 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18047 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18048 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18049 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18050 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18051 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18052 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18053 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
18054 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18055 
18056 l_event_id                             NUMBER;
18057 l_previous_event_id                    NUMBER;
18058 l_first_event_id                       NUMBER;
18059 l_last_event_id                        NUMBER;
18060 
18061 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
18062 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
18063 --
18064 --
18065 l_result                    BOOLEAN := TRUE;
18066 l_rows                      NUMBER  := 1000;
18067 l_event_type_name           VARCHAR2(80) := 'All';
18068 l_event_class_name          VARCHAR2(80) := 'Booking';
18069 l_description               VARCHAR2(4000);
18070 l_transaction_reversal      NUMBER;
18071 l_ae_header_id              NUMBER;
18072 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
18073 l_log_module                VARCHAR2(240);
18074 --
18078 l_continue_with_lines       BOOLEAN := TRUE;
18075 l_acct_reversal_source      VARCHAR2(30);
18076 l_trx_reversal_source       VARCHAR2(30);
18077 
18079 --
18080 l_acc_rev_gl_date_source    DATE;                      -- 4262811
18081 --
18082 type t_array_event_id is table of number index by binary_integer;
18083 
18084 l_rec_array_event                    t_rec_array_event;
18085 l_null_rec_array_event               t_rec_array_event;
18086 l_array_ae_header_id                 xla_number_array_type;
18087 l_actual_flag                        VARCHAR2(1) := NULL;
18088 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
18089 l_balance_type_code                  VARCHAR2(1) :=NULL;
18090 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
18091 
18092 --
18093 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
18094 --
18095 
18096 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
18097 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
18098 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
18099 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
18100 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
18101 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
18102 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
18103 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
18104 
18105 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
18106 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
18107 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
18108 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
18109 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
18110 
18111 l_array_source_1              t_array_source_1;
18112 l_array_source_2              t_array_source_2;
18113 l_array_source_10              t_array_source_10;
18114 l_array_source_11              t_array_source_11;
18115 l_array_source_12              t_array_source_12;
18116 l_array_source_13              t_array_source_13;
18117 l_array_source_15              t_array_source_15;
18118 l_array_source_16              t_array_source_16;
18119 
18120 l_array_source_5      t_array_source_5;
18121 l_array_source_6      t_array_source_6;
18122 l_array_source_6_meaning      t_array_lookup_meaning;
18123 l_array_source_7      t_array_source_7;
18124 l_array_source_8      t_array_source_8;
18125 l_array_source_9      t_array_source_9;
18126 
18127 --
18128 CURSOR header_cur
18129 IS
18130 SELECT /*+ leading(xet) cardinality(xet,1) */
18131 -- Event Class Code: BOOKING
18132     xet.entity_id
18133    ,xet.legal_entity_id
18134    ,xet.entity_code
18135    ,xet.transaction_number
18136    ,xet.event_id
18137    ,xet.event_class_code
18138    ,xet.event_type_code
18139    ,xet.event_number
18140    ,xet.event_date
18141    ,xet.transaction_date
18142    ,xet.reference_num_1
18143    ,xet.reference_num_2
18144    ,xet.reference_num_3
18145    ,xet.reference_num_4
18146    ,xet.reference_char_1
18147    ,xet.reference_char_2
18148    ,xet.reference_char_3
18149    ,xet.reference_char_4
18150    ,xet.reference_date_1
18151    ,xet.reference_date_2
18152    ,xet.reference_date_3
18153    ,xet.reference_date_4
18154    ,xet.event_created_by
18155    ,xet.budgetary_control_flag 
18156   , h1.TEH_CONTRACT_NUMBER    source_1
18157   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
18158   , h1.TCN_CURRENCY_CODE    source_10
18159   , h1.TCN_CURR_CONVERSION_DATE    source_11
18160   , h1.TCN_CURR_CONVERSION_RATE    source_12
18161   , h1.TCN_CURR_CONVERSION_TYPE    source_13
18162   , h1.GL_DATE    source_15
18163   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
18164   FROM xla_events_gt     xet 
18165   , OKL_CMN_EXTRACT_HDR_V  h1
18166  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
18167    and xet.event_class_code = C_EVENT_CLASS_CODE
18168    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
18169 
18170  ORDER BY event_id
18171 ;
18172 
18173 
18174 --
18175 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
18176 IS
18177 SELECT  /*+ leading(xet) cardinality(xet,1) */
18178 -- Event Class Code: BOOKING
18179     xet.entity_id
18180    ,xet.legal_entity_id
18181    ,xet.entity_code
18182    ,xet.transaction_number
18183    ,xet.event_id
18184    ,xet.event_class_code
18185    ,xet.event_type_code
18186    ,xet.event_number
18187    ,xet.event_date
18188    ,xet.transaction_date
18189    ,xet.reference_num_1
18190    ,xet.reference_num_2
18191    ,xet.reference_num_3
18192    ,xet.reference_num_4
18193    ,xet.reference_char_1
18194    ,xet.reference_char_2
18195    ,xet.reference_char_3
18196    ,xet.reference_char_4
18197    ,xet.reference_date_1
18198    ,xet.reference_date_2
18199    ,xet.reference_date_3
18200    ,xet.reference_date_4
18201    ,xet.event_created_by
18202    ,xet.budgetary_control_flag
18203  , l2.LINE_NUMBER  
18204   , l2.DIST_CODE_COMBINATION_ID    source_5
18205   , l2.DIST_AE_LINE_TYPE_CODE    source_6
18206   , fvl6.meaning   source_6_meaning
18207   , l2.DIST_ID    source_7
18208   , l2.DIST_TYPE    source_8
18209   , l2.DIST_ENTERED_AMOUNT    source_9
18210   FROM xla_events_gt     xet 
18214    and xet.event_date between p_pad_start_date and p_pad_end_date
18211   , OKL_CMN_EXTRACT_LINE_V  l2
18212   , fnd_lookup_values    fvl6
18213  WHERE xet.event_id between x_first_event_id and x_last_event_id
18215    and xet.event_class_code = C_EVENT_CLASS_CODE
18216    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
18217    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
18218   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
18219   AND fvl6.view_application_id(+) = 0
18220   AND fvl6.language(+)            = USERENV('LANG')
18221   ;
18222 
18223 --
18224 BEGIN
18225 IF g_log_enabled THEN
18226    l_log_module := C_DEFAULT_MODULE||'.EventClass_34';
18227 END IF;
18228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18229    trace
18230       (p_msg      => 'BEGIN of EventClass_34'
18231       ,p_level    => C_LEVEL_PROCEDURE
18232       ,p_module   => l_log_module);
18233 END IF;
18234 
18235 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18236    trace
18237       (p_msg      => 'p_application_id = '||p_application_id||
18238                      ' - p_base_ledger_id = '||p_base_ledger_id||
18239                      ' - p_target_ledger_id  = '||p_target_ledger_id||
18240                      ' - p_language = '||p_language||
18241                      ' - p_currency_code = '||p_currency_code||
18242                      ' - p_sla_ledger_id = '||p_sla_ledger_id
18243       ,p_level    => C_LEVEL_STATEMENT
18244       ,p_module   => l_log_module);
18245 END IF;
18246 --
18247 -- initialze arrays
18248 --
18249 g_array_event.DELETE;
18250 l_rec_array_event := l_null_rec_array_event;
18251 --
18252 --------------------------------------
18253 -- 4262811 Initialze MPA Line Number
18254 --------------------------------------
18255 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
18256 
18257 --
18258 
18259 --
18260 OPEN header_cur;
18261 --
18262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18263    trace
18264    (p_msg      => 'SQL - FETCH header_cur'
18265    ,p_level    => C_LEVEL_STATEMENT
18266    ,p_module   => l_log_module);
18267 END IF;
18268 --
18269 LOOP
18270 FETCH header_cur BULK COLLECT INTO
18271         l_array_entity_id
18272       , l_array_legal_entity_id
18273       , l_array_entity_code
18274       , l_array_transaction_num
18275       , l_array_event_id
18276       , l_array_class_code
18277       , l_array_event_type
18278       , l_array_event_number
18279       , l_array_event_date
18280       , l_array_transaction_date
18281       , l_array_reference_num_1
18282       , l_array_reference_num_2
18283       , l_array_reference_num_3
18284       , l_array_reference_num_4
18285       , l_array_reference_char_1
18286       , l_array_reference_char_2
18287       , l_array_reference_char_3
18288       , l_array_reference_char_4
18289       , l_array_reference_date_1
18290       , l_array_reference_date_2
18291       , l_array_reference_date_3
18292       , l_array_reference_date_4
18293       , l_array_event_created_by
18294       , l_array_budgetary_control_flag 
18295       , l_array_source_1
18296       , l_array_source_2
18297       , l_array_source_10
18298       , l_array_source_11
18299       , l_array_source_12
18300       , l_array_source_13
18301       , l_array_source_15
18302       , l_array_source_16
18303       LIMIT l_rows;
18304 --
18305 IF (C_LEVEL_EVENT >= g_log_level) THEN
18306    trace
18307    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
18308    ,p_level    => C_LEVEL_EVENT
18309    ,p_module   => l_log_module);
18310 END IF;
18311 --
18312 EXIT WHEN l_array_entity_id.COUNT = 0;
18313 
18314 -- initialize arrays
18315 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
18316 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
18317 
18318 --
18319 -- Bug 4458708
18320 --
18321 XLA_AE_LINES_PKG.g_LineNumber := 0;
18322 
18323 
18324 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
18325 g_last_hdr_idx := l_array_event_id.LAST;
18326 --
18327 -- loop for the headers. Each iteration is for each header extract row
18328 -- fetched in header cursor
18329 --
18330 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
18331 
18332 --
18333 -- set event info as cache for other routines to refer event attributes
18334 --
18335 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18336    (p_application_id           => p_application_id
18337    ,p_primary_ledger_id        => p_primary_ledger_id
18338    ,p_base_ledger_id           => p_base_ledger_id
18339    ,p_target_ledger_id         => p_target_ledger_id
18340    ,p_entity_id                => l_array_entity_id(hdr_idx)
18341    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
18342    ,p_entity_code              => l_array_entity_code(hdr_idx)
18343    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
18344    ,p_event_id                 => l_array_event_id(hdr_idx)
18345    ,p_event_class_code         => l_array_class_code(hdr_idx)
18346    ,p_event_type_code          => l_array_event_type(hdr_idx)
18347    ,p_event_number             => l_array_event_number(hdr_idx)
18348    ,p_event_date               => l_array_event_date(hdr_idx)
18349    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
18350    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
18351    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
18352    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
18353    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
18354    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
18355    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
18359    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
18356    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
18357    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
18358    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
18360    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
18361    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
18362    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
18363    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
18364 
18365 --
18366 -- set the status of entry to C_VALID (0)
18367 --
18368 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18369 
18370 --
18371 -- initialize a row for ae header
18372 --
18373 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
18374 
18375 l_event_id := l_array_event_id(hdr_idx);
18376 
18377 --
18378 -- storing the hdr_idx for event. May be used by line cursor.
18379 --
18380 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
18381 
18382 --
18383 -- store sources from header extract. This can be improved to
18384 -- store only those sources from header extract that may be used in lines
18385 --
18386 
18387 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
18388 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
18389 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
18390 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
18391 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
18392 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
18393 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
18394 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
18395 
18396 --
18397 -- initilaize the status of ae headers for diffrent balance types
18398 -- the status is initialised to C_NOT_CREATED (2)
18399 --
18400 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18401 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18402 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18403 
18404 --
18405 -- call api to validate and store accounting attributes for header
18406 --
18407 
18408 ------------------------------------------------------------
18409 -- Accrual Reversal : to get date for Standard Source (NONE)
18410 ------------------------------------------------------------
18411 l_acc_rev_gl_date_source := NULL;
18412 
18413      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
18414       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
18415      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
18416       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
18417 
18418 
18419 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
18420 
18421 XLA_AE_HEADER_PKG.SetJeCategoryName;
18422 
18423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
18424 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
18425 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
18426 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
18427 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
18428 
18429 
18430 --
18431 xla_ae_header_pkg.SetHdrDescription(
18432    p_description => Description_1 (
18433    p_application_id => p_application_id 
18434  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18435  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18436    )
18437 );
18438 --
18439 
18440 -- No header level analytical criteria
18441 
18442 --
18443 --accounting attribute enhancement, bug 3612931
18444 --
18445 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
18446 
18447 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
18448    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
18449 
18450    xla_accounting_err_pkg.build_message
18451       (p_appli_s_name            => 'XLA'
18452       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
18453       ,p_token_1                 => 'ACCT_ATTR_NAME'
18454       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
18455       ,p_token_2                 => 'PRODUCT_NAME'
18456       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18457       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18458       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
18459       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18460 
18461 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
18462    --
18463    -- following sets the accounting attributes needed to reverse
18464    -- accounting for a distributeion
18465    --
18466    xla_ae_lines_pkg.SetTrxReversalAttrs
18467       (p_event_id              => l_event_id
18468       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
18469       ,p_trx_reversal_source   => l_trx_reversal_source);
18470 
18471 END IF;
18472 
18473 
18474 ----------------------------------------------------------------
18475 -- 4262811 -  update the header statuses to invalid in need be
18479 
18476 ----------------------------------------------------------------
18477 --
18478 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
18480 
18481   -----------------------------------------------
18482   -- No accrual reversal for the event class/type
18483   -----------------------------------------------
18484 ----------------------------------------------------------------
18485 
18486 --
18487 -- this ends the header loop iteration for one bulk fetch
18488 --
18489 END LOOP;
18490 
18491 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
18492 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
18493 
18494 --
18495 -- insert dummy rows into lines gt table that were created due to
18496 -- transaction reversals
18497 --
18498 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
18499    l_result := XLA_AE_LINES_PKG.InsertLines;
18500 END IF;
18501 
18502 --
18503 -- reset the temp_line_num for each set of events fetched from header
18504 -- cursor rather than doing it for each new event in line cursor
18505 -- Bug 3939231
18506 --
18507 xla_ae_lines_pkg.g_temp_line_num := 0;
18508 
18509 
18510 
18511 --
18512 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
18513 --
18514 --
18515 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18516 
18517       trace
18518          (p_msg      => 'SQL - FETCH line_cur'
18519          ,p_level    => C_LEVEL_STATEMENT
18520          ,p_module   => l_log_module);
18521 
18522 END IF;
18523 --
18524 --
18525 LOOP
18526   --
18527   FETCH line_cur BULK COLLECT INTO
18528         l_array_entity_id
18529       , l_array_legal_entity_id
18530       , l_array_entity_code
18531       , l_array_transaction_num
18532       , l_array_event_id
18533       , l_array_class_code
18534       , l_array_event_type
18535       , l_array_event_number
18536       , l_array_event_date
18537       , l_array_transaction_date
18538       , l_array_reference_num_1
18539       , l_array_reference_num_2
18540       , l_array_reference_num_3
18541       , l_array_reference_num_4
18542       , l_array_reference_char_1
18543       , l_array_reference_char_2
18544       , l_array_reference_char_3
18545       , l_array_reference_char_4
18546       , l_array_reference_date_1
18547       , l_array_reference_date_2
18548       , l_array_reference_date_3
18549       , l_array_reference_date_4
18550       , l_array_event_created_by
18551       , l_array_budgetary_control_flag
18552       , l_array_extract_line_num 
18553       , l_array_source_5
18554       , l_array_source_6
18555       , l_array_source_6_meaning
18556       , l_array_source_7
18557       , l_array_source_8
18558       , l_array_source_9
18559       LIMIT l_rows;
18560 
18561   --
18562   IF (C_LEVEL_EVENT >= g_log_level) THEN
18563             trace
18564                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
18565                ,p_level    => C_LEVEL_EVENT
18566                ,p_module   => l_log_module);
18567   END IF;
18568   --
18569   EXIT WHEN l_array_entity_id.count = 0;
18570 
18571   XLA_AE_LINES_PKG.g_rec_lines := null;
18572 
18573 --
18574 -- Bug 4458708
18575 --
18576 XLA_AE_LINES_PKG.g_LineNumber := 0;
18577 --
18578 --
18579 
18580 FOR Idx IN 1..l_array_event_id.count LOOP
18581    --
18582    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
18583    --
18584    l_event_id := l_array_event_id(idx);  -- 5648433
18585 
18586    --
18587    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18588    --
18589 
18590    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
18591              (g_array_event(l_event_id).array_value_num('header_index'))
18592          ,'N'
18593          ) <> 'Y'
18594    THEN
18595       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18596          trace
18597             (p_msg      => 'Trancaction revesal option is not Y '
18598             ,p_level    => C_LEVEL_STATEMENT
18599             ,p_module   => l_log_module);
18600       END IF;
18601 
18602 --
18603 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
18604 --
18605 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18606 --
18607 -- set event info as cache for other routines to refer event attributes
18608 --
18609 
18610 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
18611    l_previous_event_id := l_event_id;
18612 
18613    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18614       (p_application_id           => p_application_id
18615       ,p_primary_ledger_id        => p_primary_ledger_id
18616       ,p_base_ledger_id           => p_base_ledger_id
18617       ,p_target_ledger_id         => p_target_ledger_id
18618       ,p_entity_id                => l_array_entity_id(Idx)
18619       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
18620       ,p_entity_code              => l_array_entity_code(Idx)
18621       ,p_transaction_num          => l_array_transaction_num(Idx)
18622       ,p_event_id                 => l_array_event_id(Idx)
18623       ,p_event_class_code         => l_array_class_code(Idx)
18624       ,p_event_type_code          => l_array_event_type(Idx)
18625       ,p_event_number             => l_array_event_number(Idx)
18626       ,p_event_date               => l_array_event_date(Idx)
18627       ,p_transaction_date         => l_array_transaction_date(Idx)
18628       ,p_reference_num_1          => l_array_reference_num_1(Idx)
18629       ,p_reference_num_2          => l_array_reference_num_2(Idx)
18633       ,p_reference_char_2         => l_array_reference_char_2(Idx)
18630       ,p_reference_num_3          => l_array_reference_num_3(Idx)
18631       ,p_reference_num_4          => l_array_reference_num_4(Idx)
18632       ,p_reference_char_1         => l_array_reference_char_1(Idx)
18634       ,p_reference_char_3         => l_array_reference_char_3(Idx)
18635       ,p_reference_char_4         => l_array_reference_char_4(Idx)
18636       ,p_reference_date_1         => l_array_reference_date_1(Idx)
18637       ,p_reference_date_2         => l_array_reference_date_2(Idx)
18638       ,p_reference_date_3         => l_array_reference_date_3(Idx)
18639       ,p_reference_date_4         => l_array_reference_date_4(Idx)
18640       ,p_event_created_by         => l_array_event_created_by(Idx)
18641       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
18642        --
18643 END IF;
18644 
18645 
18646 
18647 --
18648 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
18649 
18650 l_acct_reversal_source := SUBSTR(NULL, 1,30);
18651 
18652 IF l_continue_with_lines THEN
18653    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
18654       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
18655 
18656       xla_accounting_err_pkg.build_message
18657          (p_appli_s_name            => 'XLA'
18658          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
18659          ,p_token_1                 => 'LINE_NUMBER'
18660          ,p_value_1                 => l_array_extract_line_num(Idx)
18661          ,p_token_2                 => 'PRODUCT_NAME'
18662          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18663          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18664          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
18665          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18666 
18667    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
18668       --
18669       -- following sets the accounting attributes needed to reverse
18670       -- accounting for a distributeion
18671       --
18672 
18673       --
18674       -- 5217187
18675       --
18676       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
18677       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
18678                                        g_array_event(l_event_id).array_value_num('header_index'));
18679       --
18680       --
18681 
18682       -- No reversal code generated
18683 
18684       xla_ae_lines_pkg.SetAcctReversalAttrs
18685          (p_event_id             => l_event_id
18686          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
18687          ,p_calculate_acctd_flag => l_calculate_acctd_flag
18688          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
18689    END IF;
18690 
18691    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
18692        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
18693 
18694 --
18695 AcctLineType_8 (
18696  p_application_id  => p_application_id
18697  ,p_event_id     => l_event_id
18698  ,p_calculate_acctd_flag => l_calculate_acctd_flag
18699  ,p_calculate_g_l_flag => l_calculate_g_l_flag
18700  ,p_actual_flag => l_actual_flag
18701  ,p_balance_type_code => l_balance_type_code
18702  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
18703  
18704  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18705  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18706  , p_source_5 => l_array_source_5(Idx)
18707  , p_source_6 => l_array_source_6(Idx)
18708  , p_source_6_meaning => l_array_source_6_meaning(Idx)
18709  , p_source_7 => l_array_source_7(Idx)
18710  , p_source_8 => l_array_source_8(Idx)
18711  , p_source_9 => l_array_source_9(Idx)
18712  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
18713  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
18714  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
18715  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
18716  );
18717 If(l_balance_type_code = 'A') THEN
18718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
18719 END IF;
18720 
18721 --
18722 
18723 
18724 --
18725 AcctLineType_9 (
18726  p_application_id  => p_application_id
18727  ,p_event_id     => l_event_id
18728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
18729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
18730  ,p_actual_flag => l_actual_flag
18731  ,p_balance_type_code => l_balance_type_code
18732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
18733  
18734  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
18735  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18736  , p_source_5 => l_array_source_5(Idx)
18737  , p_source_6 => l_array_source_6(Idx)
18738  , p_source_6_meaning => l_array_source_6_meaning(Idx)
18739  , p_source_7 => l_array_source_7(Idx)
18740  , p_source_8 => l_array_source_8(Idx)
18741  , p_source_9 => l_array_source_9(Idx)
18742  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
18743  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
18744  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
18745  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
18746  );
18747 If(l_balance_type_code = 'A') THEN
18748   l_actual_gain_loss_ref := l_gain_or_loss_ref;
18749 END IF;
18750 
18751 --
18752 
18753       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
18754       -- or secondary ledger that has different currency with primary
18755       -- or alc that is calculated by sla
18759 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
18756       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
18757             (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'))
18758 
18760 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
18761           AND (l_actual_flag = 'A')) THEN
18762         XLA_AE_LINES_PKG.CreateGainOrLossLines(
18763           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
18764          ,p_application_id   => p_application_id
18765          ,p_amb_context_code => 'DEFAULT'
18766          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
18767          ,p_event_class_code => C_EVENT_CLASS_CODE
18768          ,p_event_type_code  => C_EVENT_TYPE_CODE
18769          
18770          ,p_gain_ccid        => -1
18771          ,p_loss_ccid        => -1
18772 
18773          ,p_actual_flag      => l_actual_flag
18774          ,p_enc_flag         => null
18775          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
18776          ,p_enc_g_l_ref      => null
18777          );
18778       END IF;
18779    END IF;
18780 END IF;
18781 
18782    ELSE
18783       --
18784       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18785       --
18786       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18787          trace
18788             (p_msg      => 'Trancaction revesal option is Y'
18789             ,p_level    => C_LEVEL_STATEMENT
18790             ,p_module   => l_log_module);
18791       END IF;
18792    END IF;
18793 
18794 END LOOP;
18795 l_result := XLA_AE_LINES_PKG.InsertLines ;
18796 end loop;
18797 close line_cur;
18798 
18799 
18800 --
18801 -- insert headers into xla_ae_headers_gt table
18802 --
18803 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
18804 
18805 -- insert into errors table here.
18806 
18807 END LOOP;
18808 
18809 --
18810 -- 4865292
18811 --
18812 -- Compare g_hdr_extract_count with event count in
18813 -- CreateHeadersAndLines.
18814 --
18815 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
18816 
18817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18818    trace (p_msg     => '# rows extracted from header extract objects '
18819                     || ' (running total): '
18820                     || g_hdr_extract_count
18821          ,p_level   => C_LEVEL_STATEMENT
18822          ,p_module  => l_log_module);
18823 END IF;
18824 
18825 CLOSE header_cur;
18826 --
18827 
18828 --
18829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18830    trace
18831       (p_msg      => 'END of EventClass_34'
18832       ,p_level    => C_LEVEL_PROCEDURE
18833       ,p_module   => l_log_module);
18834 END IF;
18835 --
18836 RETURN l_result;
18837 EXCEPTION
18838 WHEN xla_exceptions_pkg.application_exception THEN
18839    
18840 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
18841 
18842    
18843 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
18844 
18845    RAISE;
18846 WHEN OTHERS THEN
18847    xla_exceptions_pkg.raise_message
18848       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_34');
18849 END EventClass_34;
18850 --
18851 
18852 ---------------------------------------
18853 --
18854 -- PRIVATE PROCEDURE
18855 --         insert_sources_35
18856 --
18857 ----------------------------------------
18858 --
18859 PROCEDURE insert_sources_35(
18860                                 p_target_ledger_id       IN NUMBER
18861                               , p_language               IN VARCHAR2
18862                               , p_sla_ledger_id          IN NUMBER
18863                               , p_pad_start_date         IN DATE
18864                               , p_pad_end_date           IN DATE
18865                          )
18866 IS
18867 
18868 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EVERGREEN_ALL';
18869 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'EVERGREEN';
18870 p_apps_owner                   VARCHAR2(30);
18871 l_log_module                   VARCHAR2(240);
18872 BEGIN
18873 IF g_log_enabled THEN
18874       l_log_module := C_DEFAULT_MODULE||'.insert_sources_35';
18875 END IF;
18876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18877 
18878       trace
18879          (p_msg      => 'BEGIN of insert_sources_35'
18880          ,p_level    => C_LEVEL_PROCEDURE
18881          ,p_module   => l_log_module);
18882 
18883 END IF;
18884 
18885 -- select APPS owner
18886 SELECT oracle_username
18887   INTO p_apps_owner
18888   FROM fnd_oracle_userid
18889  WHERE read_only_flag = 'U'
18890 ;
18891 
18892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18893       trace
18894          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
18895                         ' - p_language = '||p_language||
18896                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
18897                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
18898                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
18899                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
18900          ,p_level    => C_LEVEL_STATEMENT
18901          ,p_module   => l_log_module);
18902 END IF;
18903 
18904 
18905 --
18906 INSERT INTO xla_diag_sources --hdr2
18907 (
18908         event_id
18909       , ledger_id
18910       , sla_ledger_id
18911       , description_language
18912       , object_name
18913       , object_type_code
18914       , line_number
18918       , source_value
18915       , source_application_id
18916       , source_type_code
18917       , source_code
18919       , source_meaning
18920       , created_by
18921       , creation_date
18922       , last_update_date
18923       , last_updated_by
18924       , last_update_login
18925       , program_update_date
18926       , program_application_id
18927       , program_id
18928       , request_id
18929 )
18930 SELECT
18931         event_id
18932       , p_target_ledger_id
18933       , p_sla_ledger_id
18934       , p_language
18935       , object_name
18936       , object_type_code
18937       , line_number
18938       , source_application_id
18939       , source_type_code
18940       , source_code
18941       , SUBSTR(source_value ,1,1996)
18942       , SUBSTR(source_meaning ,1,200)
18943       , xla_environment_pkg.g_Usr_Id
18944       , TRUNC(SYSDATE)
18945       , TRUNC(SYSDATE)
18946       , xla_environment_pkg.g_Usr_Id
18947       , xla_environment_pkg.g_Login_Id
18948       , TRUNC(SYSDATE)
18949       , xla_environment_pkg.g_Prog_Appl_Id
18950       , xla_environment_pkg.g_Prog_Id
18951       , xla_environment_pkg.g_Req_Id
18952   FROM (
18953        SELECT xet.event_id                  event_id
18954             , 0                          line_number
18955             , CASE r
18956                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18957                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18958                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18959                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18960                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18961                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18962                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18963                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
18964                 
18965                ELSE null
18966               END                           object_name
18967             , CASE r
18968                 WHEN 1 THEN 'HEADER' 
18969                 WHEN 2 THEN 'HEADER' 
18970                 WHEN 3 THEN 'HEADER' 
18971                 WHEN 4 THEN 'HEADER' 
18972                 WHEN 5 THEN 'HEADER' 
18973                 WHEN 6 THEN 'HEADER' 
18974                 WHEN 7 THEN 'HEADER' 
18975                 WHEN 8 THEN 'HEADER' 
18976                 
18977                 ELSE null
18978               END                           object_type_code
18979             , CASE r
18980                 WHEN 1 THEN '540' 
18981                 WHEN 2 THEN '540' 
18982                 WHEN 3 THEN '540' 
18983                 WHEN 4 THEN '540' 
18984                 WHEN 5 THEN '540' 
18985                 WHEN 6 THEN '540' 
18986                 WHEN 7 THEN '540' 
18987                 WHEN 8 THEN '540' 
18988                 
18989                 ELSE null
18990               END                           source_application_id
18991             , 'S'             source_type_code
18992             , CASE r
18993                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
18994                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
18995                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
18996                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
18997                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
18998                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
18999                 WHEN 7 THEN 'GL_DATE' 
19000                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
19001                 
19002                 ELSE null
19003               END                           source_code
19004             , CASE r
19005                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
19006                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
19007                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
19008                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
19009                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
19010                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
19011                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
19012                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
19013                 
19014                 ELSE null
19015               END                           source_value
19016             , null              source_meaning
19017          FROM xla_events_gt     xet  
19018       , OKL_CMN_EXTRACT_HDR_V  h1
19019              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
19020          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19021            AND xet.event_class_code = C_EVENT_CLASS_CODE
19022               AND h1.event_id = xet.event_id
19023 
19024 )
19025 ;
19026 --
19027 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19028 
19029       trace
19030          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
19031          ,p_level    => C_LEVEL_STATEMENT
19032          ,p_module   => l_log_module);
19033 
19034 END IF;
19035 --
19036 
19037 
19038 
19039 --
19040 INSERT INTO xla_diag_sources  --line2
19041 (
19042         event_id
19043       , ledger_id
19044       , sla_ledger_id
19045       , description_language
19046       , object_name
19047       , object_type_code
19048       , line_number
19049       , source_application_id
19050       , source_type_code
19051       , source_code
19052       , source_value
19053       , source_meaning
19054       , created_by
19055       , creation_date
19056       , last_update_date
19057       , last_updated_by
19058       , last_update_login
19059       , program_update_date
19060       , program_application_id
19061       , program_id
19062       , request_id
19063 )
19064 SELECT  event_id
19065       , p_target_ledger_id
19069       , object_type_code
19066       , p_sla_ledger_id
19067       , p_language
19068       , object_name
19070       , line_number
19071       , source_application_id
19072       , source_type_code
19073       , source_code
19074       , SUBSTR(source_value,1,1996)
19075       , SUBSTR(source_meaning ,1,200)
19076       , xla_environment_pkg.g_Usr_Id
19077       , TRUNC(SYSDATE)
19078       , TRUNC(SYSDATE)
19079       , xla_environment_pkg.g_Usr_Id
19080       , xla_environment_pkg.g_Login_Id
19081       , TRUNC(SYSDATE)
19082       , xla_environment_pkg.g_Prog_Appl_Id
19083       , xla_environment_pkg.g_Prog_Id
19084       , xla_environment_pkg.g_Req_Id
19085   FROM (
19086        SELECT xet.event_id                  event_id
19087             , l2.line_number                 line_number
19088             , CASE r
19089                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
19090                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
19091                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
19092                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
19093                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
19094                 
19095                ELSE null
19096               END                           object_name
19097             , CASE r
19098                 WHEN 1 THEN 'LINE' 
19099                 WHEN 2 THEN 'LINE' 
19100                 WHEN 3 THEN 'LINE' 
19101                 WHEN 4 THEN 'LINE' 
19102                 WHEN 5 THEN 'LINE' 
19103                 
19104                 ELSE null
19105               END                           object_type_code
19106             , CASE r
19107                 WHEN 1 THEN '540' 
19108                 WHEN 2 THEN '540' 
19109                 WHEN 3 THEN '540' 
19110                 WHEN 4 THEN '540' 
19111                 WHEN 5 THEN '540' 
19112                 
19113                 ELSE null
19114               END                           source_application_id
19115             , 'S'             source_type_code
19116             , CASE r
19117                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
19118                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
19119                 WHEN 3 THEN 'DIST_ID' 
19120                 WHEN 4 THEN 'DIST_TYPE' 
19121                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
19122                 
19123                 ELSE null
19124               END                           source_code
19125             , CASE r
19126                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
19127                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
19128                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
19129                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
19130                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
19131                 
19132                 ELSE null
19133               END                           source_value
19134             , CASE r
19135                 WHEN 2 THEN fvl6.meaning
19136                 
19137                 ELSE null
19138               END               source_meaning
19139          FROM  xla_events_gt     xet  
19140         , OKL_CMN_EXTRACT_LINE_V  l2
19141   , fnd_lookup_values    fvl6
19142             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
19143         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19144           AND xet.event_class_code = C_EVENT_CLASS_CODE
19145             AND l2.event_id          = xet.event_id
19146    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
19147   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
19148   AND fvl6.view_application_id(+) = 0
19149   AND fvl6.language(+)            = USERENV('LANG')
19150   
19151 )
19152 ;
19153 --
19154 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19155 
19156       trace
19157          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
19158          ,p_level    => C_LEVEL_STATEMENT
19159          ,p_module   => l_log_module);
19160 
19161 END IF;
19162 
19163 
19164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19165       trace
19166          (p_msg      => 'END of insert_sources_35'
19167          ,p_level    => C_LEVEL_PROCEDURE
19168          ,p_module   => l_log_module);
19169 END IF;
19170 EXCEPTION
19171   WHEN xla_exceptions_pkg.application_exception THEN
19172       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19173             trace
19174                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19175                ,p_level    => C_LEVEL_EXCEPTION
19176                ,p_module   => l_log_module);
19177       END IF;
19178       RAISE;
19179   WHEN OTHERS THEN
19180       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19181             trace
19182                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19183                ,p_level    => C_LEVEL_EXCEPTION
19184                ,p_module   => l_log_module);
19185        END IF;
19186        xla_exceptions_pkg.raise_message
19187            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_35');
19188 END insert_sources_35;
19189 --
19190 
19191 ---------------------------------------
19192 --
19193 -- PRIVATE FUNCTION
19194 --         EventClass_35
19195 --
19196 ----------------------------------------
19197 --
19198 FUNCTION EventClass_35
19199        (p_application_id         IN NUMBER
19200        ,p_base_ledger_id         IN NUMBER
19201        ,p_target_ledger_id       IN NUMBER
19202        ,p_language               IN VARCHAR2
19203        ,p_currency_code          IN VARCHAR2
19204        ,p_sla_ledger_id          IN NUMBER
19205        ,p_pad_start_date         IN DATE
19206        ,p_pad_end_date           IN DATE
19207        ,p_primary_ledger_id      IN NUMBER)
19208 RETURN BOOLEAN IS
19209 --
19213 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
19210 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EVERGREEN_ALL';
19211 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'EVERGREEN';
19212 
19214 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
19215 --
19216 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19217 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19218 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19219 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19220 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19221 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19222 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19223 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19224 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19225 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19226 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19227 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19228 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19229 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19230 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19231 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19232 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19233 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19234 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19235 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19236 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19237 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19238 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
19239 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19240 
19241 l_event_id                             NUMBER;
19242 l_previous_event_id                    NUMBER;
19243 l_first_event_id                       NUMBER;
19244 l_last_event_id                        NUMBER;
19245 
19246 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
19247 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
19248 --
19249 --
19250 l_result                    BOOLEAN := TRUE;
19251 l_rows                      NUMBER  := 1000;
19252 l_event_type_name           VARCHAR2(80) := 'All';
19253 l_event_class_name          VARCHAR2(80) := 'Evergreen';
19254 l_description               VARCHAR2(4000);
19255 l_transaction_reversal      NUMBER;
19256 l_ae_header_id              NUMBER;
19257 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
19258 l_log_module                VARCHAR2(240);
19259 --
19260 l_acct_reversal_source      VARCHAR2(30);
19261 l_trx_reversal_source       VARCHAR2(30);
19262 
19263 l_continue_with_lines       BOOLEAN := TRUE;
19264 --
19265 l_acc_rev_gl_date_source    DATE;                      -- 4262811
19266 --
19267 type t_array_event_id is table of number index by binary_integer;
19268 
19269 l_rec_array_event                    t_rec_array_event;
19270 l_null_rec_array_event               t_rec_array_event;
19271 l_array_ae_header_id                 xla_number_array_type;
19272 l_actual_flag                        VARCHAR2(1) := NULL;
19273 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
19274 l_balance_type_code                  VARCHAR2(1) :=NULL;
19275 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
19276 
19277 --
19278 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
19279 --
19280 
19281 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
19282 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
19283 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
19284 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
19285 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
19286 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
19287 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
19288 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
19289 
19290 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
19291 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
19292 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
19293 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
19294 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
19295 
19296 l_array_source_1              t_array_source_1;
19297 l_array_source_2              t_array_source_2;
19298 l_array_source_10              t_array_source_10;
19299 l_array_source_11              t_array_source_11;
19300 l_array_source_12              t_array_source_12;
19301 l_array_source_13              t_array_source_13;
19302 l_array_source_15              t_array_source_15;
19303 l_array_source_16              t_array_source_16;
19304 
19305 l_array_source_5      t_array_source_5;
19306 l_array_source_6      t_array_source_6;
19307 l_array_source_6_meaning      t_array_lookup_meaning;
19308 l_array_source_7      t_array_source_7;
19309 l_array_source_8      t_array_source_8;
19313 CURSOR header_cur
19310 l_array_source_9      t_array_source_9;
19311 
19312 --
19314 IS
19315 SELECT /*+ leading(xet) cardinality(xet,1) */
19316 -- Event Class Code: EVERGREEN
19317     xet.entity_id
19318    ,xet.legal_entity_id
19319    ,xet.entity_code
19320    ,xet.transaction_number
19321    ,xet.event_id
19322    ,xet.event_class_code
19323    ,xet.event_type_code
19324    ,xet.event_number
19325    ,xet.event_date
19326    ,xet.transaction_date
19327    ,xet.reference_num_1
19328    ,xet.reference_num_2
19329    ,xet.reference_num_3
19330    ,xet.reference_num_4
19331    ,xet.reference_char_1
19332    ,xet.reference_char_2
19333    ,xet.reference_char_3
19334    ,xet.reference_char_4
19335    ,xet.reference_date_1
19336    ,xet.reference_date_2
19337    ,xet.reference_date_3
19338    ,xet.reference_date_4
19339    ,xet.event_created_by
19340    ,xet.budgetary_control_flag 
19341   , h1.TEH_CONTRACT_NUMBER    source_1
19342   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
19343   , h1.TCN_CURRENCY_CODE    source_10
19344   , h1.TCN_CURR_CONVERSION_DATE    source_11
19345   , h1.TCN_CURR_CONVERSION_RATE    source_12
19346   , h1.TCN_CURR_CONVERSION_TYPE    source_13
19347   , h1.GL_DATE    source_15
19348   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
19349   FROM xla_events_gt     xet 
19350   , OKL_CMN_EXTRACT_HDR_V  h1
19351  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
19352    and xet.event_class_code = C_EVENT_CLASS_CODE
19353    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
19354 
19355  ORDER BY event_id
19356 ;
19357 
19358 
19359 --
19360 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
19361 IS
19362 SELECT  /*+ leading(xet) cardinality(xet,1) */
19363 -- Event Class Code: EVERGREEN
19364     xet.entity_id
19365    ,xet.legal_entity_id
19366    ,xet.entity_code
19367    ,xet.transaction_number
19368    ,xet.event_id
19369    ,xet.event_class_code
19370    ,xet.event_type_code
19371    ,xet.event_number
19372    ,xet.event_date
19373    ,xet.transaction_date
19374    ,xet.reference_num_1
19375    ,xet.reference_num_2
19376    ,xet.reference_num_3
19377    ,xet.reference_num_4
19378    ,xet.reference_char_1
19379    ,xet.reference_char_2
19380    ,xet.reference_char_3
19381    ,xet.reference_char_4
19382    ,xet.reference_date_1
19383    ,xet.reference_date_2
19384    ,xet.reference_date_3
19385    ,xet.reference_date_4
19386    ,xet.event_created_by
19387    ,xet.budgetary_control_flag
19388  , l2.LINE_NUMBER  
19389   , l2.DIST_CODE_COMBINATION_ID    source_5
19390   , l2.DIST_AE_LINE_TYPE_CODE    source_6
19391   , fvl6.meaning   source_6_meaning
19392   , l2.DIST_ID    source_7
19393   , l2.DIST_TYPE    source_8
19394   , l2.DIST_ENTERED_AMOUNT    source_9
19395   FROM xla_events_gt     xet 
19396   , OKL_CMN_EXTRACT_LINE_V  l2
19397   , fnd_lookup_values    fvl6
19398  WHERE xet.event_id between x_first_event_id and x_last_event_id
19399    and xet.event_date between p_pad_start_date and p_pad_end_date
19400    and xet.event_class_code = C_EVENT_CLASS_CODE
19401    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
19402    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
19403   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
19404   AND fvl6.view_application_id(+) = 0
19405   AND fvl6.language(+)            = USERENV('LANG')
19406   ;
19407 
19408 --
19409 BEGIN
19410 IF g_log_enabled THEN
19411    l_log_module := C_DEFAULT_MODULE||'.EventClass_35';
19412 END IF;
19413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19414    trace
19415       (p_msg      => 'BEGIN of EventClass_35'
19416       ,p_level    => C_LEVEL_PROCEDURE
19417       ,p_module   => l_log_module);
19418 END IF;
19419 
19420 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19421    trace
19422       (p_msg      => 'p_application_id = '||p_application_id||
19423                      ' - p_base_ledger_id = '||p_base_ledger_id||
19424                      ' - p_target_ledger_id  = '||p_target_ledger_id||
19425                      ' - p_language = '||p_language||
19426                      ' - p_currency_code = '||p_currency_code||
19427                      ' - p_sla_ledger_id = '||p_sla_ledger_id
19428       ,p_level    => C_LEVEL_STATEMENT
19429       ,p_module   => l_log_module);
19430 END IF;
19431 --
19432 -- initialze arrays
19433 --
19434 g_array_event.DELETE;
19435 l_rec_array_event := l_null_rec_array_event;
19436 --
19437 --------------------------------------
19438 -- 4262811 Initialze MPA Line Number
19439 --------------------------------------
19440 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
19441 
19442 --
19443 
19444 --
19445 OPEN header_cur;
19446 --
19447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19448    trace
19449    (p_msg      => 'SQL - FETCH header_cur'
19450    ,p_level    => C_LEVEL_STATEMENT
19451    ,p_module   => l_log_module);
19452 END IF;
19453 --
19454 LOOP
19455 FETCH header_cur BULK COLLECT INTO
19456         l_array_entity_id
19457       , l_array_legal_entity_id
19458       , l_array_entity_code
19459       , l_array_transaction_num
19460       , l_array_event_id
19461       , l_array_class_code
19462       , l_array_event_type
19463       , l_array_event_number
19464       , l_array_event_date
19465       , l_array_transaction_date
19466       , l_array_reference_num_1
19467       , l_array_reference_num_2
19468       , l_array_reference_num_3
19469       , l_array_reference_num_4
19470       , l_array_reference_char_1
19471       , l_array_reference_char_2
19472       , l_array_reference_char_3
19476       , l_array_reference_date_3
19473       , l_array_reference_char_4
19474       , l_array_reference_date_1
19475       , l_array_reference_date_2
19477       , l_array_reference_date_4
19478       , l_array_event_created_by
19479       , l_array_budgetary_control_flag 
19480       , l_array_source_1
19481       , l_array_source_2
19482       , l_array_source_10
19483       , l_array_source_11
19484       , l_array_source_12
19485       , l_array_source_13
19486       , l_array_source_15
19487       , l_array_source_16
19488       LIMIT l_rows;
19489 --
19490 IF (C_LEVEL_EVENT >= g_log_level) THEN
19491    trace
19492    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
19493    ,p_level    => C_LEVEL_EVENT
19494    ,p_module   => l_log_module);
19495 END IF;
19496 --
19497 EXIT WHEN l_array_entity_id.COUNT = 0;
19498 
19499 -- initialize arrays
19500 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
19501 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
19502 
19503 --
19504 -- Bug 4458708
19505 --
19506 XLA_AE_LINES_PKG.g_LineNumber := 0;
19507 
19508 
19509 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
19510 g_last_hdr_idx := l_array_event_id.LAST;
19511 --
19512 -- loop for the headers. Each iteration is for each header extract row
19513 -- fetched in header cursor
19514 --
19515 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
19516 
19517 --
19518 -- set event info as cache for other routines to refer event attributes
19519 --
19520 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19521    (p_application_id           => p_application_id
19522    ,p_primary_ledger_id        => p_primary_ledger_id
19523    ,p_base_ledger_id           => p_base_ledger_id
19524    ,p_target_ledger_id         => p_target_ledger_id
19525    ,p_entity_id                => l_array_entity_id(hdr_idx)
19526    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
19527    ,p_entity_code              => l_array_entity_code(hdr_idx)
19528    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
19529    ,p_event_id                 => l_array_event_id(hdr_idx)
19530    ,p_event_class_code         => l_array_class_code(hdr_idx)
19531    ,p_event_type_code          => l_array_event_type(hdr_idx)
19532    ,p_event_number             => l_array_event_number(hdr_idx)
19533    ,p_event_date               => l_array_event_date(hdr_idx)
19534    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
19535    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
19536    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
19537    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
19538    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
19539    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
19540    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
19541    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
19542    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
19543    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
19544    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
19545    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
19546    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
19547    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
19548    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
19549 
19550 --
19551 -- set the status of entry to C_VALID (0)
19552 --
19553 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19554 
19555 --
19556 -- initialize a row for ae header
19557 --
19558 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
19559 
19560 l_event_id := l_array_event_id(hdr_idx);
19561 
19562 --
19563 -- storing the hdr_idx for event. May be used by line cursor.
19564 --
19565 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
19566 
19567 --
19568 -- store sources from header extract. This can be improved to
19569 -- store only those sources from header extract that may be used in lines
19570 --
19571 
19572 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
19573 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
19574 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
19575 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
19576 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
19577 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
19578 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
19579 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
19580 
19581 --
19582 -- initilaize the status of ae headers for diffrent balance types
19583 -- the status is initialised to C_NOT_CREATED (2)
19584 --
19585 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19586 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19587 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19588 
19589 --
19590 -- call api to validate and store accounting attributes for header
19591 --
19592 
19593 ------------------------------------------------------------
19594 -- Accrual Reversal : to get date for Standard Source (NONE)
19595 ------------------------------------------------------------
19596 l_acc_rev_gl_date_source := NULL;
19597 
19598      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
19602 
19599       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
19600      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
19601       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
19603 
19604 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
19605 
19606 XLA_AE_HEADER_PKG.SetJeCategoryName;
19607 
19608 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
19609 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
19610 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
19611 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
19612 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
19613 
19614 
19615 --
19616 xla_ae_header_pkg.SetHdrDescription(
19617    p_description => Description_1 (
19618    p_application_id => p_application_id 
19619  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19620  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19621    )
19622 );
19623 --
19624 
19625 -- No header level analytical criteria
19626 
19627 --
19628 --accounting attribute enhancement, bug 3612931
19629 --
19630 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
19631 
19632 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
19633    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
19634 
19635    xla_accounting_err_pkg.build_message
19636       (p_appli_s_name            => 'XLA'
19637       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
19638       ,p_token_1                 => 'ACCT_ATTR_NAME'
19639       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
19640       ,p_token_2                 => 'PRODUCT_NAME'
19641       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
19642       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
19643       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
19644       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
19645 
19646 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
19647    --
19648    -- following sets the accounting attributes needed to reverse
19649    -- accounting for a distributeion
19650    --
19651    xla_ae_lines_pkg.SetTrxReversalAttrs
19652       (p_event_id              => l_event_id
19653       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
19654       ,p_trx_reversal_source   => l_trx_reversal_source);
19655 
19656 END IF;
19657 
19658 
19659 ----------------------------------------------------------------
19660 -- 4262811 -  update the header statuses to invalid in need be
19661 ----------------------------------------------------------------
19662 --
19663 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
19664 
19665 
19666   -----------------------------------------------
19667   -- No accrual reversal for the event class/type
19668   -----------------------------------------------
19669 ----------------------------------------------------------------
19670 
19671 --
19672 -- this ends the header loop iteration for one bulk fetch
19673 --
19674 END LOOP;
19675 
19676 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
19677 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
19678 
19679 --
19680 -- insert dummy rows into lines gt table that were created due to
19681 -- transaction reversals
19682 --
19683 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
19684    l_result := XLA_AE_LINES_PKG.InsertLines;
19685 END IF;
19686 
19687 --
19688 -- reset the temp_line_num for each set of events fetched from header
19689 -- cursor rather than doing it for each new event in line cursor
19690 -- Bug 3939231
19691 --
19692 xla_ae_lines_pkg.g_temp_line_num := 0;
19693 
19694 
19695 
19696 --
19697 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
19698 --
19699 --
19700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19701 
19702       trace
19703          (p_msg      => 'SQL - FETCH line_cur'
19704          ,p_level    => C_LEVEL_STATEMENT
19705          ,p_module   => l_log_module);
19706 
19707 END IF;
19708 --
19709 --
19710 LOOP
19711   --
19712   FETCH line_cur BULK COLLECT INTO
19713         l_array_entity_id
19714       , l_array_legal_entity_id
19715       , l_array_entity_code
19716       , l_array_transaction_num
19717       , l_array_event_id
19718       , l_array_class_code
19719       , l_array_event_type
19720       , l_array_event_number
19721       , l_array_event_date
19722       , l_array_transaction_date
19723       , l_array_reference_num_1
19724       , l_array_reference_num_2
19725       , l_array_reference_num_3
19726       , l_array_reference_num_4
19727       , l_array_reference_char_1
19728       , l_array_reference_char_2
19729       , l_array_reference_char_3
19730       , l_array_reference_char_4
19731       , l_array_reference_date_1
19732       , l_array_reference_date_2
19733       , l_array_reference_date_3
19734       , l_array_reference_date_4
19735       , l_array_event_created_by
19736       , l_array_budgetary_control_flag
19737       , l_array_extract_line_num 
19738       , l_array_source_5
19739       , l_array_source_6
19740       , l_array_source_6_meaning
19741       , l_array_source_7
19742       , l_array_source_8
19746   --
19743       , l_array_source_9
19744       LIMIT l_rows;
19745 
19747   IF (C_LEVEL_EVENT >= g_log_level) THEN
19748             trace
19749                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
19750                ,p_level    => C_LEVEL_EVENT
19751                ,p_module   => l_log_module);
19752   END IF;
19753   --
19754   EXIT WHEN l_array_entity_id.count = 0;
19755 
19756   XLA_AE_LINES_PKG.g_rec_lines := null;
19757 
19758 --
19759 -- Bug 4458708
19760 --
19761 XLA_AE_LINES_PKG.g_LineNumber := 0;
19762 --
19763 --
19764 
19765 FOR Idx IN 1..l_array_event_id.count LOOP
19766    --
19767    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
19768    --
19769    l_event_id := l_array_event_id(idx);  -- 5648433
19770 
19771    --
19772    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
19773    --
19774 
19775    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
19776              (g_array_event(l_event_id).array_value_num('header_index'))
19777          ,'N'
19778          ) <> 'Y'
19779    THEN
19780       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19781          trace
19782             (p_msg      => 'Trancaction revesal option is not Y '
19783             ,p_level    => C_LEVEL_STATEMENT
19784             ,p_module   => l_log_module);
19785       END IF;
19786 
19787 --
19788 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
19789 --
19790 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19791 --
19792 -- set event info as cache for other routines to refer event attributes
19793 --
19794 
19795 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
19796    l_previous_event_id := l_event_id;
19797 
19798    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19799       (p_application_id           => p_application_id
19800       ,p_primary_ledger_id        => p_primary_ledger_id
19801       ,p_base_ledger_id           => p_base_ledger_id
19802       ,p_target_ledger_id         => p_target_ledger_id
19803       ,p_entity_id                => l_array_entity_id(Idx)
19804       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
19805       ,p_entity_code              => l_array_entity_code(Idx)
19806       ,p_transaction_num          => l_array_transaction_num(Idx)
19807       ,p_event_id                 => l_array_event_id(Idx)
19808       ,p_event_class_code         => l_array_class_code(Idx)
19809       ,p_event_type_code          => l_array_event_type(Idx)
19810       ,p_event_number             => l_array_event_number(Idx)
19811       ,p_event_date               => l_array_event_date(Idx)
19812       ,p_transaction_date         => l_array_transaction_date(Idx)
19813       ,p_reference_num_1          => l_array_reference_num_1(Idx)
19814       ,p_reference_num_2          => l_array_reference_num_2(Idx)
19815       ,p_reference_num_3          => l_array_reference_num_3(Idx)
19816       ,p_reference_num_4          => l_array_reference_num_4(Idx)
19817       ,p_reference_char_1         => l_array_reference_char_1(Idx)
19818       ,p_reference_char_2         => l_array_reference_char_2(Idx)
19819       ,p_reference_char_3         => l_array_reference_char_3(Idx)
19820       ,p_reference_char_4         => l_array_reference_char_4(Idx)
19821       ,p_reference_date_1         => l_array_reference_date_1(Idx)
19822       ,p_reference_date_2         => l_array_reference_date_2(Idx)
19823       ,p_reference_date_3         => l_array_reference_date_3(Idx)
19824       ,p_reference_date_4         => l_array_reference_date_4(Idx)
19825       ,p_event_created_by         => l_array_event_created_by(Idx)
19826       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
19827        --
19828 END IF;
19829 
19830 
19831 
19832 --
19833 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
19834 
19835 l_acct_reversal_source := SUBSTR(NULL, 1,30);
19836 
19837 IF l_continue_with_lines THEN
19838    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
19839       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
19840 
19841       xla_accounting_err_pkg.build_message
19842          (p_appli_s_name            => 'XLA'
19843          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
19844          ,p_token_1                 => 'LINE_NUMBER'
19845          ,p_value_1                 => l_array_extract_line_num(Idx)
19846          ,p_token_2                 => 'PRODUCT_NAME'
19847          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
19848          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
19849          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
19850          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
19851 
19852    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
19853       --
19854       -- following sets the accounting attributes needed to reverse
19855       -- accounting for a distributeion
19856       --
19857 
19858       --
19859       -- 5217187
19860       --
19861       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
19862       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
19863                                        g_array_event(l_event_id).array_value_num('header_index'));
19864       --
19865       --
19866 
19867       -- No reversal code generated
19868 
19869       xla_ae_lines_pkg.SetAcctReversalAttrs
19870          (p_event_id             => l_event_id
19871          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
19872          ,p_calculate_acctd_flag => l_calculate_acctd_flag
19873          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
19877        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
19874    END IF;
19875 
19876    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
19878 
19879 --
19880 AcctLineType_10 (
19881  p_application_id  => p_application_id
19882  ,p_event_id     => l_event_id
19883  ,p_calculate_acctd_flag => l_calculate_acctd_flag
19884  ,p_calculate_g_l_flag => l_calculate_g_l_flag
19885  ,p_actual_flag => l_actual_flag
19886  ,p_balance_type_code => l_balance_type_code
19887  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
19888  
19889  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19890  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19891  , p_source_5 => l_array_source_5(Idx)
19892  , p_source_6 => l_array_source_6(Idx)
19893  , p_source_6_meaning => l_array_source_6_meaning(Idx)
19894  , p_source_7 => l_array_source_7(Idx)
19895  , p_source_8 => l_array_source_8(Idx)
19896  , p_source_9 => l_array_source_9(Idx)
19897  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
19898  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
19899  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
19900  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
19901  );
19902 If(l_balance_type_code = 'A') THEN
19903   l_actual_gain_loss_ref := l_gain_or_loss_ref;
19904 END IF;
19905 
19906 --
19907 
19908 
19909 --
19910 AcctLineType_11 (
19911  p_application_id  => p_application_id
19912  ,p_event_id     => l_event_id
19913  ,p_calculate_acctd_flag => l_calculate_acctd_flag
19914  ,p_calculate_g_l_flag => l_calculate_g_l_flag
19915  ,p_actual_flag => l_actual_flag
19916  ,p_balance_type_code => l_balance_type_code
19917  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
19918  
19919  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
19920  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19921  , p_source_5 => l_array_source_5(Idx)
19922  , p_source_6 => l_array_source_6(Idx)
19923  , p_source_6_meaning => l_array_source_6_meaning(Idx)
19924  , p_source_7 => l_array_source_7(Idx)
19925  , p_source_8 => l_array_source_8(Idx)
19926  , p_source_9 => l_array_source_9(Idx)
19927  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
19928  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
19929  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
19930  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
19931  );
19932 If(l_balance_type_code = 'A') THEN
19933   l_actual_gain_loss_ref := l_gain_or_loss_ref;
19934 END IF;
19935 
19936 --
19937 
19938       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
19939       -- or secondary ledger that has different currency with primary
19940       -- or alc that is calculated by sla
19941       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
19942             (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'))
19943 
19944 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
19945 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
19946           AND (l_actual_flag = 'A')) THEN
19947         XLA_AE_LINES_PKG.CreateGainOrLossLines(
19948           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
19949          ,p_application_id   => p_application_id
19950          ,p_amb_context_code => 'DEFAULT'
19951          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
19952          ,p_event_class_code => C_EVENT_CLASS_CODE
19953          ,p_event_type_code  => C_EVENT_TYPE_CODE
19954          
19955          ,p_gain_ccid        => -1
19956          ,p_loss_ccid        => -1
19957 
19958          ,p_actual_flag      => l_actual_flag
19959          ,p_enc_flag         => null
19960          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
19961          ,p_enc_g_l_ref      => null
19962          );
19963       END IF;
19964    END IF;
19965 END IF;
19966 
19967    ELSE
19968       --
19969       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
19970       --
19971       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19972          trace
19973             (p_msg      => 'Trancaction revesal option is Y'
19974             ,p_level    => C_LEVEL_STATEMENT
19975             ,p_module   => l_log_module);
19976       END IF;
19977    END IF;
19978 
19979 END LOOP;
19980 l_result := XLA_AE_LINES_PKG.InsertLines ;
19981 end loop;
19982 close line_cur;
19983 
19984 
19985 --
19986 -- insert headers into xla_ae_headers_gt table
19987 --
19988 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
19989 
19990 -- insert into errors table here.
19991 
19992 END LOOP;
19993 
19994 --
19995 -- 4865292
19996 --
19997 -- Compare g_hdr_extract_count with event count in
19998 -- CreateHeadersAndLines.
19999 --
20000 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
20001 
20002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20003    trace (p_msg     => '# rows extracted from header extract objects '
20004                     || ' (running total): '
20005                     || g_hdr_extract_count
20006          ,p_level   => C_LEVEL_STATEMENT
20007          ,p_module  => l_log_module);
20008 END IF;
20009 
20010 CLOSE header_cur;
20011 --
20012 
20013 --
20014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20015    trace
20016       (p_msg      => 'END of EventClass_35'
20017       ,p_level    => C_LEVEL_PROCEDURE
20021 RETURN l_result;
20018       ,p_module   => l_log_module);
20019 END IF;
20020 --
20022 EXCEPTION
20023 WHEN xla_exceptions_pkg.application_exception THEN
20024    
20025 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
20026 
20027    
20028 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
20029 
20030    RAISE;
20031 WHEN OTHERS THEN
20032    xla_exceptions_pkg.raise_message
20033       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_35');
20034 END EventClass_35;
20035 --
20036 
20037 ---------------------------------------
20038 --
20039 -- PRIVATE PROCEDURE
20040 --         insert_sources_36
20041 --
20042 ----------------------------------------
20043 --
20044 PROCEDURE insert_sources_36(
20045                                 p_target_ledger_id       IN NUMBER
20046                               , p_language               IN VARCHAR2
20047                               , p_sla_ledger_id          IN NUMBER
20048                               , p_pad_start_date         IN DATE
20049                               , p_pad_end_date           IN DATE
20050                          )
20051 IS
20052 
20053 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GENERAL_LOSS_PROVISION_ALL';
20054 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'GENERAL_LOSS_PROVISION';
20055 p_apps_owner                   VARCHAR2(30);
20056 l_log_module                   VARCHAR2(240);
20057 BEGIN
20058 IF g_log_enabled THEN
20059       l_log_module := C_DEFAULT_MODULE||'.insert_sources_36';
20060 END IF;
20061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20062 
20063       trace
20064          (p_msg      => 'BEGIN of insert_sources_36'
20065          ,p_level    => C_LEVEL_PROCEDURE
20066          ,p_module   => l_log_module);
20067 
20068 END IF;
20069 
20070 -- select APPS owner
20071 SELECT oracle_username
20072   INTO p_apps_owner
20073   FROM fnd_oracle_userid
20074  WHERE read_only_flag = 'U'
20075 ;
20076 
20077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20078       trace
20079          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
20080                         ' - p_language = '||p_language||
20081                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
20082                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
20083                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
20084                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
20085          ,p_level    => C_LEVEL_STATEMENT
20086          ,p_module   => l_log_module);
20087 END IF;
20088 
20089 
20090 --
20091 INSERT INTO xla_diag_sources --hdr2
20092 (
20093         event_id
20094       , ledger_id
20095       , sla_ledger_id
20096       , description_language
20097       , object_name
20098       , object_type_code
20099       , line_number
20100       , source_application_id
20101       , source_type_code
20102       , source_code
20103       , source_value
20104       , source_meaning
20105       , created_by
20106       , creation_date
20107       , last_update_date
20108       , last_updated_by
20109       , last_update_login
20110       , program_update_date
20111       , program_application_id
20112       , program_id
20113       , request_id
20114 )
20115 SELECT
20116         event_id
20117       , p_target_ledger_id
20118       , p_sla_ledger_id
20119       , p_language
20120       , object_name
20121       , object_type_code
20122       , line_number
20123       , source_application_id
20124       , source_type_code
20125       , source_code
20126       , SUBSTR(source_value ,1,1996)
20127       , SUBSTR(source_meaning ,1,200)
20128       , xla_environment_pkg.g_Usr_Id
20129       , TRUNC(SYSDATE)
20130       , TRUNC(SYSDATE)
20131       , xla_environment_pkg.g_Usr_Id
20132       , xla_environment_pkg.g_Login_Id
20133       , TRUNC(SYSDATE)
20134       , xla_environment_pkg.g_Prog_Appl_Id
20135       , xla_environment_pkg.g_Prog_Id
20136       , xla_environment_pkg.g_Req_Id
20137   FROM (
20138        SELECT xet.event_id                  event_id
20139             , 0                          line_number
20140             , CASE r
20141                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20142                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20143                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20144                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20145                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20146                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20147                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20148                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
20149                 
20150                ELSE null
20151               END                           object_name
20152             , CASE r
20153                 WHEN 1 THEN 'HEADER' 
20154                 WHEN 2 THEN 'HEADER' 
20155                 WHEN 3 THEN 'HEADER' 
20156                 WHEN 4 THEN 'HEADER' 
20157                 WHEN 5 THEN 'HEADER' 
20158                 WHEN 6 THEN 'HEADER' 
20159                 WHEN 7 THEN 'HEADER' 
20160                 WHEN 8 THEN 'HEADER' 
20161                 
20162                 ELSE null
20163               END                           object_type_code
20164             , CASE r
20165                 WHEN 1 THEN '540' 
20166                 WHEN 2 THEN '540' 
20167                 WHEN 3 THEN '540' 
20168                 WHEN 4 THEN '540' 
20169                 WHEN 5 THEN '540' 
20170                 WHEN 6 THEN '540' 
20171                 WHEN 7 THEN '540' 
20172                 WHEN 8 THEN '540' 
20173                 
20174                 ELSE null
20178                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
20175               END                           source_application_id
20176             , 'S'             source_type_code
20177             , CASE r
20179                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
20180                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
20181                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
20182                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
20183                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
20184                 WHEN 7 THEN 'GL_DATE' 
20185                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
20186                 
20187                 ELSE null
20188               END                           source_code
20189             , CASE r
20190                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
20191                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
20192                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
20193                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
20194                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
20195                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
20196                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
20197                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
20198                 
20199                 ELSE null
20200               END                           source_value
20201             , null              source_meaning
20202          FROM xla_events_gt     xet  
20203       , OKL_CMN_EXTRACT_HDR_V  h1
20204              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
20205          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20206            AND xet.event_class_code = C_EVENT_CLASS_CODE
20207               AND h1.event_id = xet.event_id
20208 
20209 )
20210 ;
20211 --
20212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20213 
20214       trace
20215          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
20216          ,p_level    => C_LEVEL_STATEMENT
20217          ,p_module   => l_log_module);
20218 
20219 END IF;
20220 --
20221 
20222 
20223 
20224 --
20225 INSERT INTO xla_diag_sources  --line2
20226 (
20227         event_id
20228       , ledger_id
20229       , sla_ledger_id
20230       , description_language
20231       , object_name
20232       , object_type_code
20233       , line_number
20234       , source_application_id
20235       , source_type_code
20236       , source_code
20237       , source_value
20238       , source_meaning
20239       , created_by
20240       , creation_date
20241       , last_update_date
20242       , last_updated_by
20243       , last_update_login
20244       , program_update_date
20245       , program_application_id
20246       , program_id
20247       , request_id
20248 )
20249 SELECT  event_id
20250       , p_target_ledger_id
20251       , p_sla_ledger_id
20252       , p_language
20253       , object_name
20254       , object_type_code
20255       , line_number
20256       , source_application_id
20257       , source_type_code
20258       , source_code
20259       , SUBSTR(source_value,1,1996)
20260       , SUBSTR(source_meaning ,1,200)
20261       , xla_environment_pkg.g_Usr_Id
20262       , TRUNC(SYSDATE)
20263       , TRUNC(SYSDATE)
20264       , xla_environment_pkg.g_Usr_Id
20265       , xla_environment_pkg.g_Login_Id
20266       , TRUNC(SYSDATE)
20267       , xla_environment_pkg.g_Prog_Appl_Id
20268       , xla_environment_pkg.g_Prog_Id
20269       , xla_environment_pkg.g_Req_Id
20270   FROM (
20271        SELECT xet.event_id                  event_id
20272             , l2.line_number                 line_number
20273             , CASE r
20274                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
20275                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
20276                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
20277                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
20278                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
20279                 
20280                ELSE null
20281               END                           object_name
20282             , CASE r
20283                 WHEN 1 THEN 'LINE' 
20284                 WHEN 2 THEN 'LINE' 
20285                 WHEN 3 THEN 'LINE' 
20286                 WHEN 4 THEN 'LINE' 
20287                 WHEN 5 THEN 'LINE' 
20288                 
20289                 ELSE null
20290               END                           object_type_code
20291             , CASE r
20292                 WHEN 1 THEN '540' 
20293                 WHEN 2 THEN '540' 
20294                 WHEN 3 THEN '540' 
20295                 WHEN 4 THEN '540' 
20296                 WHEN 5 THEN '540' 
20297                 
20298                 ELSE null
20299               END                           source_application_id
20300             , 'S'             source_type_code
20301             , CASE r
20302                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
20303                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
20304                 WHEN 3 THEN 'DIST_ID' 
20305                 WHEN 4 THEN 'DIST_TYPE' 
20306                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
20307                 
20308                 ELSE null
20309               END                           source_code
20310             , CASE r
20311                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
20312                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
20313                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
20314                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
20315                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
20316                 
20317                 ELSE null
20318               END                           source_value
20322                 ELSE null
20319             , CASE r
20320                 WHEN 2 THEN fvl6.meaning
20321                 
20323               END               source_meaning
20324          FROM  xla_events_gt     xet  
20325         , OKL_CMN_EXTRACT_LINE_V  l2
20326   , fnd_lookup_values    fvl6
20327             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
20328         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20329           AND xet.event_class_code = C_EVENT_CLASS_CODE
20330             AND l2.event_id          = xet.event_id
20331    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
20332   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
20333   AND fvl6.view_application_id(+) = 0
20334   AND fvl6.language(+)            = USERENV('LANG')
20335   
20336 )
20337 ;
20338 --
20339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20340 
20341       trace
20342          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
20343          ,p_level    => C_LEVEL_STATEMENT
20344          ,p_module   => l_log_module);
20345 
20346 END IF;
20347 
20348 
20349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20350       trace
20351          (p_msg      => 'END of insert_sources_36'
20352          ,p_level    => C_LEVEL_PROCEDURE
20353          ,p_module   => l_log_module);
20354 END IF;
20355 EXCEPTION
20356   WHEN xla_exceptions_pkg.application_exception THEN
20357       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20358             trace
20359                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20360                ,p_level    => C_LEVEL_EXCEPTION
20361                ,p_module   => l_log_module);
20362       END IF;
20363       RAISE;
20364   WHEN OTHERS THEN
20365       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20366             trace
20367                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20368                ,p_level    => C_LEVEL_EXCEPTION
20369                ,p_module   => l_log_module);
20370        END IF;
20371        xla_exceptions_pkg.raise_message
20372            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_36');
20373 END insert_sources_36;
20374 --
20375 
20376 ---------------------------------------
20377 --
20378 -- PRIVATE FUNCTION
20379 --         EventClass_36
20380 --
20381 ----------------------------------------
20382 --
20383 FUNCTION EventClass_36
20384        (p_application_id         IN NUMBER
20385        ,p_base_ledger_id         IN NUMBER
20386        ,p_target_ledger_id       IN NUMBER
20387        ,p_language               IN VARCHAR2
20388        ,p_currency_code          IN VARCHAR2
20389        ,p_sla_ledger_id          IN NUMBER
20390        ,p_pad_start_date         IN DATE
20391        ,p_pad_end_date           IN DATE
20392        ,p_primary_ledger_id      IN NUMBER)
20393 RETURN BOOLEAN IS
20394 --
20395 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GENERAL_LOSS_PROVISION_ALL';
20396 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'GENERAL_LOSS_PROVISION';
20397 
20398 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
20399 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
20400 --
20401 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20402 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20403 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20404 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20405 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20406 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20407 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20408 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20409 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20410 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20411 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20412 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20413 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20414 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20415 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20416 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20417 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20418 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20419 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20420 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20421 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20422 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20423 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
20424 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20425 
20426 l_event_id                             NUMBER;
20427 l_previous_event_id                    NUMBER;
20428 l_first_event_id                       NUMBER;
20429 l_last_event_id                        NUMBER;
20430 
20431 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
20432 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
20433 --
20434 --
20435 l_result                    BOOLEAN := TRUE;
20436 l_rows                      NUMBER  := 1000;
20437 l_event_type_name           VARCHAR2(80) := 'All';
20438 l_event_class_name          VARCHAR2(80) := 'General Loss Provision';
20439 l_description               VARCHAR2(4000);
20440 l_transaction_reversal      NUMBER;
20441 l_ae_header_id              NUMBER;
20445 l_acct_reversal_source      VARCHAR2(30);
20442 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
20443 l_log_module                VARCHAR2(240);
20444 --
20446 l_trx_reversal_source       VARCHAR2(30);
20447 
20448 l_continue_with_lines       BOOLEAN := TRUE;
20449 --
20450 l_acc_rev_gl_date_source    DATE;                      -- 4262811
20451 --
20452 type t_array_event_id is table of number index by binary_integer;
20453 
20454 l_rec_array_event                    t_rec_array_event;
20455 l_null_rec_array_event               t_rec_array_event;
20456 l_array_ae_header_id                 xla_number_array_type;
20457 l_actual_flag                        VARCHAR2(1) := NULL;
20458 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
20459 l_balance_type_code                  VARCHAR2(1) :=NULL;
20460 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
20461 
20462 --
20463 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
20464 --
20465 
20466 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
20467 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
20468 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
20469 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
20470 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
20471 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
20472 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
20473 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
20474 
20475 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
20476 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
20477 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
20478 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
20479 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
20480 
20481 l_array_source_1              t_array_source_1;
20482 l_array_source_2              t_array_source_2;
20483 l_array_source_10              t_array_source_10;
20484 l_array_source_11              t_array_source_11;
20485 l_array_source_12              t_array_source_12;
20486 l_array_source_13              t_array_source_13;
20487 l_array_source_15              t_array_source_15;
20488 l_array_source_16              t_array_source_16;
20489 
20490 l_array_source_5      t_array_source_5;
20491 l_array_source_6      t_array_source_6;
20492 l_array_source_6_meaning      t_array_lookup_meaning;
20493 l_array_source_7      t_array_source_7;
20494 l_array_source_8      t_array_source_8;
20495 l_array_source_9      t_array_source_9;
20496 
20497 --
20498 CURSOR header_cur
20499 IS
20500 SELECT /*+ leading(xet) cardinality(xet,1) */
20501 -- Event Class Code: GENERAL_LOSS_PROVISION
20502     xet.entity_id
20503    ,xet.legal_entity_id
20504    ,xet.entity_code
20505    ,xet.transaction_number
20506    ,xet.event_id
20507    ,xet.event_class_code
20508    ,xet.event_type_code
20509    ,xet.event_number
20510    ,xet.event_date
20511    ,xet.transaction_date
20512    ,xet.reference_num_1
20513    ,xet.reference_num_2
20514    ,xet.reference_num_3
20515    ,xet.reference_num_4
20516    ,xet.reference_char_1
20517    ,xet.reference_char_2
20518    ,xet.reference_char_3
20519    ,xet.reference_char_4
20520    ,xet.reference_date_1
20521    ,xet.reference_date_2
20522    ,xet.reference_date_3
20523    ,xet.reference_date_4
20524    ,xet.event_created_by
20525    ,xet.budgetary_control_flag 
20526   , h1.TEH_CONTRACT_NUMBER    source_1
20527   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
20528   , h1.TCN_CURRENCY_CODE    source_10
20529   , h1.TCN_CURR_CONVERSION_DATE    source_11
20530   , h1.TCN_CURR_CONVERSION_RATE    source_12
20531   , h1.TCN_CURR_CONVERSION_TYPE    source_13
20532   , h1.GL_DATE    source_15
20533   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
20534   FROM xla_events_gt     xet 
20535   , OKL_CMN_EXTRACT_HDR_V  h1
20536  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
20537    and xet.event_class_code = C_EVENT_CLASS_CODE
20538    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
20539 
20540  ORDER BY event_id
20541 ;
20542 
20543 
20544 --
20545 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
20546 IS
20547 SELECT  /*+ leading(xet) cardinality(xet,1) */
20548 -- Event Class Code: GENERAL_LOSS_PROVISION
20549     xet.entity_id
20550    ,xet.legal_entity_id
20551    ,xet.entity_code
20552    ,xet.transaction_number
20553    ,xet.event_id
20554    ,xet.event_class_code
20555    ,xet.event_type_code
20556    ,xet.event_number
20557    ,xet.event_date
20558    ,xet.transaction_date
20559    ,xet.reference_num_1
20560    ,xet.reference_num_2
20561    ,xet.reference_num_3
20562    ,xet.reference_num_4
20563    ,xet.reference_char_1
20564    ,xet.reference_char_2
20565    ,xet.reference_char_3
20566    ,xet.reference_char_4
20567    ,xet.reference_date_1
20568    ,xet.reference_date_2
20569    ,xet.reference_date_3
20570    ,xet.reference_date_4
20571    ,xet.event_created_by
20572    ,xet.budgetary_control_flag
20573  , l2.LINE_NUMBER  
20574   , l2.DIST_CODE_COMBINATION_ID    source_5
20575   , l2.DIST_AE_LINE_TYPE_CODE    source_6
20576   , fvl6.meaning   source_6_meaning
20580   FROM xla_events_gt     xet 
20577   , l2.DIST_ID    source_7
20578   , l2.DIST_TYPE    source_8
20579   , l2.DIST_ENTERED_AMOUNT    source_9
20581   , OKL_CMN_EXTRACT_LINE_V  l2
20582   , fnd_lookup_values    fvl6
20583  WHERE xet.event_id between x_first_event_id and x_last_event_id
20584    and xet.event_date between p_pad_start_date and p_pad_end_date
20585    and xet.event_class_code = C_EVENT_CLASS_CODE
20586    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
20587    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
20588   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
20589   AND fvl6.view_application_id(+) = 0
20590   AND fvl6.language(+)            = USERENV('LANG')
20591   ;
20592 
20593 --
20594 BEGIN
20595 IF g_log_enabled THEN
20596    l_log_module := C_DEFAULT_MODULE||'.EventClass_36';
20597 END IF;
20598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20599    trace
20600       (p_msg      => 'BEGIN of EventClass_36'
20601       ,p_level    => C_LEVEL_PROCEDURE
20602       ,p_module   => l_log_module);
20603 END IF;
20604 
20605 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20606    trace
20607       (p_msg      => 'p_application_id = '||p_application_id||
20608                      ' - p_base_ledger_id = '||p_base_ledger_id||
20609                      ' - p_target_ledger_id  = '||p_target_ledger_id||
20610                      ' - p_language = '||p_language||
20611                      ' - p_currency_code = '||p_currency_code||
20612                      ' - p_sla_ledger_id = '||p_sla_ledger_id
20613       ,p_level    => C_LEVEL_STATEMENT
20614       ,p_module   => l_log_module);
20615 END IF;
20616 --
20617 -- initialze arrays
20618 --
20619 g_array_event.DELETE;
20620 l_rec_array_event := l_null_rec_array_event;
20621 --
20622 --------------------------------------
20623 -- 4262811 Initialze MPA Line Number
20624 --------------------------------------
20625 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
20626 
20627 --
20628 
20629 --
20630 OPEN header_cur;
20631 --
20632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20633    trace
20634    (p_msg      => 'SQL - FETCH header_cur'
20635    ,p_level    => C_LEVEL_STATEMENT
20636    ,p_module   => l_log_module);
20637 END IF;
20638 --
20639 LOOP
20640 FETCH header_cur BULK COLLECT INTO
20641         l_array_entity_id
20642       , l_array_legal_entity_id
20643       , l_array_entity_code
20644       , l_array_transaction_num
20645       , l_array_event_id
20646       , l_array_class_code
20647       , l_array_event_type
20648       , l_array_event_number
20649       , l_array_event_date
20650       , l_array_transaction_date
20651       , l_array_reference_num_1
20652       , l_array_reference_num_2
20653       , l_array_reference_num_3
20654       , l_array_reference_num_4
20655       , l_array_reference_char_1
20656       , l_array_reference_char_2
20657       , l_array_reference_char_3
20658       , l_array_reference_char_4
20659       , l_array_reference_date_1
20660       , l_array_reference_date_2
20661       , l_array_reference_date_3
20662       , l_array_reference_date_4
20663       , l_array_event_created_by
20664       , l_array_budgetary_control_flag 
20665       , l_array_source_1
20666       , l_array_source_2
20667       , l_array_source_10
20668       , l_array_source_11
20669       , l_array_source_12
20670       , l_array_source_13
20671       , l_array_source_15
20672       , l_array_source_16
20673       LIMIT l_rows;
20674 --
20675 IF (C_LEVEL_EVENT >= g_log_level) THEN
20676    trace
20677    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
20678    ,p_level    => C_LEVEL_EVENT
20679    ,p_module   => l_log_module);
20680 END IF;
20681 --
20682 EXIT WHEN l_array_entity_id.COUNT = 0;
20683 
20684 -- initialize arrays
20685 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
20686 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
20687 
20688 --
20689 -- Bug 4458708
20690 --
20691 XLA_AE_LINES_PKG.g_LineNumber := 0;
20692 
20693 
20694 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
20695 g_last_hdr_idx := l_array_event_id.LAST;
20696 --
20697 -- loop for the headers. Each iteration is for each header extract row
20698 -- fetched in header cursor
20699 --
20700 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
20701 
20702 --
20703 -- set event info as cache for other routines to refer event attributes
20704 --
20705 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
20706    (p_application_id           => p_application_id
20707    ,p_primary_ledger_id        => p_primary_ledger_id
20708    ,p_base_ledger_id           => p_base_ledger_id
20709    ,p_target_ledger_id         => p_target_ledger_id
20710    ,p_entity_id                => l_array_entity_id(hdr_idx)
20711    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
20712    ,p_entity_code              => l_array_entity_code(hdr_idx)
20713    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
20714    ,p_event_id                 => l_array_event_id(hdr_idx)
20715    ,p_event_class_code         => l_array_class_code(hdr_idx)
20716    ,p_event_type_code          => l_array_event_type(hdr_idx)
20717    ,p_event_number             => l_array_event_number(hdr_idx)
20718    ,p_event_date               => l_array_event_date(hdr_idx)
20719    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
20720    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
20721    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
20722    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
20723    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
20727    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
20724    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
20725    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
20726    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
20728    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
20729    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
20730    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
20731    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
20732    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
20733    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
20734 
20735 --
20736 -- set the status of entry to C_VALID (0)
20737 --
20738 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
20739 
20740 --
20741 -- initialize a row for ae header
20742 --
20743 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
20744 
20745 l_event_id := l_array_event_id(hdr_idx);
20746 
20747 --
20748 -- storing the hdr_idx for event. May be used by line cursor.
20749 --
20750 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
20751 
20752 --
20753 -- store sources from header extract. This can be improved to
20754 -- store only those sources from header extract that may be used in lines
20755 --
20756 
20757 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
20758 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
20759 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
20760 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
20761 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
20762 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
20763 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
20764 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
20765 
20766 --
20767 -- initilaize the status of ae headers for diffrent balance types
20768 -- the status is initialised to C_NOT_CREATED (2)
20769 --
20770 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20771 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20772 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
20773 
20774 --
20775 -- call api to validate and store accounting attributes for header
20776 --
20777 
20778 ------------------------------------------------------------
20779 -- Accrual Reversal : to get date for Standard Source (NONE)
20780 ------------------------------------------------------------
20781 l_acc_rev_gl_date_source := NULL;
20782 
20783      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
20784       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
20785      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
20786       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
20787 
20788 
20789 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
20790 
20791 XLA_AE_HEADER_PKG.SetJeCategoryName;
20792 
20793 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
20794 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
20795 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
20796 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
20797 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
20798 
20799 
20800 --
20801 xla_ae_header_pkg.SetHdrDescription(
20802    p_description => Description_1 (
20803    p_application_id => p_application_id 
20804  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
20805  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
20806    )
20807 );
20808 --
20809 
20810 -- No header level analytical criteria
20811 
20812 --
20813 --accounting attribute enhancement, bug 3612931
20814 --
20815 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
20816 
20817 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
20818    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
20819 
20820    xla_accounting_err_pkg.build_message
20821       (p_appli_s_name            => 'XLA'
20822       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
20823       ,p_token_1                 => 'ACCT_ATTR_NAME'
20824       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
20825       ,p_token_2                 => 'PRODUCT_NAME'
20826       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
20827       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
20828       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
20829       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
20830 
20831 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
20832    --
20833    -- following sets the accounting attributes needed to reverse
20834    -- accounting for a distributeion
20835    --
20836    xla_ae_lines_pkg.SetTrxReversalAttrs
20837       (p_event_id              => l_event_id
20838       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
20839       ,p_trx_reversal_source   => l_trx_reversal_source);
20840 
20841 END IF;
20842 
20843 
20847 --
20844 ----------------------------------------------------------------
20845 -- 4262811 -  update the header statuses to invalid in need be
20846 ----------------------------------------------------------------
20848 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
20849 
20850 
20851   -----------------------------------------------
20852   -- No accrual reversal for the event class/type
20853   -----------------------------------------------
20854 ----------------------------------------------------------------
20855 
20856 --
20857 -- this ends the header loop iteration for one bulk fetch
20858 --
20859 END LOOP;
20860 
20861 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
20862 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
20863 
20864 --
20865 -- insert dummy rows into lines gt table that were created due to
20866 -- transaction reversals
20867 --
20868 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
20869    l_result := XLA_AE_LINES_PKG.InsertLines;
20870 END IF;
20871 
20872 --
20873 -- reset the temp_line_num for each set of events fetched from header
20874 -- cursor rather than doing it for each new event in line cursor
20875 -- Bug 3939231
20876 --
20877 xla_ae_lines_pkg.g_temp_line_num := 0;
20878 
20879 
20880 
20881 --
20882 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
20883 --
20884 --
20885 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20886 
20887       trace
20888          (p_msg      => 'SQL - FETCH line_cur'
20889          ,p_level    => C_LEVEL_STATEMENT
20890          ,p_module   => l_log_module);
20891 
20892 END IF;
20893 --
20894 --
20895 LOOP
20896   --
20897   FETCH line_cur BULK COLLECT INTO
20898         l_array_entity_id
20899       , l_array_legal_entity_id
20900       , l_array_entity_code
20901       , l_array_transaction_num
20902       , l_array_event_id
20903       , l_array_class_code
20904       , l_array_event_type
20905       , l_array_event_number
20906       , l_array_event_date
20907       , l_array_transaction_date
20908       , l_array_reference_num_1
20909       , l_array_reference_num_2
20910       , l_array_reference_num_3
20911       , l_array_reference_num_4
20912       , l_array_reference_char_1
20913       , l_array_reference_char_2
20914       , l_array_reference_char_3
20915       , l_array_reference_char_4
20916       , l_array_reference_date_1
20917       , l_array_reference_date_2
20918       , l_array_reference_date_3
20919       , l_array_reference_date_4
20920       , l_array_event_created_by
20921       , l_array_budgetary_control_flag
20922       , l_array_extract_line_num 
20923       , l_array_source_5
20924       , l_array_source_6
20925       , l_array_source_6_meaning
20926       , l_array_source_7
20927       , l_array_source_8
20928       , l_array_source_9
20929       LIMIT l_rows;
20930 
20931   --
20932   IF (C_LEVEL_EVENT >= g_log_level) THEN
20933             trace
20934                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
20935                ,p_level    => C_LEVEL_EVENT
20936                ,p_module   => l_log_module);
20937   END IF;
20938   --
20939   EXIT WHEN l_array_entity_id.count = 0;
20940 
20941   XLA_AE_LINES_PKG.g_rec_lines := null;
20942 
20943 --
20944 -- Bug 4458708
20945 --
20946 XLA_AE_LINES_PKG.g_LineNumber := 0;
20947 --
20948 --
20949 
20950 FOR Idx IN 1..l_array_event_id.count LOOP
20951    --
20952    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
20953    --
20954    l_event_id := l_array_event_id(idx);  -- 5648433
20955 
20956    --
20957    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
20958    --
20959 
20960    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
20961              (g_array_event(l_event_id).array_value_num('header_index'))
20962          ,'N'
20963          ) <> 'Y'
20964    THEN
20965       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20966          trace
20967             (p_msg      => 'Trancaction revesal option is not Y '
20968             ,p_level    => C_LEVEL_STATEMENT
20969             ,p_module   => l_log_module);
20970       END IF;
20971 
20972 --
20973 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
20974 --
20975 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
20976 --
20977 -- set event info as cache for other routines to refer event attributes
20978 --
20979 
20980 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
20981    l_previous_event_id := l_event_id;
20982 
20983    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
20984       (p_application_id           => p_application_id
20985       ,p_primary_ledger_id        => p_primary_ledger_id
20986       ,p_base_ledger_id           => p_base_ledger_id
20987       ,p_target_ledger_id         => p_target_ledger_id
20988       ,p_entity_id                => l_array_entity_id(Idx)
20989       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
20990       ,p_entity_code              => l_array_entity_code(Idx)
20991       ,p_transaction_num          => l_array_transaction_num(Idx)
20992       ,p_event_id                 => l_array_event_id(Idx)
20993       ,p_event_class_code         => l_array_class_code(Idx)
20994       ,p_event_type_code          => l_array_event_type(Idx)
20995       ,p_event_number             => l_array_event_number(Idx)
20996       ,p_event_date               => l_array_event_date(Idx)
20997       ,p_transaction_date         => l_array_transaction_date(Idx)
21001       ,p_reference_num_4          => l_array_reference_num_4(Idx)
20998       ,p_reference_num_1          => l_array_reference_num_1(Idx)
20999       ,p_reference_num_2          => l_array_reference_num_2(Idx)
21000       ,p_reference_num_3          => l_array_reference_num_3(Idx)
21002       ,p_reference_char_1         => l_array_reference_char_1(Idx)
21003       ,p_reference_char_2         => l_array_reference_char_2(Idx)
21004       ,p_reference_char_3         => l_array_reference_char_3(Idx)
21005       ,p_reference_char_4         => l_array_reference_char_4(Idx)
21006       ,p_reference_date_1         => l_array_reference_date_1(Idx)
21007       ,p_reference_date_2         => l_array_reference_date_2(Idx)
21008       ,p_reference_date_3         => l_array_reference_date_3(Idx)
21009       ,p_reference_date_4         => l_array_reference_date_4(Idx)
21010       ,p_event_created_by         => l_array_event_created_by(Idx)
21011       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
21012        --
21013 END IF;
21014 
21015 
21016 
21017 --
21018 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
21019 
21020 l_acct_reversal_source := SUBSTR(NULL, 1,30);
21021 
21022 IF l_continue_with_lines THEN
21023    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
21024       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
21025 
21026       xla_accounting_err_pkg.build_message
21027          (p_appli_s_name            => 'XLA'
21028          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
21029          ,p_token_1                 => 'LINE_NUMBER'
21030          ,p_value_1                 => l_array_extract_line_num(Idx)
21031          ,p_token_2                 => 'PRODUCT_NAME'
21032          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
21033          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
21034          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
21035          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
21036 
21037    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
21038       --
21039       -- following sets the accounting attributes needed to reverse
21040       -- accounting for a distributeion
21041       --
21042 
21043       --
21044       -- 5217187
21045       --
21046       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
21047       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
21048                                        g_array_event(l_event_id).array_value_num('header_index'));
21049       --
21050       --
21051 
21052       -- No reversal code generated
21053 
21054       xla_ae_lines_pkg.SetAcctReversalAttrs
21055          (p_event_id             => l_event_id
21056          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
21057          ,p_calculate_acctd_flag => l_calculate_acctd_flag
21058          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
21059    END IF;
21060 
21061    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
21062        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
21063 
21064 --
21065 AcctLineType_12 (
21066  p_application_id  => p_application_id
21067  ,p_event_id     => l_event_id
21068  ,p_calculate_acctd_flag => l_calculate_acctd_flag
21069  ,p_calculate_g_l_flag => l_calculate_g_l_flag
21070  ,p_actual_flag => l_actual_flag
21071  ,p_balance_type_code => l_balance_type_code
21072  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
21073  
21074  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
21075  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
21076  , p_source_5 => l_array_source_5(Idx)
21077  , p_source_6 => l_array_source_6(Idx)
21078  , p_source_6_meaning => l_array_source_6_meaning(Idx)
21079  , p_source_7 => l_array_source_7(Idx)
21080  , p_source_8 => l_array_source_8(Idx)
21081  , p_source_9 => l_array_source_9(Idx)
21082  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
21083  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
21084  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
21085  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
21086  );
21087 If(l_balance_type_code = 'A') THEN
21088   l_actual_gain_loss_ref := l_gain_or_loss_ref;
21089 END IF;
21090 
21091 --
21092 
21093 
21094 --
21095 AcctLineType_13 (
21096  p_application_id  => p_application_id
21097  ,p_event_id     => l_event_id
21098  ,p_calculate_acctd_flag => l_calculate_acctd_flag
21099  ,p_calculate_g_l_flag => l_calculate_g_l_flag
21100  ,p_actual_flag => l_actual_flag
21101  ,p_balance_type_code => l_balance_type_code
21102  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
21103  
21104  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
21105  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
21106  , p_source_5 => l_array_source_5(Idx)
21107  , p_source_6 => l_array_source_6(Idx)
21108  , p_source_6_meaning => l_array_source_6_meaning(Idx)
21109  , p_source_7 => l_array_source_7(Idx)
21110  , p_source_8 => l_array_source_8(Idx)
21111  , p_source_9 => l_array_source_9(Idx)
21112  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
21113  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
21114  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
21115  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
21116  );
21117 If(l_balance_type_code = 'A') THEN
21118   l_actual_gain_loss_ref := l_gain_or_loss_ref;
21119 END IF;
21120 
21121 --
21122 
21123       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
21127             (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'))
21124       -- or secondary ledger that has different currency with primary
21125       -- or alc that is calculated by sla
21126       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
21128 
21129 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
21130 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
21131           AND (l_actual_flag = 'A')) THEN
21132         XLA_AE_LINES_PKG.CreateGainOrLossLines(
21133           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
21134          ,p_application_id   => p_application_id
21135          ,p_amb_context_code => 'DEFAULT'
21136          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
21137          ,p_event_class_code => C_EVENT_CLASS_CODE
21138          ,p_event_type_code  => C_EVENT_TYPE_CODE
21139          
21140          ,p_gain_ccid        => -1
21141          ,p_loss_ccid        => -1
21142 
21143          ,p_actual_flag      => l_actual_flag
21144          ,p_enc_flag         => null
21145          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
21146          ,p_enc_g_l_ref      => null
21147          );
21148       END IF;
21149    END IF;
21150 END IF;
21151 
21152    ELSE
21153       --
21154       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
21155       --
21156       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21157          trace
21158             (p_msg      => 'Trancaction revesal option is Y'
21159             ,p_level    => C_LEVEL_STATEMENT
21160             ,p_module   => l_log_module);
21161       END IF;
21162    END IF;
21163 
21164 END LOOP;
21165 l_result := XLA_AE_LINES_PKG.InsertLines ;
21166 end loop;
21167 close line_cur;
21168 
21169 
21170 --
21171 -- insert headers into xla_ae_headers_gt table
21172 --
21173 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
21174 
21175 -- insert into errors table here.
21176 
21177 END LOOP;
21178 
21179 --
21180 -- 4865292
21181 --
21182 -- Compare g_hdr_extract_count with event count in
21183 -- CreateHeadersAndLines.
21184 --
21185 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
21186 
21187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21188    trace (p_msg     => '# rows extracted from header extract objects '
21189                     || ' (running total): '
21190                     || g_hdr_extract_count
21191          ,p_level   => C_LEVEL_STATEMENT
21192          ,p_module  => l_log_module);
21193 END IF;
21194 
21195 CLOSE header_cur;
21196 --
21197 
21198 --
21199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21200    trace
21201       (p_msg      => 'END of EventClass_36'
21202       ,p_level    => C_LEVEL_PROCEDURE
21203       ,p_module   => l_log_module);
21204 END IF;
21205 --
21206 RETURN l_result;
21207 EXCEPTION
21208 WHEN xla_exceptions_pkg.application_exception THEN
21209    
21210 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
21211 
21212    
21213 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
21214 
21215    RAISE;
21216 WHEN OTHERS THEN
21217    xla_exceptions_pkg.raise_message
21218       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_36');
21219 END EventClass_36;
21220 --
21221 
21222 ---------------------------------------
21223 --
21224 -- PRIVATE PROCEDURE
21225 --         insert_sources_37
21226 --
21227 ----------------------------------------
21228 --
21229 PROCEDURE insert_sources_37(
21230                                 p_target_ledger_id       IN NUMBER
21231                               , p_language               IN VARCHAR2
21232                               , p_sla_ledger_id          IN NUMBER
21233                               , p_pad_start_date         IN DATE
21234                               , p_pad_end_date           IN DATE
21235                          )
21236 IS
21237 
21238 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVESTOR_ALL';
21239 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVESTOR';
21240 p_apps_owner                   VARCHAR2(30);
21241 l_log_module                   VARCHAR2(240);
21242 BEGIN
21243 IF g_log_enabled THEN
21244       l_log_module := C_DEFAULT_MODULE||'.insert_sources_37';
21245 END IF;
21246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21247 
21248       trace
21249          (p_msg      => 'BEGIN of insert_sources_37'
21250          ,p_level    => C_LEVEL_PROCEDURE
21251          ,p_module   => l_log_module);
21252 
21253 END IF;
21254 
21255 -- select APPS owner
21256 SELECT oracle_username
21257   INTO p_apps_owner
21258   FROM fnd_oracle_userid
21259  WHERE read_only_flag = 'U'
21260 ;
21261 
21262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21263       trace
21264          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
21265                         ' - p_language = '||p_language||
21266                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
21267                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
21268                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
21269                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
21270          ,p_level    => C_LEVEL_STATEMENT
21271          ,p_module   => l_log_module);
21272 END IF;
21273 
21274 
21275 --
21276 INSERT INTO xla_diag_sources --hdr2
21277 (
21278         event_id
21279       , ledger_id
21280       , sla_ledger_id
21281       , description_language
21285       , source_application_id
21282       , object_name
21283       , object_type_code
21284       , line_number
21286       , source_type_code
21287       , source_code
21288       , source_value
21289       , source_meaning
21290       , created_by
21291       , creation_date
21292       , last_update_date
21293       , last_updated_by
21294       , last_update_login
21295       , program_update_date
21296       , program_application_id
21297       , program_id
21298       , request_id
21299 )
21300 SELECT
21301         event_id
21302       , p_target_ledger_id
21303       , p_sla_ledger_id
21304       , p_language
21305       , object_name
21306       , object_type_code
21307       , line_number
21308       , source_application_id
21309       , source_type_code
21310       , source_code
21311       , SUBSTR(source_value ,1,1996)
21312       , SUBSTR(source_meaning ,1,200)
21313       , xla_environment_pkg.g_Usr_Id
21314       , TRUNC(SYSDATE)
21315       , TRUNC(SYSDATE)
21316       , xla_environment_pkg.g_Usr_Id
21317       , xla_environment_pkg.g_Login_Id
21318       , TRUNC(SYSDATE)
21319       , xla_environment_pkg.g_Prog_Appl_Id
21320       , xla_environment_pkg.g_Prog_Id
21321       , xla_environment_pkg.g_Req_Id
21322   FROM (
21323        SELECT xet.event_id                  event_id
21324             , 0                          line_number
21325             , CASE r
21326                WHEN 1 THEN 'OKL_IA_EXTRACT_HDR_V' 
21327                 WHEN 2 THEN 'OKL_IA_EXTRACT_HDR_V' 
21328                 WHEN 3 THEN 'OKL_IA_EXTRACT_HDR_V' 
21329                 WHEN 4 THEN 'OKL_IA_EXTRACT_HDR_V' 
21330                 WHEN 5 THEN 'OKL_IA_EXTRACT_HDR_V' 
21331                 WHEN 6 THEN 'OKL_IA_EXTRACT_HDR_V' 
21332                 WHEN 7 THEN 'OKL_IA_EXTRACT_HDR_V' 
21333                 WHEN 8 THEN 'OKL_IA_EXTRACT_HDR_V' 
21334                 
21335                ELSE null
21336               END                           object_name
21337             , CASE r
21338                 WHEN 1 THEN 'HEADER' 
21339                 WHEN 2 THEN 'HEADER' 
21340                 WHEN 3 THEN 'HEADER' 
21341                 WHEN 4 THEN 'HEADER' 
21342                 WHEN 5 THEN 'HEADER' 
21343                 WHEN 6 THEN 'HEADER' 
21344                 WHEN 7 THEN 'HEADER' 
21345                 WHEN 8 THEN 'HEADER' 
21346                 
21347                 ELSE null
21348               END                           object_type_code
21349             , CASE r
21350                 WHEN 1 THEN '540' 
21351                 WHEN 2 THEN '540' 
21352                 WHEN 3 THEN '540' 
21353                 WHEN 4 THEN '540' 
21354                 WHEN 5 THEN '540' 
21355                 WHEN 6 THEN '540' 
21356                 WHEN 7 THEN '540' 
21357                 WHEN 8 THEN '540' 
21358                 
21359                 ELSE null
21360               END                           source_application_id
21361             , 'S'             source_type_code
21362             , CASE r
21363                 WHEN 1 THEN 'TEH_INV_AGRMNT_NUMBER' 
21364                 WHEN 2 THEN 'TCN_INV_AGRMNT_PRODUCT_NAME' 
21365                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
21366                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
21367                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
21368                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
21369                 WHEN 7 THEN 'GL_DATE' 
21370                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
21371                 
21372                 ELSE null
21373               END                           source_code
21374             , CASE r
21375                 WHEN 1 THEN TO_CHAR(h2.TEH_INV_AGRMNT_NUMBER)
21376                 WHEN 2 THEN TO_CHAR(h2.TCN_INV_AGRMNT_PRODUCT_NAME)
21377                 WHEN 3 THEN TO_CHAR(h2.TCN_CURRENCY_CODE)
21378                 WHEN 4 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_DATE)
21379                 WHEN 5 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_RATE)
21380                 WHEN 6 THEN TO_CHAR(h2.TCN_CURR_CONVERSION_TYPE)
21381                 WHEN 7 THEN TO_CHAR(h2.GL_DATE)
21382                 WHEN 8 THEN TO_CHAR(h2.TCN_ACCOUNTING_REVERSAL_FLAG)
21383                 
21384                 ELSE null
21385               END                           source_value
21386             , null              source_meaning
21387          FROM xla_events_gt     xet  
21388       , OKL_IA_EXTRACT_HDR_V  h2
21389              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
21390          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21391            AND xet.event_class_code = C_EVENT_CLASS_CODE
21392               AND h2.event_id = xet.event_id
21393 
21394 )
21395 ;
21396 --
21397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21398 
21399       trace
21400          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
21401          ,p_level    => C_LEVEL_STATEMENT
21402          ,p_module   => l_log_module);
21403 
21404 END IF;
21405 --
21406 
21407 
21408 
21409 --
21410 INSERT INTO xla_diag_sources  --line2
21411 (
21412         event_id
21413       , ledger_id
21414       , sla_ledger_id
21415       , description_language
21416       , object_name
21417       , object_type_code
21418       , line_number
21419       , source_application_id
21420       , source_type_code
21421       , source_code
21422       , source_value
21423       , source_meaning
21424       , created_by
21425       , creation_date
21426       , last_update_date
21427       , last_updated_by
21428       , last_update_login
21429       , program_update_date
21430       , program_application_id
21431       , program_id
21432       , request_id
21436       , p_sla_ledger_id
21433 )
21434 SELECT  event_id
21435       , p_target_ledger_id
21437       , p_language
21438       , object_name
21439       , object_type_code
21440       , line_number
21441       , source_application_id
21442       , source_type_code
21443       , source_code
21444       , SUBSTR(source_value,1,1996)
21445       , SUBSTR(source_meaning ,1,200)
21446       , xla_environment_pkg.g_Usr_Id
21447       , TRUNC(SYSDATE)
21448       , TRUNC(SYSDATE)
21449       , xla_environment_pkg.g_Usr_Id
21450       , xla_environment_pkg.g_Login_Id
21451       , TRUNC(SYSDATE)
21452       , xla_environment_pkg.g_Prog_Appl_Id
21453       , xla_environment_pkg.g_Prog_Id
21454       , xla_environment_pkg.g_Req_Id
21455   FROM (
21456        SELECT xet.event_id                  event_id
21457             , l1.line_number                 line_number
21458             , CASE r
21459                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
21460                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
21461                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
21462                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
21463                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
21464                 
21465                ELSE null
21466               END                           object_name
21467             , CASE r
21468                 WHEN 1 THEN 'LINE' 
21469                 WHEN 2 THEN 'LINE' 
21470                 WHEN 3 THEN 'LINE' 
21471                 WHEN 4 THEN 'LINE' 
21472                 WHEN 5 THEN 'LINE' 
21473                 
21474                 ELSE null
21475               END                           object_type_code
21476             , CASE r
21477                 WHEN 1 THEN '540' 
21478                 WHEN 2 THEN '540' 
21479                 WHEN 3 THEN '540' 
21480                 WHEN 4 THEN '540' 
21481                 WHEN 5 THEN '540' 
21482                 
21483                 ELSE null
21484               END                           source_application_id
21485             , 'S'             source_type_code
21486             , CASE r
21487                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
21488                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
21489                 WHEN 3 THEN 'DIST_ID' 
21490                 WHEN 4 THEN 'DIST_TYPE' 
21491                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
21492                 
21493                 ELSE null
21494               END                           source_code
21495             , CASE r
21496                 WHEN 1 THEN TO_CHAR(l1.DIST_CODE_COMBINATION_ID)
21497                 WHEN 2 THEN TO_CHAR(l1.DIST_AE_LINE_TYPE_CODE)
21498                 WHEN 3 THEN TO_CHAR(l1.DIST_ID)
21499                 WHEN 4 THEN TO_CHAR(l1.DIST_TYPE)
21500                 WHEN 5 THEN TO_CHAR(l1.DIST_ENTERED_AMOUNT)
21501                 
21502                 ELSE null
21503               END                           source_value
21504             , CASE r
21505                 WHEN 2 THEN fvl6.meaning
21506                 
21507                 ELSE null
21508               END               source_meaning
21509          FROM  xla_events_gt     xet  
21510         , OKL_CMN_EXTRACT_LINE_V  l1
21511   , fnd_lookup_values    fvl6
21512             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
21513         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21514           AND xet.event_class_code = C_EVENT_CLASS_CODE
21515             AND l1.event_id          = xet.event_id
21516    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
21517   AND fvl6.lookup_code(+)         = l1.DIST_AE_LINE_TYPE_CODE
21518   AND fvl6.view_application_id(+) = 0
21519   AND fvl6.language(+)            = USERENV('LANG')
21520   
21521 )
21522 ;
21523 --
21524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21525 
21526       trace
21527          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
21528          ,p_level    => C_LEVEL_STATEMENT
21529          ,p_module   => l_log_module);
21530 
21531 END IF;
21532 
21533 
21534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21535       trace
21536          (p_msg      => 'END of insert_sources_37'
21537          ,p_level    => C_LEVEL_PROCEDURE
21538          ,p_module   => l_log_module);
21539 END IF;
21540 EXCEPTION
21541   WHEN xla_exceptions_pkg.application_exception THEN
21542       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21543             trace
21544                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21545                ,p_level    => C_LEVEL_EXCEPTION
21546                ,p_module   => l_log_module);
21547       END IF;
21548       RAISE;
21549   WHEN OTHERS THEN
21550       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21551             trace
21552                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21553                ,p_level    => C_LEVEL_EXCEPTION
21554                ,p_module   => l_log_module);
21555        END IF;
21556        xla_exceptions_pkg.raise_message
21557            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_37');
21558 END insert_sources_37;
21559 --
21560 
21561 ---------------------------------------
21562 --
21563 -- PRIVATE FUNCTION
21564 --         EventClass_37
21565 --
21566 ----------------------------------------
21567 --
21568 FUNCTION EventClass_37
21569        (p_application_id         IN NUMBER
21570        ,p_base_ledger_id         IN NUMBER
21571        ,p_target_ledger_id       IN NUMBER
21572        ,p_language               IN VARCHAR2
21573        ,p_currency_code          IN VARCHAR2
21574        ,p_sla_ledger_id          IN NUMBER
21575        ,p_pad_start_date         IN DATE
21576        ,p_pad_end_date           IN DATE
21580 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVESTOR_ALL';
21577        ,p_primary_ledger_id      IN NUMBER)
21578 RETURN BOOLEAN IS
21579 --
21581 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVESTOR';
21582 
21583 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
21584 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
21585 --
21586 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21587 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21588 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21589 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21590 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21591 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21592 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21593 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21594 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21595 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21596 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21597 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21598 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21599 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21600 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21601 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21602 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21603 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21604 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21605 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21606 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21607 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21608 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
21609 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21610 
21611 l_event_id                             NUMBER;
21612 l_previous_event_id                    NUMBER;
21613 l_first_event_id                       NUMBER;
21614 l_last_event_id                        NUMBER;
21615 
21616 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
21617 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
21618 --
21619 --
21620 l_result                    BOOLEAN := TRUE;
21621 l_rows                      NUMBER  := 1000;
21622 l_event_type_name           VARCHAR2(80) := 'All';
21623 l_event_class_name          VARCHAR2(80) := 'Investor';
21624 l_description               VARCHAR2(4000);
21625 l_transaction_reversal      NUMBER;
21626 l_ae_header_id              NUMBER;
21627 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
21628 l_log_module                VARCHAR2(240);
21629 --
21630 l_acct_reversal_source      VARCHAR2(30);
21631 l_trx_reversal_source       VARCHAR2(30);
21632 
21633 l_continue_with_lines       BOOLEAN := TRUE;
21634 --
21635 l_acc_rev_gl_date_source    DATE;                      -- 4262811
21636 --
21637 type t_array_event_id is table of number index by binary_integer;
21638 
21639 l_rec_array_event                    t_rec_array_event;
21640 l_null_rec_array_event               t_rec_array_event;
21641 l_array_ae_header_id                 xla_number_array_type;
21642 l_actual_flag                        VARCHAR2(1) := NULL;
21643 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
21644 l_balance_type_code                  VARCHAR2(1) :=NULL;
21645 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
21646 
21647 --
21648 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
21649 --
21650 
21651 TYPE t_array_source_3 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TEH_INV_AGRMNT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
21652 TYPE t_array_source_4 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_INV_AGRMNT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
21653 TYPE t_array_source_10 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
21654 TYPE t_array_source_11 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
21655 TYPE t_array_source_12 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
21656 TYPE t_array_source_13 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
21657 TYPE t_array_source_15 IS TABLE OF OKL_IA_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
21658 TYPE t_array_source_16 IS TABLE OF OKL_IA_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
21659 
21660 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
21661 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
21662 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
21663 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
21664 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
21665 
21666 l_array_source_3              t_array_source_3;
21667 l_array_source_4              t_array_source_4;
21668 l_array_source_10              t_array_source_10;
21669 l_array_source_11              t_array_source_11;
21670 l_array_source_12              t_array_source_12;
21671 l_array_source_13              t_array_source_13;
21672 l_array_source_15              t_array_source_15;
21673 l_array_source_16              t_array_source_16;
21674 
21675 l_array_source_5      t_array_source_5;
21676 l_array_source_6      t_array_source_6;
21677 l_array_source_6_meaning      t_array_lookup_meaning;
21678 l_array_source_7      t_array_source_7;
21682 --
21679 l_array_source_8      t_array_source_8;
21680 l_array_source_9      t_array_source_9;
21681 
21683 CURSOR header_cur
21684 IS
21685 SELECT /*+ leading(xet) cardinality(xet,1) */
21686 -- Event Class Code: INVESTOR
21687     xet.entity_id
21688    ,xet.legal_entity_id
21689    ,xet.entity_code
21690    ,xet.transaction_number
21691    ,xet.event_id
21692    ,xet.event_class_code
21693    ,xet.event_type_code
21694    ,xet.event_number
21695    ,xet.event_date
21696    ,xet.transaction_date
21697    ,xet.reference_num_1
21698    ,xet.reference_num_2
21699    ,xet.reference_num_3
21700    ,xet.reference_num_4
21701    ,xet.reference_char_1
21702    ,xet.reference_char_2
21703    ,xet.reference_char_3
21704    ,xet.reference_char_4
21705    ,xet.reference_date_1
21706    ,xet.reference_date_2
21707    ,xet.reference_date_3
21708    ,xet.reference_date_4
21709    ,xet.event_created_by
21710    ,xet.budgetary_control_flag 
21711   , h2.TEH_INV_AGRMNT_NUMBER    source_3
21712   , h2.TCN_INV_AGRMNT_PRODUCT_NAME    source_4
21713   , h2.TCN_CURRENCY_CODE    source_10
21714   , h2.TCN_CURR_CONVERSION_DATE    source_11
21715   , h2.TCN_CURR_CONVERSION_RATE    source_12
21716   , h2.TCN_CURR_CONVERSION_TYPE    source_13
21717   , h2.GL_DATE    source_15
21718   , h2.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
21719   FROM xla_events_gt     xet 
21720   , OKL_IA_EXTRACT_HDR_V  h2
21721  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
21722    and xet.event_class_code = C_EVENT_CLASS_CODE
21723    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
21724 
21725  ORDER BY event_id
21726 ;
21727 
21728 
21729 --
21730 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
21731 IS
21732 SELECT  /*+ leading(xet) cardinality(xet,1) */
21733 -- Event Class Code: INVESTOR
21734     xet.entity_id
21735    ,xet.legal_entity_id
21736    ,xet.entity_code
21737    ,xet.transaction_number
21738    ,xet.event_id
21739    ,xet.event_class_code
21740    ,xet.event_type_code
21741    ,xet.event_number
21742    ,xet.event_date
21743    ,xet.transaction_date
21744    ,xet.reference_num_1
21745    ,xet.reference_num_2
21746    ,xet.reference_num_3
21747    ,xet.reference_num_4
21748    ,xet.reference_char_1
21749    ,xet.reference_char_2
21750    ,xet.reference_char_3
21751    ,xet.reference_char_4
21752    ,xet.reference_date_1
21753    ,xet.reference_date_2
21754    ,xet.reference_date_3
21755    ,xet.reference_date_4
21756    ,xet.event_created_by
21757    ,xet.budgetary_control_flag
21758  , l1.LINE_NUMBER  
21759   , l1.DIST_CODE_COMBINATION_ID    source_5
21760   , l1.DIST_AE_LINE_TYPE_CODE    source_6
21761   , fvl6.meaning   source_6_meaning
21762   , l1.DIST_ID    source_7
21763   , l1.DIST_TYPE    source_8
21764   , l1.DIST_ENTERED_AMOUNT    source_9
21765   FROM xla_events_gt     xet 
21766   , OKL_CMN_EXTRACT_LINE_V  l1
21767   , fnd_lookup_values    fvl6
21768  WHERE xet.event_id between x_first_event_id and x_last_event_id
21769    and xet.event_date between p_pad_start_date and p_pad_end_date
21770    and xet.event_class_code = C_EVENT_CLASS_CODE
21771    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
21772    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
21773   AND fvl6.lookup_code(+)         = l1.DIST_AE_LINE_TYPE_CODE
21774   AND fvl6.view_application_id(+) = 0
21775   AND fvl6.language(+)            = USERENV('LANG')
21776   ;
21777 
21778 --
21779 BEGIN
21780 IF g_log_enabled THEN
21781    l_log_module := C_DEFAULT_MODULE||'.EventClass_37';
21782 END IF;
21783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21784    trace
21785       (p_msg      => 'BEGIN of EventClass_37'
21786       ,p_level    => C_LEVEL_PROCEDURE
21787       ,p_module   => l_log_module);
21788 END IF;
21789 
21790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21791    trace
21792       (p_msg      => 'p_application_id = '||p_application_id||
21793                      ' - p_base_ledger_id = '||p_base_ledger_id||
21794                      ' - p_target_ledger_id  = '||p_target_ledger_id||
21795                      ' - p_language = '||p_language||
21796                      ' - p_currency_code = '||p_currency_code||
21797                      ' - p_sla_ledger_id = '||p_sla_ledger_id
21798       ,p_level    => C_LEVEL_STATEMENT
21799       ,p_module   => l_log_module);
21800 END IF;
21801 --
21802 -- initialze arrays
21803 --
21804 g_array_event.DELETE;
21805 l_rec_array_event := l_null_rec_array_event;
21806 --
21807 --------------------------------------
21808 -- 4262811 Initialze MPA Line Number
21809 --------------------------------------
21810 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
21811 
21812 --
21813 
21814 --
21815 OPEN header_cur;
21816 --
21817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21818    trace
21819    (p_msg      => 'SQL - FETCH header_cur'
21820    ,p_level    => C_LEVEL_STATEMENT
21821    ,p_module   => l_log_module);
21822 END IF;
21823 --
21824 LOOP
21825 FETCH header_cur BULK COLLECT INTO
21826         l_array_entity_id
21827       , l_array_legal_entity_id
21828       , l_array_entity_code
21829       , l_array_transaction_num
21830       , l_array_event_id
21831       , l_array_class_code
21832       , l_array_event_type
21833       , l_array_event_number
21834       , l_array_event_date
21835       , l_array_transaction_date
21836       , l_array_reference_num_1
21837       , l_array_reference_num_2
21838       , l_array_reference_num_3
21839       , l_array_reference_num_4
21840       , l_array_reference_char_1
21841       , l_array_reference_char_2
21845       , l_array_reference_date_2
21842       , l_array_reference_char_3
21843       , l_array_reference_char_4
21844       , l_array_reference_date_1
21846       , l_array_reference_date_3
21847       , l_array_reference_date_4
21848       , l_array_event_created_by
21849       , l_array_budgetary_control_flag 
21850       , l_array_source_3
21851       , l_array_source_4
21852       , l_array_source_10
21853       , l_array_source_11
21854       , l_array_source_12
21855       , l_array_source_13
21856       , l_array_source_15
21857       , l_array_source_16
21858       LIMIT l_rows;
21859 --
21860 IF (C_LEVEL_EVENT >= g_log_level) THEN
21861    trace
21862    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
21863    ,p_level    => C_LEVEL_EVENT
21864    ,p_module   => l_log_module);
21865 END IF;
21866 --
21867 EXIT WHEN l_array_entity_id.COUNT = 0;
21868 
21869 -- initialize arrays
21870 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
21871 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
21872 
21873 --
21874 -- Bug 4458708
21875 --
21876 XLA_AE_LINES_PKG.g_LineNumber := 0;
21877 
21878 
21879 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
21880 g_last_hdr_idx := l_array_event_id.LAST;
21881 --
21882 -- loop for the headers. Each iteration is for each header extract row
21883 -- fetched in header cursor
21884 --
21885 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
21886 
21887 --
21888 -- set event info as cache for other routines to refer event attributes
21889 --
21890 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
21891    (p_application_id           => p_application_id
21892    ,p_primary_ledger_id        => p_primary_ledger_id
21893    ,p_base_ledger_id           => p_base_ledger_id
21894    ,p_target_ledger_id         => p_target_ledger_id
21895    ,p_entity_id                => l_array_entity_id(hdr_idx)
21896    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
21897    ,p_entity_code              => l_array_entity_code(hdr_idx)
21898    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
21899    ,p_event_id                 => l_array_event_id(hdr_idx)
21900    ,p_event_class_code         => l_array_class_code(hdr_idx)
21901    ,p_event_type_code          => l_array_event_type(hdr_idx)
21902    ,p_event_number             => l_array_event_number(hdr_idx)
21903    ,p_event_date               => l_array_event_date(hdr_idx)
21904    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
21905    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
21906    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
21907    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
21908    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
21909    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
21910    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
21911    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
21912    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
21913    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
21914    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
21915    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
21916    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
21917    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
21918    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
21919 
21920 --
21921 -- set the status of entry to C_VALID (0)
21922 --
21923 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
21924 
21925 --
21926 -- initialize a row for ae header
21927 --
21928 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
21929 
21930 l_event_id := l_array_event_id(hdr_idx);
21931 
21932 --
21933 -- storing the hdr_idx for event. May be used by line cursor.
21934 --
21935 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
21936 
21937 --
21938 -- store sources from header extract. This can be improved to
21939 -- store only those sources from header extract that may be used in lines
21940 --
21941 
21942 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
21943 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
21944 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
21945 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
21946 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
21947 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
21948 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
21949 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
21950 
21951 --
21952 -- initilaize the status of ae headers for diffrent balance types
21953 -- the status is initialised to C_NOT_CREATED (2)
21954 --
21955 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21956 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21957 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21958 
21959 --
21960 -- call api to validate and store accounting attributes for header
21961 --
21962 
21963 ------------------------------------------------------------
21964 -- Accrual Reversal : to get date for Standard Source (NONE)
21965 ------------------------------------------------------------
21966 l_acc_rev_gl_date_source := NULL;
21967 
21968      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
21972 
21969       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
21970      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
21971       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
21973 
21974 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
21975 
21976 XLA_AE_HEADER_PKG.SetJeCategoryName;
21977 
21978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
21979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
21980 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
21981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
21982 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
21983 
21984 
21985 --
21986 xla_ae_header_pkg.SetHdrDescription(
21987    p_description => Description_2 (
21988    p_application_id => p_application_id 
21989  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
21990  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
21991    )
21992 );
21993 --
21994 
21995 -- No header level analytical criteria
21996 
21997 --
21998 --accounting attribute enhancement, bug 3612931
21999 --
22000 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
22001 
22002 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
22003    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
22004 
22005    xla_accounting_err_pkg.build_message
22006       (p_appli_s_name            => 'XLA'
22007       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
22008       ,p_token_1                 => 'ACCT_ATTR_NAME'
22009       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
22010       ,p_token_2                 => 'PRODUCT_NAME'
22011       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22012       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22013       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
22014       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22015 
22016 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
22017    --
22018    -- following sets the accounting attributes needed to reverse
22019    -- accounting for a distributeion
22020    --
22021    xla_ae_lines_pkg.SetTrxReversalAttrs
22022       (p_event_id              => l_event_id
22023       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
22024       ,p_trx_reversal_source   => l_trx_reversal_source);
22025 
22026 END IF;
22027 
22028 
22029 ----------------------------------------------------------------
22030 -- 4262811 -  update the header statuses to invalid in need be
22031 ----------------------------------------------------------------
22032 --
22033 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
22034 
22035 
22036   -----------------------------------------------
22037   -- No accrual reversal for the event class/type
22038   -----------------------------------------------
22039 ----------------------------------------------------------------
22040 
22041 --
22042 -- this ends the header loop iteration for one bulk fetch
22043 --
22044 END LOOP;
22045 
22046 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
22047 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
22048 
22049 --
22050 -- insert dummy rows into lines gt table that were created due to
22051 -- transaction reversals
22052 --
22053 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
22054    l_result := XLA_AE_LINES_PKG.InsertLines;
22055 END IF;
22056 
22057 --
22058 -- reset the temp_line_num for each set of events fetched from header
22059 -- cursor rather than doing it for each new event in line cursor
22060 -- Bug 3939231
22061 --
22062 xla_ae_lines_pkg.g_temp_line_num := 0;
22063 
22064 
22065 
22066 --
22067 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
22068 --
22069 --
22070 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22071 
22072       trace
22073          (p_msg      => 'SQL - FETCH line_cur'
22074          ,p_level    => C_LEVEL_STATEMENT
22075          ,p_module   => l_log_module);
22076 
22077 END IF;
22078 --
22079 --
22080 LOOP
22081   --
22082   FETCH line_cur BULK COLLECT INTO
22083         l_array_entity_id
22084       , l_array_legal_entity_id
22085       , l_array_entity_code
22086       , l_array_transaction_num
22087       , l_array_event_id
22088       , l_array_class_code
22089       , l_array_event_type
22090       , l_array_event_number
22091       , l_array_event_date
22092       , l_array_transaction_date
22093       , l_array_reference_num_1
22094       , l_array_reference_num_2
22095       , l_array_reference_num_3
22096       , l_array_reference_num_4
22097       , l_array_reference_char_1
22098       , l_array_reference_char_2
22099       , l_array_reference_char_3
22100       , l_array_reference_char_4
22101       , l_array_reference_date_1
22102       , l_array_reference_date_2
22103       , l_array_reference_date_3
22104       , l_array_reference_date_4
22105       , l_array_event_created_by
22106       , l_array_budgetary_control_flag
22107       , l_array_extract_line_num 
22108       , l_array_source_5
22109       , l_array_source_6
22110       , l_array_source_6_meaning
22111       , l_array_source_7
22112       , l_array_source_8
22116   --
22113       , l_array_source_9
22114       LIMIT l_rows;
22115 
22117   IF (C_LEVEL_EVENT >= g_log_level) THEN
22118             trace
22119                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
22120                ,p_level    => C_LEVEL_EVENT
22121                ,p_module   => l_log_module);
22122   END IF;
22123   --
22124   EXIT WHEN l_array_entity_id.count = 0;
22125 
22126   XLA_AE_LINES_PKG.g_rec_lines := null;
22127 
22128 --
22129 -- Bug 4458708
22130 --
22131 XLA_AE_LINES_PKG.g_LineNumber := 0;
22132 --
22133 --
22134 
22135 FOR Idx IN 1..l_array_event_id.count LOOP
22136    --
22137    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
22138    --
22139    l_event_id := l_array_event_id(idx);  -- 5648433
22140 
22141    --
22142    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22143    --
22144 
22145    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
22146              (g_array_event(l_event_id).array_value_num('header_index'))
22147          ,'N'
22148          ) <> 'Y'
22149    THEN
22150       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22151          trace
22152             (p_msg      => 'Trancaction revesal option is not Y '
22153             ,p_level    => C_LEVEL_STATEMENT
22154             ,p_module   => l_log_module);
22155       END IF;
22156 
22157 --
22158 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
22159 --
22160 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
22161 --
22162 -- set event info as cache for other routines to refer event attributes
22163 --
22164 
22165 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
22166    l_previous_event_id := l_event_id;
22167 
22168    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
22169       (p_application_id           => p_application_id
22170       ,p_primary_ledger_id        => p_primary_ledger_id
22171       ,p_base_ledger_id           => p_base_ledger_id
22172       ,p_target_ledger_id         => p_target_ledger_id
22173       ,p_entity_id                => l_array_entity_id(Idx)
22174       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
22175       ,p_entity_code              => l_array_entity_code(Idx)
22176       ,p_transaction_num          => l_array_transaction_num(Idx)
22177       ,p_event_id                 => l_array_event_id(Idx)
22178       ,p_event_class_code         => l_array_class_code(Idx)
22179       ,p_event_type_code          => l_array_event_type(Idx)
22180       ,p_event_number             => l_array_event_number(Idx)
22181       ,p_event_date               => l_array_event_date(Idx)
22182       ,p_transaction_date         => l_array_transaction_date(Idx)
22183       ,p_reference_num_1          => l_array_reference_num_1(Idx)
22184       ,p_reference_num_2          => l_array_reference_num_2(Idx)
22185       ,p_reference_num_3          => l_array_reference_num_3(Idx)
22186       ,p_reference_num_4          => l_array_reference_num_4(Idx)
22187       ,p_reference_char_1         => l_array_reference_char_1(Idx)
22188       ,p_reference_char_2         => l_array_reference_char_2(Idx)
22189       ,p_reference_char_3         => l_array_reference_char_3(Idx)
22190       ,p_reference_char_4         => l_array_reference_char_4(Idx)
22191       ,p_reference_date_1         => l_array_reference_date_1(Idx)
22192       ,p_reference_date_2         => l_array_reference_date_2(Idx)
22193       ,p_reference_date_3         => l_array_reference_date_3(Idx)
22194       ,p_reference_date_4         => l_array_reference_date_4(Idx)
22195       ,p_event_created_by         => l_array_event_created_by(Idx)
22196       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
22197        --
22198 END IF;
22199 
22200 
22201 
22202 --
22203 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
22204 
22205 l_acct_reversal_source := SUBSTR(NULL, 1,30);
22206 
22207 IF l_continue_with_lines THEN
22208    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
22209       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
22210 
22211       xla_accounting_err_pkg.build_message
22212          (p_appli_s_name            => 'XLA'
22213          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
22214          ,p_token_1                 => 'LINE_NUMBER'
22215          ,p_value_1                 => l_array_extract_line_num(Idx)
22216          ,p_token_2                 => 'PRODUCT_NAME'
22217          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22218          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22219          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
22220          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22221 
22222    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
22223       --
22224       -- following sets the accounting attributes needed to reverse
22225       -- accounting for a distributeion
22226       --
22227 
22228       --
22229       -- 5217187
22230       --
22231       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
22232       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
22233                                        g_array_event(l_event_id).array_value_num('header_index'));
22234       --
22235       --
22236 
22237       -- No reversal code generated
22238 
22239       xla_ae_lines_pkg.SetAcctReversalAttrs
22240          (p_event_id             => l_event_id
22241          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
22242          ,p_calculate_acctd_flag => l_calculate_acctd_flag
22243          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
22247        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
22244    END IF;
22245 
22246    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
22248 
22249 --
22250 AcctLineType_14 (
22251  p_application_id  => p_application_id
22252  ,p_event_id     => l_event_id
22253  ,p_calculate_acctd_flag => l_calculate_acctd_flag
22254  ,p_calculate_g_l_flag => l_calculate_g_l_flag
22255  ,p_actual_flag => l_actual_flag
22256  ,p_balance_type_code => l_balance_type_code
22257  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
22258  
22259  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
22260  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
22261  , p_source_5 => l_array_source_5(Idx)
22262  , p_source_6 => l_array_source_6(Idx)
22263  , p_source_6_meaning => l_array_source_6_meaning(Idx)
22264  , p_source_7 => l_array_source_7(Idx)
22265  , p_source_8 => l_array_source_8(Idx)
22266  , p_source_9 => l_array_source_9(Idx)
22267  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
22268  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
22269  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
22270  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
22271  );
22272 If(l_balance_type_code = 'A') THEN
22273   l_actual_gain_loss_ref := l_gain_or_loss_ref;
22274 END IF;
22275 
22276 --
22277 
22278 
22279 --
22280 AcctLineType_15 (
22281  p_application_id  => p_application_id
22282  ,p_event_id     => l_event_id
22283  ,p_calculate_acctd_flag => l_calculate_acctd_flag
22284  ,p_calculate_g_l_flag => l_calculate_g_l_flag
22285  ,p_actual_flag => l_actual_flag
22286  ,p_balance_type_code => l_balance_type_code
22287  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
22288  
22289  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
22290  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
22291  , p_source_5 => l_array_source_5(Idx)
22292  , p_source_6 => l_array_source_6(Idx)
22293  , p_source_6_meaning => l_array_source_6_meaning(Idx)
22294  , p_source_7 => l_array_source_7(Idx)
22295  , p_source_8 => l_array_source_8(Idx)
22296  , p_source_9 => l_array_source_9(Idx)
22297  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
22298  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
22299  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
22300  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
22301  );
22302 If(l_balance_type_code = 'A') THEN
22303   l_actual_gain_loss_ref := l_gain_or_loss_ref;
22304 END IF;
22305 
22306 --
22307 
22308       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
22309       -- or secondary ledger that has different currency with primary
22310       -- or alc that is calculated by sla
22311       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
22312             (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'))
22313 
22314 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
22315 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
22316           AND (l_actual_flag = 'A')) THEN
22317         XLA_AE_LINES_PKG.CreateGainOrLossLines(
22318           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
22319          ,p_application_id   => p_application_id
22320          ,p_amb_context_code => 'DEFAULT'
22321          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
22322          ,p_event_class_code => C_EVENT_CLASS_CODE
22323          ,p_event_type_code  => C_EVENT_TYPE_CODE
22324          
22325          ,p_gain_ccid        => -1
22326          ,p_loss_ccid        => -1
22327 
22328          ,p_actual_flag      => l_actual_flag
22329          ,p_enc_flag         => null
22330          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
22331          ,p_enc_g_l_ref      => null
22332          );
22333       END IF;
22334    END IF;
22335 END IF;
22336 
22337    ELSE
22338       --
22339       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22340       --
22341       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22342          trace
22343             (p_msg      => 'Trancaction revesal option is Y'
22344             ,p_level    => C_LEVEL_STATEMENT
22345             ,p_module   => l_log_module);
22346       END IF;
22347    END IF;
22348 
22349 END LOOP;
22350 l_result := XLA_AE_LINES_PKG.InsertLines ;
22351 end loop;
22352 close line_cur;
22353 
22354 
22355 --
22356 -- insert headers into xla_ae_headers_gt table
22357 --
22358 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
22359 
22360 -- insert into errors table here.
22361 
22362 END LOOP;
22363 
22364 --
22365 -- 4865292
22366 --
22367 -- Compare g_hdr_extract_count with event count in
22368 -- CreateHeadersAndLines.
22369 --
22370 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
22371 
22372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22373    trace (p_msg     => '# rows extracted from header extract objects '
22374                     || ' (running total): '
22375                     || g_hdr_extract_count
22376          ,p_level   => C_LEVEL_STATEMENT
22377          ,p_module  => l_log_module);
22378 END IF;
22379 
22380 CLOSE header_cur;
22381 --
22382 
22383 --
22384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22385    trace
22386       (p_msg      => 'END of EventClass_37'
22387       ,p_level    => C_LEVEL_PROCEDURE
22391 RETURN l_result;
22388       ,p_module   => l_log_module);
22389 END IF;
22390 --
22392 EXCEPTION
22393 WHEN xla_exceptions_pkg.application_exception THEN
22394    
22395 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
22396 
22397    
22398 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
22399 
22400    RAISE;
22401 WHEN OTHERS THEN
22402    xla_exceptions_pkg.raise_message
22403       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_37');
22404 END EventClass_37;
22405 --
22406 
22407 ---------------------------------------
22408 --
22409 -- PRIVATE PROCEDURE
22410 --         insert_sources_38
22411 --
22412 ----------------------------------------
22413 --
22414 PROCEDURE insert_sources_38(
22415                                 p_target_ledger_id       IN NUMBER
22416                               , p_language               IN VARCHAR2
22417                               , p_sla_ledger_id          IN NUMBER
22418                               , p_pad_start_date         IN DATE
22419                               , p_pad_end_date           IN DATE
22420                          )
22421 IS
22422 
22423 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRINCIPAL_ADJUSTMENT_ALL';
22424 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT';
22425 p_apps_owner                   VARCHAR2(30);
22426 l_log_module                   VARCHAR2(240);
22427 BEGIN
22428 IF g_log_enabled THEN
22429       l_log_module := C_DEFAULT_MODULE||'.insert_sources_38';
22430 END IF;
22431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22432 
22433       trace
22434          (p_msg      => 'BEGIN of insert_sources_38'
22435          ,p_level    => C_LEVEL_PROCEDURE
22436          ,p_module   => l_log_module);
22437 
22438 END IF;
22439 
22440 -- select APPS owner
22441 SELECT oracle_username
22442   INTO p_apps_owner
22443   FROM fnd_oracle_userid
22444  WHERE read_only_flag = 'U'
22445 ;
22446 
22447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22448       trace
22449          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
22450                         ' - p_language = '||p_language||
22451                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
22452                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
22453                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
22454                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
22455          ,p_level    => C_LEVEL_STATEMENT
22456          ,p_module   => l_log_module);
22457 END IF;
22458 
22459 
22460 --
22461 INSERT INTO xla_diag_sources --hdr2
22462 (
22463         event_id
22464       , ledger_id
22465       , sla_ledger_id
22466       , description_language
22467       , object_name
22468       , object_type_code
22469       , line_number
22470       , source_application_id
22471       , source_type_code
22472       , source_code
22473       , source_value
22474       , source_meaning
22475       , created_by
22476       , creation_date
22477       , last_update_date
22478       , last_updated_by
22479       , last_update_login
22480       , program_update_date
22481       , program_application_id
22482       , program_id
22483       , request_id
22484 )
22485 SELECT
22486         event_id
22487       , p_target_ledger_id
22488       , p_sla_ledger_id
22489       , p_language
22490       , object_name
22491       , object_type_code
22492       , line_number
22493       , source_application_id
22494       , source_type_code
22495       , source_code
22496       , SUBSTR(source_value ,1,1996)
22497       , SUBSTR(source_meaning ,1,200)
22498       , xla_environment_pkg.g_Usr_Id
22499       , TRUNC(SYSDATE)
22500       , TRUNC(SYSDATE)
22501       , xla_environment_pkg.g_Usr_Id
22502       , xla_environment_pkg.g_Login_Id
22503       , TRUNC(SYSDATE)
22504       , xla_environment_pkg.g_Prog_Appl_Id
22505       , xla_environment_pkg.g_Prog_Id
22506       , xla_environment_pkg.g_Req_Id
22507   FROM (
22508        SELECT xet.event_id                  event_id
22509             , 0                          line_number
22510             , CASE r
22511                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22512                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22513                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22514                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22515                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22516                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22517                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22518                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
22519                 
22520                ELSE null
22521               END                           object_name
22522             , CASE r
22523                 WHEN 1 THEN 'HEADER' 
22524                 WHEN 2 THEN 'HEADER' 
22525                 WHEN 3 THEN 'HEADER' 
22526                 WHEN 4 THEN 'HEADER' 
22527                 WHEN 5 THEN 'HEADER' 
22528                 WHEN 6 THEN 'HEADER' 
22529                 WHEN 7 THEN 'HEADER' 
22530                 WHEN 8 THEN 'HEADER' 
22531                 
22532                 ELSE null
22533               END                           object_type_code
22534             , CASE r
22535                 WHEN 1 THEN '540' 
22536                 WHEN 2 THEN '540' 
22537                 WHEN 3 THEN '540' 
22538                 WHEN 4 THEN '540' 
22539                 WHEN 5 THEN '540' 
22540                 WHEN 6 THEN '540' 
22541                 WHEN 7 THEN '540' 
22542                 WHEN 8 THEN '540' 
22543                 
22544                 ELSE null
22548                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
22545               END                           source_application_id
22546             , 'S'             source_type_code
22547             , CASE r
22549                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
22550                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
22551                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
22552                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
22553                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
22554                 WHEN 7 THEN 'GL_DATE' 
22555                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
22556                 
22557                 ELSE null
22558               END                           source_code
22559             , CASE r
22560                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
22561                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
22562                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
22563                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
22564                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
22565                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
22566                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
22567                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
22568                 
22569                 ELSE null
22570               END                           source_value
22571             , null              source_meaning
22572          FROM xla_events_gt     xet  
22573       , OKL_CMN_EXTRACT_HDR_V  h1
22574              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
22575          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
22576            AND xet.event_class_code = C_EVENT_CLASS_CODE
22577               AND h1.event_id = xet.event_id
22578 
22579 )
22580 ;
22581 --
22582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22583 
22584       trace
22585          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
22586          ,p_level    => C_LEVEL_STATEMENT
22587          ,p_module   => l_log_module);
22588 
22589 END IF;
22590 --
22591 
22592 
22593 
22594 --
22595 INSERT INTO xla_diag_sources  --line2
22596 (
22597         event_id
22598       , ledger_id
22599       , sla_ledger_id
22600       , description_language
22601       , object_name
22602       , object_type_code
22603       , line_number
22604       , source_application_id
22605       , source_type_code
22606       , source_code
22607       , source_value
22608       , source_meaning
22609       , created_by
22610       , creation_date
22611       , last_update_date
22612       , last_updated_by
22613       , last_update_login
22614       , program_update_date
22615       , program_application_id
22616       , program_id
22617       , request_id
22618 )
22619 SELECT  event_id
22620       , p_target_ledger_id
22621       , p_sla_ledger_id
22622       , p_language
22623       , object_name
22624       , object_type_code
22625       , line_number
22626       , source_application_id
22627       , source_type_code
22628       , source_code
22629       , SUBSTR(source_value,1,1996)
22630       , SUBSTR(source_meaning ,1,200)
22631       , xla_environment_pkg.g_Usr_Id
22632       , TRUNC(SYSDATE)
22633       , TRUNC(SYSDATE)
22634       , xla_environment_pkg.g_Usr_Id
22635       , xla_environment_pkg.g_Login_Id
22636       , TRUNC(SYSDATE)
22637       , xla_environment_pkg.g_Prog_Appl_Id
22638       , xla_environment_pkg.g_Prog_Id
22639       , xla_environment_pkg.g_Req_Id
22640   FROM (
22641        SELECT xet.event_id                  event_id
22642             , l2.line_number                 line_number
22643             , CASE r
22644                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
22645                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
22646                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
22647                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
22648                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
22649                 
22650                ELSE null
22651               END                           object_name
22652             , CASE r
22653                 WHEN 1 THEN 'LINE' 
22654                 WHEN 2 THEN 'LINE' 
22655                 WHEN 3 THEN 'LINE' 
22656                 WHEN 4 THEN 'LINE' 
22657                 WHEN 5 THEN 'LINE' 
22658                 
22659                 ELSE null
22660               END                           object_type_code
22661             , CASE r
22662                 WHEN 1 THEN '540' 
22663                 WHEN 2 THEN '540' 
22664                 WHEN 3 THEN '540' 
22665                 WHEN 4 THEN '540' 
22666                 WHEN 5 THEN '540' 
22667                 
22668                 ELSE null
22669               END                           source_application_id
22670             , 'S'             source_type_code
22671             , CASE r
22672                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
22673                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
22674                 WHEN 3 THEN 'DIST_ID' 
22675                 WHEN 4 THEN 'DIST_TYPE' 
22676                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
22677                 
22678                 ELSE null
22679               END                           source_code
22680             , CASE r
22681                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
22682                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
22683                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
22684                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
22685                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
22686                 
22687                 ELSE null
22688               END                           source_value
22692                 ELSE null
22689             , CASE r
22690                 WHEN 2 THEN fvl6.meaning
22691                 
22693               END               source_meaning
22694          FROM  xla_events_gt     xet  
22695         , OKL_CMN_EXTRACT_LINE_V  l2
22696   , fnd_lookup_values    fvl6
22697             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
22698         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
22699           AND xet.event_class_code = C_EVENT_CLASS_CODE
22700             AND l2.event_id          = xet.event_id
22701    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
22702   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
22703   AND fvl6.view_application_id(+) = 0
22704   AND fvl6.language(+)            = USERENV('LANG')
22705   
22706 )
22707 ;
22708 --
22709 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22710 
22711       trace
22712          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
22713          ,p_level    => C_LEVEL_STATEMENT
22714          ,p_module   => l_log_module);
22715 
22716 END IF;
22717 
22718 
22719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22720       trace
22721          (p_msg      => 'END of insert_sources_38'
22722          ,p_level    => C_LEVEL_PROCEDURE
22723          ,p_module   => l_log_module);
22724 END IF;
22725 EXCEPTION
22726   WHEN xla_exceptions_pkg.application_exception THEN
22727       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
22728             trace
22729                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
22730                ,p_level    => C_LEVEL_EXCEPTION
22731                ,p_module   => l_log_module);
22732       END IF;
22733       RAISE;
22734   WHEN OTHERS THEN
22735       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
22736             trace
22737                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
22738                ,p_level    => C_LEVEL_EXCEPTION
22739                ,p_module   => l_log_module);
22740        END IF;
22741        xla_exceptions_pkg.raise_message
22742            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_38');
22743 END insert_sources_38;
22744 --
22745 
22746 ---------------------------------------
22747 --
22748 -- PRIVATE FUNCTION
22749 --         EventClass_38
22750 --
22751 ----------------------------------------
22752 --
22753 FUNCTION EventClass_38
22754        (p_application_id         IN NUMBER
22755        ,p_base_ledger_id         IN NUMBER
22756        ,p_target_ledger_id       IN NUMBER
22757        ,p_language               IN VARCHAR2
22758        ,p_currency_code          IN VARCHAR2
22759        ,p_sla_ledger_id          IN NUMBER
22760        ,p_pad_start_date         IN DATE
22761        ,p_pad_end_date           IN DATE
22762        ,p_primary_ledger_id      IN NUMBER)
22763 RETURN BOOLEAN IS
22764 --
22765 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRINCIPAL_ADJUSTMENT_ALL';
22766 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRINCIPAL_ADJUSTMENT';
22767 
22768 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
22769 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
22770 --
22771 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22772 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22773 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22774 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22775 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22776 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22777 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22778 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22779 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22780 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22781 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22782 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22783 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22784 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
22785 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22786 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22787 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22788 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
22789 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22790 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22791 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22792 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
22793 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
22794 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
22795 
22796 l_event_id                             NUMBER;
22797 l_previous_event_id                    NUMBER;
22798 l_first_event_id                       NUMBER;
22799 l_last_event_id                        NUMBER;
22800 
22801 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
22802 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
22803 --
22804 --
22805 l_result                    BOOLEAN := TRUE;
22806 l_rows                      NUMBER  := 1000;
22807 l_event_type_name           VARCHAR2(80) := 'All';
22808 l_event_class_name          VARCHAR2(80) := 'Principal Adjustment';
22809 l_description               VARCHAR2(4000);
22810 l_transaction_reversal      NUMBER;
22811 l_ae_header_id              NUMBER;
22815 l_acct_reversal_source      VARCHAR2(30);
22812 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
22813 l_log_module                VARCHAR2(240);
22814 --
22816 l_trx_reversal_source       VARCHAR2(30);
22817 
22818 l_continue_with_lines       BOOLEAN := TRUE;
22819 --
22820 l_acc_rev_gl_date_source    DATE;                      -- 4262811
22821 --
22822 type t_array_event_id is table of number index by binary_integer;
22823 
22824 l_rec_array_event                    t_rec_array_event;
22825 l_null_rec_array_event               t_rec_array_event;
22826 l_array_ae_header_id                 xla_number_array_type;
22827 l_actual_flag                        VARCHAR2(1) := NULL;
22828 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
22829 l_balance_type_code                  VARCHAR2(1) :=NULL;
22830 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
22831 
22832 --
22833 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
22834 --
22835 
22836 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
22837 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
22838 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
22839 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
22840 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
22841 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
22842 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
22843 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
22844 
22845 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
22846 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
22847 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
22848 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
22849 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
22850 
22851 l_array_source_1              t_array_source_1;
22852 l_array_source_2              t_array_source_2;
22853 l_array_source_10              t_array_source_10;
22854 l_array_source_11              t_array_source_11;
22855 l_array_source_12              t_array_source_12;
22856 l_array_source_13              t_array_source_13;
22857 l_array_source_15              t_array_source_15;
22858 l_array_source_16              t_array_source_16;
22859 
22860 l_array_source_5      t_array_source_5;
22861 l_array_source_6      t_array_source_6;
22862 l_array_source_6_meaning      t_array_lookup_meaning;
22863 l_array_source_7      t_array_source_7;
22864 l_array_source_8      t_array_source_8;
22865 l_array_source_9      t_array_source_9;
22866 
22867 --
22868 CURSOR header_cur
22869 IS
22870 SELECT /*+ leading(xet) cardinality(xet,1) */
22871 -- Event Class Code: PRINCIPAL_ADJUSTMENT
22872     xet.entity_id
22873    ,xet.legal_entity_id
22874    ,xet.entity_code
22875    ,xet.transaction_number
22876    ,xet.event_id
22877    ,xet.event_class_code
22878    ,xet.event_type_code
22879    ,xet.event_number
22880    ,xet.event_date
22881    ,xet.transaction_date
22882    ,xet.reference_num_1
22883    ,xet.reference_num_2
22884    ,xet.reference_num_3
22885    ,xet.reference_num_4
22886    ,xet.reference_char_1
22887    ,xet.reference_char_2
22888    ,xet.reference_char_3
22889    ,xet.reference_char_4
22890    ,xet.reference_date_1
22891    ,xet.reference_date_2
22892    ,xet.reference_date_3
22893    ,xet.reference_date_4
22894    ,xet.event_created_by
22895    ,xet.budgetary_control_flag 
22896   , h1.TEH_CONTRACT_NUMBER    source_1
22897   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
22898   , h1.TCN_CURRENCY_CODE    source_10
22899   , h1.TCN_CURR_CONVERSION_DATE    source_11
22900   , h1.TCN_CURR_CONVERSION_RATE    source_12
22901   , h1.TCN_CURR_CONVERSION_TYPE    source_13
22902   , h1.GL_DATE    source_15
22903   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
22904   FROM xla_events_gt     xet 
22905   , OKL_CMN_EXTRACT_HDR_V  h1
22906  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
22907    and xet.event_class_code = C_EVENT_CLASS_CODE
22908    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
22909 
22910  ORDER BY event_id
22911 ;
22912 
22913 
22914 --
22915 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
22916 IS
22917 SELECT  /*+ leading(xet) cardinality(xet,1) */
22918 -- Event Class Code: PRINCIPAL_ADJUSTMENT
22919     xet.entity_id
22920    ,xet.legal_entity_id
22921    ,xet.entity_code
22922    ,xet.transaction_number
22923    ,xet.event_id
22924    ,xet.event_class_code
22925    ,xet.event_type_code
22926    ,xet.event_number
22927    ,xet.event_date
22928    ,xet.transaction_date
22929    ,xet.reference_num_1
22930    ,xet.reference_num_2
22931    ,xet.reference_num_3
22932    ,xet.reference_num_4
22933    ,xet.reference_char_1
22934    ,xet.reference_char_2
22935    ,xet.reference_char_3
22936    ,xet.reference_char_4
22937    ,xet.reference_date_1
22938    ,xet.reference_date_2
22939    ,xet.reference_date_3
22940    ,xet.reference_date_4
22941    ,xet.event_created_by
22942    ,xet.budgetary_control_flag
22943  , l2.LINE_NUMBER  
22944   , l2.DIST_CODE_COMBINATION_ID    source_5
22945   , l2.DIST_AE_LINE_TYPE_CODE    source_6
22946   , fvl6.meaning   source_6_meaning
22950   FROM xla_events_gt     xet 
22947   , l2.DIST_ID    source_7
22948   , l2.DIST_TYPE    source_8
22949   , l2.DIST_ENTERED_AMOUNT    source_9
22951   , OKL_CMN_EXTRACT_LINE_V  l2
22952   , fnd_lookup_values    fvl6
22953  WHERE xet.event_id between x_first_event_id and x_last_event_id
22954    and xet.event_date between p_pad_start_date and p_pad_end_date
22955    and xet.event_class_code = C_EVENT_CLASS_CODE
22956    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
22957    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
22958   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
22959   AND fvl6.view_application_id(+) = 0
22960   AND fvl6.language(+)            = USERENV('LANG')
22961   ;
22962 
22963 --
22964 BEGIN
22965 IF g_log_enabled THEN
22966    l_log_module := C_DEFAULT_MODULE||'.EventClass_38';
22967 END IF;
22968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22969    trace
22970       (p_msg      => 'BEGIN of EventClass_38'
22971       ,p_level    => C_LEVEL_PROCEDURE
22972       ,p_module   => l_log_module);
22973 END IF;
22974 
22975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22976    trace
22977       (p_msg      => 'p_application_id = '||p_application_id||
22978                      ' - p_base_ledger_id = '||p_base_ledger_id||
22979                      ' - p_target_ledger_id  = '||p_target_ledger_id||
22980                      ' - p_language = '||p_language||
22981                      ' - p_currency_code = '||p_currency_code||
22982                      ' - p_sla_ledger_id = '||p_sla_ledger_id
22983       ,p_level    => C_LEVEL_STATEMENT
22984       ,p_module   => l_log_module);
22985 END IF;
22986 --
22987 -- initialze arrays
22988 --
22989 g_array_event.DELETE;
22990 l_rec_array_event := l_null_rec_array_event;
22991 --
22992 --------------------------------------
22993 -- 4262811 Initialze MPA Line Number
22994 --------------------------------------
22995 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
22996 
22997 --
22998 
22999 --
23000 OPEN header_cur;
23001 --
23002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23003    trace
23004    (p_msg      => 'SQL - FETCH header_cur'
23005    ,p_level    => C_LEVEL_STATEMENT
23006    ,p_module   => l_log_module);
23007 END IF;
23008 --
23009 LOOP
23010 FETCH header_cur BULK COLLECT INTO
23011         l_array_entity_id
23012       , l_array_legal_entity_id
23013       , l_array_entity_code
23014       , l_array_transaction_num
23015       , l_array_event_id
23016       , l_array_class_code
23017       , l_array_event_type
23018       , l_array_event_number
23019       , l_array_event_date
23020       , l_array_transaction_date
23021       , l_array_reference_num_1
23022       , l_array_reference_num_2
23023       , l_array_reference_num_3
23024       , l_array_reference_num_4
23025       , l_array_reference_char_1
23026       , l_array_reference_char_2
23027       , l_array_reference_char_3
23028       , l_array_reference_char_4
23029       , l_array_reference_date_1
23030       , l_array_reference_date_2
23031       , l_array_reference_date_3
23032       , l_array_reference_date_4
23033       , l_array_event_created_by
23034       , l_array_budgetary_control_flag 
23035       , l_array_source_1
23036       , l_array_source_2
23037       , l_array_source_10
23038       , l_array_source_11
23039       , l_array_source_12
23040       , l_array_source_13
23041       , l_array_source_15
23042       , l_array_source_16
23043       LIMIT l_rows;
23044 --
23045 IF (C_LEVEL_EVENT >= g_log_level) THEN
23046    trace
23047    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
23048    ,p_level    => C_LEVEL_EVENT
23049    ,p_module   => l_log_module);
23050 END IF;
23051 --
23052 EXIT WHEN l_array_entity_id.COUNT = 0;
23053 
23054 -- initialize arrays
23055 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
23056 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
23057 
23058 --
23059 -- Bug 4458708
23060 --
23061 XLA_AE_LINES_PKG.g_LineNumber := 0;
23062 
23063 
23064 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
23065 g_last_hdr_idx := l_array_event_id.LAST;
23066 --
23067 -- loop for the headers. Each iteration is for each header extract row
23068 -- fetched in header cursor
23069 --
23070 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
23071 
23072 --
23073 -- set event info as cache for other routines to refer event attributes
23074 --
23075 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23076    (p_application_id           => p_application_id
23077    ,p_primary_ledger_id        => p_primary_ledger_id
23078    ,p_base_ledger_id           => p_base_ledger_id
23079    ,p_target_ledger_id         => p_target_ledger_id
23080    ,p_entity_id                => l_array_entity_id(hdr_idx)
23081    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
23082    ,p_entity_code              => l_array_entity_code(hdr_idx)
23083    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
23084    ,p_event_id                 => l_array_event_id(hdr_idx)
23085    ,p_event_class_code         => l_array_class_code(hdr_idx)
23086    ,p_event_type_code          => l_array_event_type(hdr_idx)
23087    ,p_event_number             => l_array_event_number(hdr_idx)
23088    ,p_event_date               => l_array_event_date(hdr_idx)
23089    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
23090    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
23091    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
23092    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
23093    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
23097    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
23094    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
23095    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
23096    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
23098    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
23099    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
23100    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
23101    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
23102    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
23103    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
23104 
23105 --
23106 -- set the status of entry to C_VALID (0)
23107 --
23108 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23109 
23110 --
23111 -- initialize a row for ae header
23112 --
23113 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
23114 
23115 l_event_id := l_array_event_id(hdr_idx);
23116 
23117 --
23118 -- storing the hdr_idx for event. May be used by line cursor.
23119 --
23120 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
23121 
23122 --
23123 -- store sources from header extract. This can be improved to
23124 -- store only those sources from header extract that may be used in lines
23125 --
23126 
23127 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
23128 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
23129 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
23130 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
23131 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
23132 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
23133 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
23134 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
23135 
23136 --
23137 -- initilaize the status of ae headers for diffrent balance types
23138 -- the status is initialised to C_NOT_CREATED (2)
23139 --
23140 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23141 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23142 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23143 
23144 --
23145 -- call api to validate and store accounting attributes for header
23146 --
23147 
23148 ------------------------------------------------------------
23149 -- Accrual Reversal : to get date for Standard Source (NONE)
23150 ------------------------------------------------------------
23151 l_acc_rev_gl_date_source := NULL;
23152 
23153      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
23154       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
23155      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
23156       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
23157 
23158 
23159 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
23160 
23161 XLA_AE_HEADER_PKG.SetJeCategoryName;
23162 
23163 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
23164 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
23165 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
23166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
23167 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
23168 
23169 
23170 --
23171 xla_ae_header_pkg.SetHdrDescription(
23172    p_description => Description_1 (
23173    p_application_id => p_application_id 
23174  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23175  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23176    )
23177 );
23178 --
23179 
23180 -- No header level analytical criteria
23181 
23182 --
23183 --accounting attribute enhancement, bug 3612931
23184 --
23185 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
23186 
23187 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
23188    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
23189 
23190    xla_accounting_err_pkg.build_message
23191       (p_appli_s_name            => 'XLA'
23192       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
23193       ,p_token_1                 => 'ACCT_ATTR_NAME'
23194       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
23195       ,p_token_2                 => 'PRODUCT_NAME'
23196       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23197       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23198       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
23199       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23200 
23201 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
23202    --
23203    -- following sets the accounting attributes needed to reverse
23204    -- accounting for a distributeion
23205    --
23206    xla_ae_lines_pkg.SetTrxReversalAttrs
23207       (p_event_id              => l_event_id
23208       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
23209       ,p_trx_reversal_source   => l_trx_reversal_source);
23210 
23211 END IF;
23212 
23213 
23217 --
23214 ----------------------------------------------------------------
23215 -- 4262811 -  update the header statuses to invalid in need be
23216 ----------------------------------------------------------------
23218 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
23219 
23220 
23221   -----------------------------------------------
23222   -- No accrual reversal for the event class/type
23223   -----------------------------------------------
23224 ----------------------------------------------------------------
23225 
23226 --
23227 -- this ends the header loop iteration for one bulk fetch
23228 --
23229 END LOOP;
23230 
23231 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
23232 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
23233 
23234 --
23235 -- insert dummy rows into lines gt table that were created due to
23236 -- transaction reversals
23237 --
23238 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
23239    l_result := XLA_AE_LINES_PKG.InsertLines;
23240 END IF;
23241 
23242 --
23243 -- reset the temp_line_num for each set of events fetched from header
23244 -- cursor rather than doing it for each new event in line cursor
23245 -- Bug 3939231
23246 --
23247 xla_ae_lines_pkg.g_temp_line_num := 0;
23248 
23249 
23250 
23251 --
23252 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
23253 --
23254 --
23255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23256 
23257       trace
23258          (p_msg      => 'SQL - FETCH line_cur'
23259          ,p_level    => C_LEVEL_STATEMENT
23260          ,p_module   => l_log_module);
23261 
23262 END IF;
23263 --
23264 --
23265 LOOP
23266   --
23267   FETCH line_cur BULK COLLECT INTO
23268         l_array_entity_id
23269       , l_array_legal_entity_id
23270       , l_array_entity_code
23271       , l_array_transaction_num
23272       , l_array_event_id
23273       , l_array_class_code
23274       , l_array_event_type
23275       , l_array_event_number
23276       , l_array_event_date
23277       , l_array_transaction_date
23278       , l_array_reference_num_1
23279       , l_array_reference_num_2
23280       , l_array_reference_num_3
23281       , l_array_reference_num_4
23282       , l_array_reference_char_1
23283       , l_array_reference_char_2
23284       , l_array_reference_char_3
23285       , l_array_reference_char_4
23286       , l_array_reference_date_1
23287       , l_array_reference_date_2
23288       , l_array_reference_date_3
23289       , l_array_reference_date_4
23290       , l_array_event_created_by
23291       , l_array_budgetary_control_flag
23292       , l_array_extract_line_num 
23293       , l_array_source_5
23294       , l_array_source_6
23295       , l_array_source_6_meaning
23296       , l_array_source_7
23297       , l_array_source_8
23298       , l_array_source_9
23299       LIMIT l_rows;
23300 
23301   --
23302   IF (C_LEVEL_EVENT >= g_log_level) THEN
23303             trace
23304                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
23305                ,p_level    => C_LEVEL_EVENT
23306                ,p_module   => l_log_module);
23307   END IF;
23308   --
23309   EXIT WHEN l_array_entity_id.count = 0;
23310 
23311   XLA_AE_LINES_PKG.g_rec_lines := null;
23312 
23313 --
23314 -- Bug 4458708
23315 --
23316 XLA_AE_LINES_PKG.g_LineNumber := 0;
23317 --
23318 --
23319 
23320 FOR Idx IN 1..l_array_event_id.count LOOP
23321    --
23322    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
23323    --
23324    l_event_id := l_array_event_id(idx);  -- 5648433
23325 
23326    --
23327    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23328    --
23329 
23330    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
23331              (g_array_event(l_event_id).array_value_num('header_index'))
23332          ,'N'
23333          ) <> 'Y'
23334    THEN
23335       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23336          trace
23337             (p_msg      => 'Trancaction revesal option is not Y '
23338             ,p_level    => C_LEVEL_STATEMENT
23339             ,p_module   => l_log_module);
23340       END IF;
23341 
23342 --
23343 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
23344 --
23345 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23346 --
23347 -- set event info as cache for other routines to refer event attributes
23348 --
23349 
23350 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
23351    l_previous_event_id := l_event_id;
23352 
23353    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23354       (p_application_id           => p_application_id
23355       ,p_primary_ledger_id        => p_primary_ledger_id
23356       ,p_base_ledger_id           => p_base_ledger_id
23357       ,p_target_ledger_id         => p_target_ledger_id
23358       ,p_entity_id                => l_array_entity_id(Idx)
23359       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
23360       ,p_entity_code              => l_array_entity_code(Idx)
23361       ,p_transaction_num          => l_array_transaction_num(Idx)
23362       ,p_event_id                 => l_array_event_id(Idx)
23363       ,p_event_class_code         => l_array_class_code(Idx)
23364       ,p_event_type_code          => l_array_event_type(Idx)
23365       ,p_event_number             => l_array_event_number(Idx)
23366       ,p_event_date               => l_array_event_date(Idx)
23367       ,p_transaction_date         => l_array_transaction_date(Idx)
23371       ,p_reference_num_4          => l_array_reference_num_4(Idx)
23368       ,p_reference_num_1          => l_array_reference_num_1(Idx)
23369       ,p_reference_num_2          => l_array_reference_num_2(Idx)
23370       ,p_reference_num_3          => l_array_reference_num_3(Idx)
23372       ,p_reference_char_1         => l_array_reference_char_1(Idx)
23373       ,p_reference_char_2         => l_array_reference_char_2(Idx)
23374       ,p_reference_char_3         => l_array_reference_char_3(Idx)
23375       ,p_reference_char_4         => l_array_reference_char_4(Idx)
23376       ,p_reference_date_1         => l_array_reference_date_1(Idx)
23377       ,p_reference_date_2         => l_array_reference_date_2(Idx)
23378       ,p_reference_date_3         => l_array_reference_date_3(Idx)
23379       ,p_reference_date_4         => l_array_reference_date_4(Idx)
23380       ,p_event_created_by         => l_array_event_created_by(Idx)
23381       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
23382        --
23383 END IF;
23384 
23385 
23386 
23387 --
23388 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
23389 
23390 l_acct_reversal_source := SUBSTR(NULL, 1,30);
23391 
23392 IF l_continue_with_lines THEN
23393    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
23394       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
23395 
23396       xla_accounting_err_pkg.build_message
23397          (p_appli_s_name            => 'XLA'
23398          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
23399          ,p_token_1                 => 'LINE_NUMBER'
23400          ,p_value_1                 => l_array_extract_line_num(Idx)
23401          ,p_token_2                 => 'PRODUCT_NAME'
23402          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23403          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23404          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
23405          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23406 
23407    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
23408       --
23409       -- following sets the accounting attributes needed to reverse
23410       -- accounting for a distributeion
23411       --
23412 
23413       --
23414       -- 5217187
23415       --
23416       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
23417       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
23418                                        g_array_event(l_event_id).array_value_num('header_index'));
23419       --
23420       --
23421 
23422       -- No reversal code generated
23423 
23424       xla_ae_lines_pkg.SetAcctReversalAttrs
23425          (p_event_id             => l_event_id
23426          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
23427          ,p_calculate_acctd_flag => l_calculate_acctd_flag
23428          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
23429    END IF;
23430 
23431    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
23432        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
23433 
23434 --
23435 AcctLineType_16 (
23436  p_application_id  => p_application_id
23437  ,p_event_id     => l_event_id
23438  ,p_calculate_acctd_flag => l_calculate_acctd_flag
23439  ,p_calculate_g_l_flag => l_calculate_g_l_flag
23440  ,p_actual_flag => l_actual_flag
23441  ,p_balance_type_code => l_balance_type_code
23442  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
23443  
23444  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23445  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23446  , p_source_5 => l_array_source_5(Idx)
23447  , p_source_6 => l_array_source_6(Idx)
23448  , p_source_6_meaning => l_array_source_6_meaning(Idx)
23449  , p_source_7 => l_array_source_7(Idx)
23450  , p_source_8 => l_array_source_8(Idx)
23451  , p_source_9 => l_array_source_9(Idx)
23452  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
23453  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
23454  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
23455  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
23456  );
23457 If(l_balance_type_code = 'A') THEN
23458   l_actual_gain_loss_ref := l_gain_or_loss_ref;
23459 END IF;
23460 
23461 --
23462 
23463 
23464 --
23465 AcctLineType_17 (
23466  p_application_id  => p_application_id
23467  ,p_event_id     => l_event_id
23468  ,p_calculate_acctd_flag => l_calculate_acctd_flag
23469  ,p_calculate_g_l_flag => l_calculate_g_l_flag
23470  ,p_actual_flag => l_actual_flag
23471  ,p_balance_type_code => l_balance_type_code
23472  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
23473  
23474  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
23475  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
23476  , p_source_5 => l_array_source_5(Idx)
23477  , p_source_6 => l_array_source_6(Idx)
23478  , p_source_6_meaning => l_array_source_6_meaning(Idx)
23479  , p_source_7 => l_array_source_7(Idx)
23480  , p_source_8 => l_array_source_8(Idx)
23481  , p_source_9 => l_array_source_9(Idx)
23482  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
23483  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
23484  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
23485  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
23486  );
23487 If(l_balance_type_code = 'A') THEN
23488   l_actual_gain_loss_ref := l_gain_or_loss_ref;
23489 END IF;
23490 
23491 --
23492 
23493       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
23497             (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'))
23494       -- or secondary ledger that has different currency with primary
23495       -- or alc that is calculated by sla
23496       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
23498 
23499 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
23500 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
23501           AND (l_actual_flag = 'A')) THEN
23502         XLA_AE_LINES_PKG.CreateGainOrLossLines(
23503           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
23504          ,p_application_id   => p_application_id
23505          ,p_amb_context_code => 'DEFAULT'
23506          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
23507          ,p_event_class_code => C_EVENT_CLASS_CODE
23508          ,p_event_type_code  => C_EVENT_TYPE_CODE
23509          
23510          ,p_gain_ccid        => -1
23511          ,p_loss_ccid        => -1
23512 
23513          ,p_actual_flag      => l_actual_flag
23514          ,p_enc_flag         => null
23515          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
23516          ,p_enc_g_l_ref      => null
23517          );
23518       END IF;
23519    END IF;
23520 END IF;
23521 
23522    ELSE
23523       --
23524       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23525       --
23526       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23527          trace
23528             (p_msg      => 'Trancaction revesal option is Y'
23529             ,p_level    => C_LEVEL_STATEMENT
23530             ,p_module   => l_log_module);
23531       END IF;
23532    END IF;
23533 
23534 END LOOP;
23535 l_result := XLA_AE_LINES_PKG.InsertLines ;
23536 end loop;
23537 close line_cur;
23538 
23539 
23540 --
23541 -- insert headers into xla_ae_headers_gt table
23542 --
23543 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
23544 
23545 -- insert into errors table here.
23546 
23547 END LOOP;
23548 
23549 --
23550 -- 4865292
23551 --
23552 -- Compare g_hdr_extract_count with event count in
23553 -- CreateHeadersAndLines.
23554 --
23555 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
23556 
23557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23558    trace (p_msg     => '# rows extracted from header extract objects '
23559                     || ' (running total): '
23560                     || g_hdr_extract_count
23561          ,p_level   => C_LEVEL_STATEMENT
23562          ,p_module  => l_log_module);
23563 END IF;
23564 
23565 CLOSE header_cur;
23566 --
23567 
23568 --
23569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23570    trace
23571       (p_msg      => 'END of EventClass_38'
23572       ,p_level    => C_LEVEL_PROCEDURE
23573       ,p_module   => l_log_module);
23574 END IF;
23575 --
23576 RETURN l_result;
23577 EXCEPTION
23578 WHEN xla_exceptions_pkg.application_exception THEN
23579    
23580 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
23581 
23582    
23583 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
23584 
23585    RAISE;
23586 WHEN OTHERS THEN
23587    xla_exceptions_pkg.raise_message
23588       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_38');
23589 END EventClass_38;
23590 --
23591 
23592 ---------------------------------------
23593 --
23594 -- PRIVATE PROCEDURE
23595 --         insert_sources_39
23596 --
23597 ----------------------------------------
23598 --
23599 PROCEDURE insert_sources_39(
23600                                 p_target_ledger_id       IN NUMBER
23601                               , p_language               IN VARCHAR2
23602                               , p_sla_ledger_id          IN NUMBER
23603                               , p_pad_start_date         IN DATE
23604                               , p_pad_end_date           IN DATE
23605                          )
23606 IS
23607 
23608 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REBOOK_ALL';
23609 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REBOOK';
23610 p_apps_owner                   VARCHAR2(30);
23611 l_log_module                   VARCHAR2(240);
23612 BEGIN
23613 IF g_log_enabled THEN
23614       l_log_module := C_DEFAULT_MODULE||'.insert_sources_39';
23615 END IF;
23616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23617 
23618       trace
23619          (p_msg      => 'BEGIN of insert_sources_39'
23620          ,p_level    => C_LEVEL_PROCEDURE
23621          ,p_module   => l_log_module);
23622 
23623 END IF;
23624 
23625 -- select APPS owner
23626 SELECT oracle_username
23627   INTO p_apps_owner
23628   FROM fnd_oracle_userid
23629  WHERE read_only_flag = 'U'
23630 ;
23631 
23632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23633       trace
23634          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
23635                         ' - p_language = '||p_language||
23636                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
23637                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
23638                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
23639                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
23640          ,p_level    => C_LEVEL_STATEMENT
23641          ,p_module   => l_log_module);
23642 END IF;
23643 
23644 
23645 --
23646 INSERT INTO xla_diag_sources --hdr2
23647 (
23648         event_id
23649       , ledger_id
23650       , sla_ledger_id
23651       , description_language
23655       , source_application_id
23652       , object_name
23653       , object_type_code
23654       , line_number
23656       , source_type_code
23657       , source_code
23658       , source_value
23659       , source_meaning
23660       , created_by
23661       , creation_date
23662       , last_update_date
23663       , last_updated_by
23664       , last_update_login
23665       , program_update_date
23666       , program_application_id
23667       , program_id
23668       , request_id
23669 )
23670 SELECT
23671         event_id
23672       , p_target_ledger_id
23673       , p_sla_ledger_id
23674       , p_language
23675       , object_name
23676       , object_type_code
23677       , line_number
23678       , source_application_id
23679       , source_type_code
23680       , source_code
23681       , SUBSTR(source_value ,1,1996)
23682       , SUBSTR(source_meaning ,1,200)
23683       , xla_environment_pkg.g_Usr_Id
23684       , TRUNC(SYSDATE)
23685       , TRUNC(SYSDATE)
23686       , xla_environment_pkg.g_Usr_Id
23687       , xla_environment_pkg.g_Login_Id
23688       , TRUNC(SYSDATE)
23689       , xla_environment_pkg.g_Prog_Appl_Id
23690       , xla_environment_pkg.g_Prog_Id
23691       , xla_environment_pkg.g_Req_Id
23692   FROM (
23693        SELECT xet.event_id                  event_id
23694             , 0                          line_number
23695             , CASE r
23696                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23697                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23698                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23699                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23700                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23701                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23702                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23703                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
23704                 
23705                ELSE null
23706               END                           object_name
23707             , CASE r
23708                 WHEN 1 THEN 'HEADER' 
23709                 WHEN 2 THEN 'HEADER' 
23710                 WHEN 3 THEN 'HEADER' 
23711                 WHEN 4 THEN 'HEADER' 
23712                 WHEN 5 THEN 'HEADER' 
23713                 WHEN 6 THEN 'HEADER' 
23714                 WHEN 7 THEN 'HEADER' 
23715                 WHEN 8 THEN 'HEADER' 
23716                 
23717                 ELSE null
23718               END                           object_type_code
23719             , CASE r
23720                 WHEN 1 THEN '540' 
23721                 WHEN 2 THEN '540' 
23722                 WHEN 3 THEN '540' 
23723                 WHEN 4 THEN '540' 
23724                 WHEN 5 THEN '540' 
23725                 WHEN 6 THEN '540' 
23726                 WHEN 7 THEN '540' 
23727                 WHEN 8 THEN '540' 
23728                 
23729                 ELSE null
23730               END                           source_application_id
23731             , 'S'             source_type_code
23732             , CASE r
23733                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
23734                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
23735                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
23736                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
23737                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
23738                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
23739                 WHEN 7 THEN 'GL_DATE' 
23740                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
23741                 
23742                 ELSE null
23743               END                           source_code
23744             , CASE r
23745                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
23746                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
23747                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
23748                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
23749                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
23750                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
23751                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
23752                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
23753                 
23754                 ELSE null
23755               END                           source_value
23756             , null              source_meaning
23757          FROM xla_events_gt     xet  
23758       , OKL_CMN_EXTRACT_HDR_V  h1
23759              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
23760          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
23761            AND xet.event_class_code = C_EVENT_CLASS_CODE
23762               AND h1.event_id = xet.event_id
23763 
23764 )
23765 ;
23766 --
23767 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23768 
23769       trace
23770          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
23771          ,p_level    => C_LEVEL_STATEMENT
23772          ,p_module   => l_log_module);
23773 
23774 END IF;
23775 --
23776 
23777 
23778 
23779 --
23780 INSERT INTO xla_diag_sources  --line2
23781 (
23782         event_id
23783       , ledger_id
23784       , sla_ledger_id
23785       , description_language
23786       , object_name
23787       , object_type_code
23788       , line_number
23789       , source_application_id
23790       , source_type_code
23791       , source_code
23792       , source_value
23793       , source_meaning
23794       , created_by
23795       , creation_date
23796       , last_update_date
23797       , last_updated_by
23798       , last_update_login
23799       , program_update_date
23800       , program_application_id
23801       , program_id
23802       , request_id
23806       , p_sla_ledger_id
23803 )
23804 SELECT  event_id
23805       , p_target_ledger_id
23807       , p_language
23808       , object_name
23809       , object_type_code
23810       , line_number
23811       , source_application_id
23812       , source_type_code
23813       , source_code
23814       , SUBSTR(source_value,1,1996)
23815       , SUBSTR(source_meaning ,1,200)
23816       , xla_environment_pkg.g_Usr_Id
23817       , TRUNC(SYSDATE)
23818       , TRUNC(SYSDATE)
23819       , xla_environment_pkg.g_Usr_Id
23820       , xla_environment_pkg.g_Login_Id
23821       , TRUNC(SYSDATE)
23822       , xla_environment_pkg.g_Prog_Appl_Id
23823       , xla_environment_pkg.g_Prog_Id
23824       , xla_environment_pkg.g_Req_Id
23825   FROM (
23826        SELECT xet.event_id                  event_id
23827             , l2.line_number                 line_number
23828             , CASE r
23829                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
23830                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
23831                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
23832                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
23833                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
23834                 
23835                ELSE null
23836               END                           object_name
23837             , CASE r
23838                 WHEN 1 THEN 'LINE' 
23839                 WHEN 2 THEN 'LINE' 
23840                 WHEN 3 THEN 'LINE' 
23841                 WHEN 4 THEN 'LINE' 
23842                 WHEN 5 THEN 'LINE' 
23843                 
23844                 ELSE null
23845               END                           object_type_code
23846             , CASE r
23847                 WHEN 1 THEN '540' 
23848                 WHEN 2 THEN '540' 
23849                 WHEN 3 THEN '540' 
23850                 WHEN 4 THEN '540' 
23851                 WHEN 5 THEN '540' 
23852                 
23853                 ELSE null
23854               END                           source_application_id
23855             , 'S'             source_type_code
23856             , CASE r
23857                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
23858                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
23859                 WHEN 3 THEN 'DIST_ID' 
23860                 WHEN 4 THEN 'DIST_TYPE' 
23861                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
23862                 
23863                 ELSE null
23864               END                           source_code
23865             , CASE r
23866                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
23867                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
23868                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
23869                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
23870                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
23871                 
23872                 ELSE null
23873               END                           source_value
23874             , CASE r
23875                 WHEN 2 THEN fvl6.meaning
23876                 
23877                 ELSE null
23878               END               source_meaning
23879          FROM  xla_events_gt     xet  
23880         , OKL_CMN_EXTRACT_LINE_V  l2
23881   , fnd_lookup_values    fvl6
23882             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
23883         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
23884           AND xet.event_class_code = C_EVENT_CLASS_CODE
23885             AND l2.event_id          = xet.event_id
23886    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
23887   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
23888   AND fvl6.view_application_id(+) = 0
23889   AND fvl6.language(+)            = USERENV('LANG')
23890   
23891 )
23892 ;
23893 --
23894 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23895 
23896       trace
23897          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
23898          ,p_level    => C_LEVEL_STATEMENT
23899          ,p_module   => l_log_module);
23900 
23901 END IF;
23902 
23903 
23904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23905       trace
23906          (p_msg      => 'END of insert_sources_39'
23907          ,p_level    => C_LEVEL_PROCEDURE
23908          ,p_module   => l_log_module);
23909 END IF;
23910 EXCEPTION
23911   WHEN xla_exceptions_pkg.application_exception THEN
23912       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23913             trace
23914                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23915                ,p_level    => C_LEVEL_EXCEPTION
23916                ,p_module   => l_log_module);
23917       END IF;
23918       RAISE;
23919   WHEN OTHERS THEN
23920       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23921             trace
23922                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23923                ,p_level    => C_LEVEL_EXCEPTION
23924                ,p_module   => l_log_module);
23925        END IF;
23926        xla_exceptions_pkg.raise_message
23927            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_39');
23928 END insert_sources_39;
23929 --
23930 
23931 ---------------------------------------
23932 --
23933 -- PRIVATE FUNCTION
23934 --         EventClass_39
23935 --
23936 ----------------------------------------
23937 --
23938 FUNCTION EventClass_39
23939        (p_application_id         IN NUMBER
23940        ,p_base_ledger_id         IN NUMBER
23941        ,p_target_ledger_id       IN NUMBER
23942        ,p_language               IN VARCHAR2
23943        ,p_currency_code          IN VARCHAR2
23944        ,p_sla_ledger_id          IN NUMBER
23945        ,p_pad_start_date         IN DATE
23946        ,p_pad_end_date           IN DATE
23950 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REBOOK_ALL';
23947        ,p_primary_ledger_id      IN NUMBER)
23948 RETURN BOOLEAN IS
23949 --
23951 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REBOOK';
23952 
23953 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
23954 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
23955 --
23956 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23957 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23958 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23959 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23960 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23961 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23962 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23963 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23964 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23965 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23966 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23967 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23968 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23969 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23970 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23971 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23972 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23973 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23974 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23975 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23976 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23977 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23978 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
23979 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23980 
23981 l_event_id                             NUMBER;
23982 l_previous_event_id                    NUMBER;
23983 l_first_event_id                       NUMBER;
23984 l_last_event_id                        NUMBER;
23985 
23986 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
23987 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
23988 --
23989 --
23990 l_result                    BOOLEAN := TRUE;
23991 l_rows                      NUMBER  := 1000;
23992 l_event_type_name           VARCHAR2(80) := 'All';
23993 l_event_class_name          VARCHAR2(80) := 'Rebook';
23994 l_description               VARCHAR2(4000);
23995 l_transaction_reversal      NUMBER;
23996 l_ae_header_id              NUMBER;
23997 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
23998 l_log_module                VARCHAR2(240);
23999 --
24000 l_acct_reversal_source      VARCHAR2(30);
24001 l_trx_reversal_source       VARCHAR2(30);
24002 
24003 l_continue_with_lines       BOOLEAN := TRUE;
24004 --
24005 l_acc_rev_gl_date_source    DATE;                      -- 4262811
24006 --
24007 type t_array_event_id is table of number index by binary_integer;
24008 
24009 l_rec_array_event                    t_rec_array_event;
24010 l_null_rec_array_event               t_rec_array_event;
24011 l_array_ae_header_id                 xla_number_array_type;
24012 l_actual_flag                        VARCHAR2(1) := NULL;
24013 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
24014 l_balance_type_code                  VARCHAR2(1) :=NULL;
24015 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
24016 
24017 --
24018 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
24019 --
24020 
24021 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
24022 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
24023 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
24024 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
24025 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
24026 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
24027 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
24028 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
24029 
24030 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
24031 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
24032 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
24033 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
24034 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
24035 
24036 l_array_source_1              t_array_source_1;
24037 l_array_source_2              t_array_source_2;
24038 l_array_source_10              t_array_source_10;
24039 l_array_source_11              t_array_source_11;
24040 l_array_source_12              t_array_source_12;
24041 l_array_source_13              t_array_source_13;
24042 l_array_source_15              t_array_source_15;
24043 l_array_source_16              t_array_source_16;
24044 
24045 l_array_source_5      t_array_source_5;
24046 l_array_source_6      t_array_source_6;
24047 l_array_source_6_meaning      t_array_lookup_meaning;
24048 l_array_source_7      t_array_source_7;
24052 --
24049 l_array_source_8      t_array_source_8;
24050 l_array_source_9      t_array_source_9;
24051 
24053 CURSOR header_cur
24054 IS
24055 SELECT /*+ leading(xet) cardinality(xet,1) */
24056 -- Event Class Code: REBOOK
24057     xet.entity_id
24058    ,xet.legal_entity_id
24059    ,xet.entity_code
24060    ,xet.transaction_number
24061    ,xet.event_id
24062    ,xet.event_class_code
24063    ,xet.event_type_code
24064    ,xet.event_number
24065    ,xet.event_date
24066    ,xet.transaction_date
24067    ,xet.reference_num_1
24068    ,xet.reference_num_2
24069    ,xet.reference_num_3
24070    ,xet.reference_num_4
24071    ,xet.reference_char_1
24072    ,xet.reference_char_2
24073    ,xet.reference_char_3
24074    ,xet.reference_char_4
24075    ,xet.reference_date_1
24076    ,xet.reference_date_2
24077    ,xet.reference_date_3
24078    ,xet.reference_date_4
24079    ,xet.event_created_by
24080    ,xet.budgetary_control_flag 
24081   , h1.TEH_CONTRACT_NUMBER    source_1
24082   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
24083   , h1.TCN_CURRENCY_CODE    source_10
24084   , h1.TCN_CURR_CONVERSION_DATE    source_11
24085   , h1.TCN_CURR_CONVERSION_RATE    source_12
24086   , h1.TCN_CURR_CONVERSION_TYPE    source_13
24087   , h1.GL_DATE    source_15
24088   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
24089   FROM xla_events_gt     xet 
24090   , OKL_CMN_EXTRACT_HDR_V  h1
24091  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
24092    and xet.event_class_code = C_EVENT_CLASS_CODE
24093    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
24094 
24095  ORDER BY event_id
24096 ;
24097 
24098 
24099 --
24100 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
24101 IS
24102 SELECT  /*+ leading(xet) cardinality(xet,1) */
24103 -- Event Class Code: REBOOK
24104     xet.entity_id
24105    ,xet.legal_entity_id
24106    ,xet.entity_code
24107    ,xet.transaction_number
24108    ,xet.event_id
24109    ,xet.event_class_code
24110    ,xet.event_type_code
24111    ,xet.event_number
24112    ,xet.event_date
24113    ,xet.transaction_date
24114    ,xet.reference_num_1
24115    ,xet.reference_num_2
24116    ,xet.reference_num_3
24117    ,xet.reference_num_4
24118    ,xet.reference_char_1
24119    ,xet.reference_char_2
24120    ,xet.reference_char_3
24121    ,xet.reference_char_4
24122    ,xet.reference_date_1
24123    ,xet.reference_date_2
24124    ,xet.reference_date_3
24125    ,xet.reference_date_4
24126    ,xet.event_created_by
24127    ,xet.budgetary_control_flag
24128  , l2.LINE_NUMBER  
24129   , l2.DIST_CODE_COMBINATION_ID    source_5
24130   , l2.DIST_AE_LINE_TYPE_CODE    source_6
24131   , fvl6.meaning   source_6_meaning
24132   , l2.DIST_ID    source_7
24133   , l2.DIST_TYPE    source_8
24134   , l2.DIST_ENTERED_AMOUNT    source_9
24135   FROM xla_events_gt     xet 
24136   , OKL_CMN_EXTRACT_LINE_V  l2
24137   , fnd_lookup_values    fvl6
24138  WHERE xet.event_id between x_first_event_id and x_last_event_id
24139    and xet.event_date between p_pad_start_date and p_pad_end_date
24140    and xet.event_class_code = C_EVENT_CLASS_CODE
24141    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
24142    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
24143   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
24144   AND fvl6.view_application_id(+) = 0
24145   AND fvl6.language(+)            = USERENV('LANG')
24146   ;
24147 
24148 --
24149 BEGIN
24150 IF g_log_enabled THEN
24151    l_log_module := C_DEFAULT_MODULE||'.EventClass_39';
24152 END IF;
24153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24154    trace
24155       (p_msg      => 'BEGIN of EventClass_39'
24156       ,p_level    => C_LEVEL_PROCEDURE
24157       ,p_module   => l_log_module);
24158 END IF;
24159 
24160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24161    trace
24162       (p_msg      => 'p_application_id = '||p_application_id||
24163                      ' - p_base_ledger_id = '||p_base_ledger_id||
24164                      ' - p_target_ledger_id  = '||p_target_ledger_id||
24165                      ' - p_language = '||p_language||
24166                      ' - p_currency_code = '||p_currency_code||
24167                      ' - p_sla_ledger_id = '||p_sla_ledger_id
24168       ,p_level    => C_LEVEL_STATEMENT
24169       ,p_module   => l_log_module);
24170 END IF;
24171 --
24172 -- initialze arrays
24173 --
24174 g_array_event.DELETE;
24175 l_rec_array_event := l_null_rec_array_event;
24176 --
24177 --------------------------------------
24178 -- 4262811 Initialze MPA Line Number
24179 --------------------------------------
24180 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
24181 
24182 --
24183 
24184 --
24185 OPEN header_cur;
24186 --
24187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24188    trace
24189    (p_msg      => 'SQL - FETCH header_cur'
24190    ,p_level    => C_LEVEL_STATEMENT
24191    ,p_module   => l_log_module);
24192 END IF;
24193 --
24194 LOOP
24195 FETCH header_cur BULK COLLECT INTO
24196         l_array_entity_id
24197       , l_array_legal_entity_id
24198       , l_array_entity_code
24199       , l_array_transaction_num
24200       , l_array_event_id
24201       , l_array_class_code
24202       , l_array_event_type
24203       , l_array_event_number
24204       , l_array_event_date
24205       , l_array_transaction_date
24206       , l_array_reference_num_1
24207       , l_array_reference_num_2
24208       , l_array_reference_num_3
24209       , l_array_reference_num_4
24210       , l_array_reference_char_1
24211       , l_array_reference_char_2
24215       , l_array_reference_date_2
24212       , l_array_reference_char_3
24213       , l_array_reference_char_4
24214       , l_array_reference_date_1
24216       , l_array_reference_date_3
24217       , l_array_reference_date_4
24218       , l_array_event_created_by
24219       , l_array_budgetary_control_flag 
24220       , l_array_source_1
24221       , l_array_source_2
24222       , l_array_source_10
24223       , l_array_source_11
24224       , l_array_source_12
24225       , l_array_source_13
24226       , l_array_source_15
24227       , l_array_source_16
24228       LIMIT l_rows;
24229 --
24230 IF (C_LEVEL_EVENT >= g_log_level) THEN
24231    trace
24232    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
24233    ,p_level    => C_LEVEL_EVENT
24234    ,p_module   => l_log_module);
24235 END IF;
24236 --
24237 EXIT WHEN l_array_entity_id.COUNT = 0;
24238 
24239 -- initialize arrays
24240 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
24241 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
24242 
24243 --
24244 -- Bug 4458708
24245 --
24246 XLA_AE_LINES_PKG.g_LineNumber := 0;
24247 
24248 
24249 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
24250 g_last_hdr_idx := l_array_event_id.LAST;
24251 --
24252 -- loop for the headers. Each iteration is for each header extract row
24253 -- fetched in header cursor
24254 --
24255 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
24256 
24257 --
24258 -- set event info as cache for other routines to refer event attributes
24259 --
24260 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24261    (p_application_id           => p_application_id
24262    ,p_primary_ledger_id        => p_primary_ledger_id
24263    ,p_base_ledger_id           => p_base_ledger_id
24264    ,p_target_ledger_id         => p_target_ledger_id
24265    ,p_entity_id                => l_array_entity_id(hdr_idx)
24266    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
24267    ,p_entity_code              => l_array_entity_code(hdr_idx)
24268    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
24269    ,p_event_id                 => l_array_event_id(hdr_idx)
24270    ,p_event_class_code         => l_array_class_code(hdr_idx)
24271    ,p_event_type_code          => l_array_event_type(hdr_idx)
24272    ,p_event_number             => l_array_event_number(hdr_idx)
24273    ,p_event_date               => l_array_event_date(hdr_idx)
24274    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
24275    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
24276    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
24277    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
24278    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
24279    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
24280    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
24281    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
24282    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
24283    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
24284    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
24285    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
24286    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
24287    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
24288    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
24289 
24290 --
24291 -- set the status of entry to C_VALID (0)
24292 --
24293 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24294 
24295 --
24296 -- initialize a row for ae header
24297 --
24298 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
24299 
24300 l_event_id := l_array_event_id(hdr_idx);
24301 
24302 --
24303 -- storing the hdr_idx for event. May be used by line cursor.
24304 --
24305 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
24306 
24307 --
24308 -- store sources from header extract. This can be improved to
24309 -- store only those sources from header extract that may be used in lines
24310 --
24311 
24312 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
24313 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
24314 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
24315 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
24316 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
24317 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
24318 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
24319 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
24320 
24321 --
24322 -- initilaize the status of ae headers for diffrent balance types
24323 -- the status is initialised to C_NOT_CREATED (2)
24324 --
24325 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24326 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24327 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24328 
24329 --
24330 -- call api to validate and store accounting attributes for header
24331 --
24332 
24333 ------------------------------------------------------------
24334 -- Accrual Reversal : to get date for Standard Source (NONE)
24335 ------------------------------------------------------------
24336 l_acc_rev_gl_date_source := NULL;
24337 
24338      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
24342 
24339       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
24340      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
24341       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
24343 
24344 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
24345 
24346 XLA_AE_HEADER_PKG.SetJeCategoryName;
24347 
24348 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
24349 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
24350 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
24351 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
24352 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
24353 
24354 
24355 --
24356 xla_ae_header_pkg.SetHdrDescription(
24357    p_description => Description_1 (
24358    p_application_id => p_application_id 
24359  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24360  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24361    )
24362 );
24363 --
24364 
24365 -- No header level analytical criteria
24366 
24367 --
24368 --accounting attribute enhancement, bug 3612931
24369 --
24370 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
24371 
24372 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
24373    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
24374 
24375    xla_accounting_err_pkg.build_message
24376       (p_appli_s_name            => 'XLA'
24377       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
24378       ,p_token_1                 => 'ACCT_ATTR_NAME'
24379       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
24380       ,p_token_2                 => 'PRODUCT_NAME'
24381       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24382       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24383       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
24384       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24385 
24386 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
24387    --
24388    -- following sets the accounting attributes needed to reverse
24389    -- accounting for a distributeion
24390    --
24391    xla_ae_lines_pkg.SetTrxReversalAttrs
24392       (p_event_id              => l_event_id
24393       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
24394       ,p_trx_reversal_source   => l_trx_reversal_source);
24395 
24396 END IF;
24397 
24398 
24399 ----------------------------------------------------------------
24400 -- 4262811 -  update the header statuses to invalid in need be
24401 ----------------------------------------------------------------
24402 --
24403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
24404 
24405 
24406   -----------------------------------------------
24407   -- No accrual reversal for the event class/type
24408   -----------------------------------------------
24409 ----------------------------------------------------------------
24410 
24411 --
24412 -- this ends the header loop iteration for one bulk fetch
24413 --
24414 END LOOP;
24415 
24416 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
24417 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
24418 
24419 --
24420 -- insert dummy rows into lines gt table that were created due to
24421 -- transaction reversals
24422 --
24423 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
24424    l_result := XLA_AE_LINES_PKG.InsertLines;
24425 END IF;
24426 
24427 --
24428 -- reset the temp_line_num for each set of events fetched from header
24429 -- cursor rather than doing it for each new event in line cursor
24430 -- Bug 3939231
24431 --
24432 xla_ae_lines_pkg.g_temp_line_num := 0;
24433 
24434 
24435 
24436 --
24437 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
24438 --
24439 --
24440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24441 
24442       trace
24443          (p_msg      => 'SQL - FETCH line_cur'
24444          ,p_level    => C_LEVEL_STATEMENT
24445          ,p_module   => l_log_module);
24446 
24447 END IF;
24448 --
24449 --
24450 LOOP
24451   --
24452   FETCH line_cur BULK COLLECT INTO
24453         l_array_entity_id
24454       , l_array_legal_entity_id
24455       , l_array_entity_code
24456       , l_array_transaction_num
24457       , l_array_event_id
24458       , l_array_class_code
24459       , l_array_event_type
24460       , l_array_event_number
24461       , l_array_event_date
24462       , l_array_transaction_date
24463       , l_array_reference_num_1
24464       , l_array_reference_num_2
24465       , l_array_reference_num_3
24466       , l_array_reference_num_4
24467       , l_array_reference_char_1
24468       , l_array_reference_char_2
24469       , l_array_reference_char_3
24470       , l_array_reference_char_4
24471       , l_array_reference_date_1
24472       , l_array_reference_date_2
24473       , l_array_reference_date_3
24474       , l_array_reference_date_4
24475       , l_array_event_created_by
24476       , l_array_budgetary_control_flag
24477       , l_array_extract_line_num 
24478       , l_array_source_5
24479       , l_array_source_6
24480       , l_array_source_6_meaning
24481       , l_array_source_7
24482       , l_array_source_8
24486   --
24483       , l_array_source_9
24484       LIMIT l_rows;
24485 
24487   IF (C_LEVEL_EVENT >= g_log_level) THEN
24488             trace
24489                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
24490                ,p_level    => C_LEVEL_EVENT
24491                ,p_module   => l_log_module);
24492   END IF;
24493   --
24494   EXIT WHEN l_array_entity_id.count = 0;
24495 
24496   XLA_AE_LINES_PKG.g_rec_lines := null;
24497 
24498 --
24499 -- Bug 4458708
24500 --
24501 XLA_AE_LINES_PKG.g_LineNumber := 0;
24502 --
24503 --
24504 
24505 FOR Idx IN 1..l_array_event_id.count LOOP
24506    --
24507    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
24508    --
24509    l_event_id := l_array_event_id(idx);  -- 5648433
24510 
24511    --
24512    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
24513    --
24514 
24515    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
24516              (g_array_event(l_event_id).array_value_num('header_index'))
24517          ,'N'
24518          ) <> 'Y'
24519    THEN
24520       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24521          trace
24522             (p_msg      => 'Trancaction revesal option is not Y '
24523             ,p_level    => C_LEVEL_STATEMENT
24524             ,p_module   => l_log_module);
24525       END IF;
24526 
24527 --
24528 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
24529 --
24530 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24531 --
24532 -- set event info as cache for other routines to refer event attributes
24533 --
24534 
24535 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
24536    l_previous_event_id := l_event_id;
24537 
24538    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24539       (p_application_id           => p_application_id
24540       ,p_primary_ledger_id        => p_primary_ledger_id
24541       ,p_base_ledger_id           => p_base_ledger_id
24542       ,p_target_ledger_id         => p_target_ledger_id
24543       ,p_entity_id                => l_array_entity_id(Idx)
24544       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
24545       ,p_entity_code              => l_array_entity_code(Idx)
24546       ,p_transaction_num          => l_array_transaction_num(Idx)
24547       ,p_event_id                 => l_array_event_id(Idx)
24548       ,p_event_class_code         => l_array_class_code(Idx)
24549       ,p_event_type_code          => l_array_event_type(Idx)
24550       ,p_event_number             => l_array_event_number(Idx)
24551       ,p_event_date               => l_array_event_date(Idx)
24552       ,p_transaction_date         => l_array_transaction_date(Idx)
24553       ,p_reference_num_1          => l_array_reference_num_1(Idx)
24554       ,p_reference_num_2          => l_array_reference_num_2(Idx)
24555       ,p_reference_num_3          => l_array_reference_num_3(Idx)
24556       ,p_reference_num_4          => l_array_reference_num_4(Idx)
24557       ,p_reference_char_1         => l_array_reference_char_1(Idx)
24558       ,p_reference_char_2         => l_array_reference_char_2(Idx)
24559       ,p_reference_char_3         => l_array_reference_char_3(Idx)
24560       ,p_reference_char_4         => l_array_reference_char_4(Idx)
24561       ,p_reference_date_1         => l_array_reference_date_1(Idx)
24562       ,p_reference_date_2         => l_array_reference_date_2(Idx)
24563       ,p_reference_date_3         => l_array_reference_date_3(Idx)
24564       ,p_reference_date_4         => l_array_reference_date_4(Idx)
24565       ,p_event_created_by         => l_array_event_created_by(Idx)
24566       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
24567        --
24568 END IF;
24569 
24570 
24571 
24572 --
24573 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
24574 
24575 l_acct_reversal_source := SUBSTR(NULL, 1,30);
24576 
24577 IF l_continue_with_lines THEN
24578    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
24579       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
24580 
24581       xla_accounting_err_pkg.build_message
24582          (p_appli_s_name            => 'XLA'
24583          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
24584          ,p_token_1                 => 'LINE_NUMBER'
24585          ,p_value_1                 => l_array_extract_line_num(Idx)
24586          ,p_token_2                 => 'PRODUCT_NAME'
24587          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24588          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24589          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
24590          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24591 
24592    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
24593       --
24594       -- following sets the accounting attributes needed to reverse
24595       -- accounting for a distributeion
24596       --
24597 
24598       --
24599       -- 5217187
24600       --
24601       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
24602       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
24603                                        g_array_event(l_event_id).array_value_num('header_index'));
24604       --
24605       --
24606 
24607       -- No reversal code generated
24608 
24609       xla_ae_lines_pkg.SetAcctReversalAttrs
24610          (p_event_id             => l_event_id
24611          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
24612          ,p_calculate_acctd_flag => l_calculate_acctd_flag
24613          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
24617        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
24614    END IF;
24615 
24616    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
24618 
24619 --
24620 AcctLineType_18 (
24621  p_application_id  => p_application_id
24622  ,p_event_id     => l_event_id
24623  ,p_calculate_acctd_flag => l_calculate_acctd_flag
24624  ,p_calculate_g_l_flag => l_calculate_g_l_flag
24625  ,p_actual_flag => l_actual_flag
24626  ,p_balance_type_code => l_balance_type_code
24627  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
24628  
24629  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24630  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24631  , p_source_5 => l_array_source_5(Idx)
24632  , p_source_6 => l_array_source_6(Idx)
24633  , p_source_6_meaning => l_array_source_6_meaning(Idx)
24634  , p_source_7 => l_array_source_7(Idx)
24635  , p_source_8 => l_array_source_8(Idx)
24636  , p_source_9 => l_array_source_9(Idx)
24637  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
24638  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
24639  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
24640  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
24641  );
24642 If(l_balance_type_code = 'A') THEN
24643   l_actual_gain_loss_ref := l_gain_or_loss_ref;
24644 END IF;
24645 
24646 --
24647 
24648 
24649 --
24650 AcctLineType_19 (
24651  p_application_id  => p_application_id
24652  ,p_event_id     => l_event_id
24653  ,p_calculate_acctd_flag => l_calculate_acctd_flag
24654  ,p_calculate_g_l_flag => l_calculate_g_l_flag
24655  ,p_actual_flag => l_actual_flag
24656  ,p_balance_type_code => l_balance_type_code
24657  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
24658  
24659  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
24660  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24661  , p_source_5 => l_array_source_5(Idx)
24662  , p_source_6 => l_array_source_6(Idx)
24663  , p_source_6_meaning => l_array_source_6_meaning(Idx)
24664  , p_source_7 => l_array_source_7(Idx)
24665  , p_source_8 => l_array_source_8(Idx)
24666  , p_source_9 => l_array_source_9(Idx)
24667  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
24668  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
24669  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
24670  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
24671  );
24672 If(l_balance_type_code = 'A') THEN
24673   l_actual_gain_loss_ref := l_gain_or_loss_ref;
24674 END IF;
24675 
24676 --
24677 
24678       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
24679       -- or secondary ledger that has different currency with primary
24680       -- or alc that is calculated by sla
24681       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
24682             (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'))
24683 
24684 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
24685 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
24686           AND (l_actual_flag = 'A')) THEN
24687         XLA_AE_LINES_PKG.CreateGainOrLossLines(
24688           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
24689          ,p_application_id   => p_application_id
24690          ,p_amb_context_code => 'DEFAULT'
24691          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
24692          ,p_event_class_code => C_EVENT_CLASS_CODE
24693          ,p_event_type_code  => C_EVENT_TYPE_CODE
24694          
24695          ,p_gain_ccid        => -1
24696          ,p_loss_ccid        => -1
24697 
24698          ,p_actual_flag      => l_actual_flag
24699          ,p_enc_flag         => null
24700          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
24701          ,p_enc_g_l_ref      => null
24702          );
24703       END IF;
24704    END IF;
24705 END IF;
24706 
24707    ELSE
24708       --
24709       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
24710       --
24711       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24712          trace
24713             (p_msg      => 'Trancaction revesal option is Y'
24714             ,p_level    => C_LEVEL_STATEMENT
24715             ,p_module   => l_log_module);
24716       END IF;
24717    END IF;
24718 
24719 END LOOP;
24720 l_result := XLA_AE_LINES_PKG.InsertLines ;
24721 end loop;
24722 close line_cur;
24723 
24724 
24725 --
24726 -- insert headers into xla_ae_headers_gt table
24727 --
24728 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
24729 
24730 -- insert into errors table here.
24731 
24732 END LOOP;
24733 
24734 --
24735 -- 4865292
24736 --
24737 -- Compare g_hdr_extract_count with event count in
24738 -- CreateHeadersAndLines.
24739 --
24740 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
24741 
24742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24743    trace (p_msg     => '# rows extracted from header extract objects '
24744                     || ' (running total): '
24745                     || g_hdr_extract_count
24746          ,p_level   => C_LEVEL_STATEMENT
24747          ,p_module  => l_log_module);
24748 END IF;
24749 
24750 CLOSE header_cur;
24751 --
24752 
24753 --
24754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24755    trace
24756       (p_msg      => 'END of EventClass_39'
24757       ,p_level    => C_LEVEL_PROCEDURE
24761 RETURN l_result;
24758       ,p_module   => l_log_module);
24759 END IF;
24760 --
24762 EXCEPTION
24763 WHEN xla_exceptions_pkg.application_exception THEN
24764    
24765 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
24766 
24767    
24768 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
24769 
24770    RAISE;
24771 WHEN OTHERS THEN
24772    xla_exceptions_pkg.raise_message
24773       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_39');
24774 END EventClass_39;
24775 --
24776 
24777 ---------------------------------------
24778 --
24779 -- PRIVATE PROCEDURE
24780 --         insert_sources_40
24781 --
24782 ----------------------------------------
24783 --
24784 PROCEDURE insert_sources_40(
24785                                 p_target_ledger_id       IN NUMBER
24786                               , p_language               IN VARCHAR2
24787                               , p_sla_ledger_id          IN NUMBER
24788                               , p_pad_start_date         IN DATE
24789                               , p_pad_end_date           IN DATE
24790                          )
24791 IS
24792 
24793 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_APPLICATION_ALL';
24794 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIPT_APPLICATION';
24795 p_apps_owner                   VARCHAR2(30);
24796 l_log_module                   VARCHAR2(240);
24797 BEGIN
24798 IF g_log_enabled THEN
24799       l_log_module := C_DEFAULT_MODULE||'.insert_sources_40';
24800 END IF;
24801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24802 
24803       trace
24804          (p_msg      => 'BEGIN of insert_sources_40'
24805          ,p_level    => C_LEVEL_PROCEDURE
24806          ,p_module   => l_log_module);
24807 
24808 END IF;
24809 
24810 -- select APPS owner
24811 SELECT oracle_username
24812   INTO p_apps_owner
24813   FROM fnd_oracle_userid
24814  WHERE read_only_flag = 'U'
24815 ;
24816 
24817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24818       trace
24819          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
24820                         ' - p_language = '||p_language||
24821                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
24822                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
24823                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
24824                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
24825          ,p_level    => C_LEVEL_STATEMENT
24826          ,p_module   => l_log_module);
24827 END IF;
24828 
24829 
24830 --
24831 INSERT INTO xla_diag_sources --hdr2
24832 (
24833         event_id
24834       , ledger_id
24835       , sla_ledger_id
24836       , description_language
24837       , object_name
24838       , object_type_code
24839       , line_number
24840       , source_application_id
24841       , source_type_code
24842       , source_code
24843       , source_value
24844       , source_meaning
24845       , created_by
24846       , creation_date
24847       , last_update_date
24848       , last_updated_by
24849       , last_update_login
24850       , program_update_date
24851       , program_application_id
24852       , program_id
24853       , request_id
24854 )
24855 SELECT
24856         event_id
24857       , p_target_ledger_id
24858       , p_sla_ledger_id
24859       , p_language
24860       , object_name
24861       , object_type_code
24862       , line_number
24863       , source_application_id
24864       , source_type_code
24865       , source_code
24866       , SUBSTR(source_value ,1,1996)
24867       , SUBSTR(source_meaning ,1,200)
24868       , xla_environment_pkg.g_Usr_Id
24869       , TRUNC(SYSDATE)
24870       , TRUNC(SYSDATE)
24871       , xla_environment_pkg.g_Usr_Id
24872       , xla_environment_pkg.g_Login_Id
24873       , TRUNC(SYSDATE)
24874       , xla_environment_pkg.g_Prog_Appl_Id
24875       , xla_environment_pkg.g_Prog_Id
24876       , xla_environment_pkg.g_Req_Id
24877   FROM (
24878        SELECT xet.event_id                  event_id
24879             , 0                          line_number
24880             , CASE r
24881                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24882                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24883                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24884                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24885                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24886                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24887                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24888                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
24889                 
24890                ELSE null
24891               END                           object_name
24892             , CASE r
24893                 WHEN 1 THEN 'HEADER' 
24894                 WHEN 2 THEN 'HEADER' 
24895                 WHEN 3 THEN 'HEADER' 
24896                 WHEN 4 THEN 'HEADER' 
24897                 WHEN 5 THEN 'HEADER' 
24898                 WHEN 6 THEN 'HEADER' 
24899                 WHEN 7 THEN 'HEADER' 
24900                 WHEN 8 THEN 'HEADER' 
24901                 
24902                 ELSE null
24903               END                           object_type_code
24904             , CASE r
24905                 WHEN 1 THEN '540' 
24906                 WHEN 2 THEN '540' 
24907                 WHEN 3 THEN '540' 
24908                 WHEN 4 THEN '540' 
24909                 WHEN 5 THEN '540' 
24910                 WHEN 6 THEN '540' 
24911                 WHEN 7 THEN '540' 
24912                 WHEN 8 THEN '540' 
24913                 
24914                 ELSE null
24918                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
24915               END                           source_application_id
24916             , 'S'             source_type_code
24917             , CASE r
24919                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
24920                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
24921                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
24922                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
24923                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
24924                 WHEN 7 THEN 'GL_DATE' 
24925                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
24926                 
24927                 ELSE null
24928               END                           source_code
24929             , CASE r
24930                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
24931                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
24932                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
24933                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
24934                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
24935                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
24936                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
24937                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
24938                 
24939                 ELSE null
24940               END                           source_value
24941             , null              source_meaning
24942          FROM xla_events_gt     xet  
24943       , OKL_CMN_EXTRACT_HDR_V  h1
24944              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
24945          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
24946            AND xet.event_class_code = C_EVENT_CLASS_CODE
24947               AND h1.event_id = xet.event_id
24948 
24949 )
24950 ;
24951 --
24952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24953 
24954       trace
24955          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
24956          ,p_level    => C_LEVEL_STATEMENT
24957          ,p_module   => l_log_module);
24958 
24959 END IF;
24960 --
24961 
24962 
24963 
24964 --
24965 INSERT INTO xla_diag_sources  --line2
24966 (
24967         event_id
24968       , ledger_id
24969       , sla_ledger_id
24970       , description_language
24971       , object_name
24972       , object_type_code
24973       , line_number
24974       , source_application_id
24975       , source_type_code
24976       , source_code
24977       , source_value
24978       , source_meaning
24979       , created_by
24980       , creation_date
24981       , last_update_date
24982       , last_updated_by
24983       , last_update_login
24984       , program_update_date
24985       , program_application_id
24986       , program_id
24987       , request_id
24988 )
24989 SELECT  event_id
24990       , p_target_ledger_id
24991       , p_sla_ledger_id
24992       , p_language
24993       , object_name
24994       , object_type_code
24995       , line_number
24996       , source_application_id
24997       , source_type_code
24998       , source_code
24999       , SUBSTR(source_value,1,1996)
25000       , SUBSTR(source_meaning ,1,200)
25001       , xla_environment_pkg.g_Usr_Id
25002       , TRUNC(SYSDATE)
25003       , TRUNC(SYSDATE)
25004       , xla_environment_pkg.g_Usr_Id
25005       , xla_environment_pkg.g_Login_Id
25006       , TRUNC(SYSDATE)
25007       , xla_environment_pkg.g_Prog_Appl_Id
25008       , xla_environment_pkg.g_Prog_Id
25009       , xla_environment_pkg.g_Req_Id
25010   FROM (
25011        SELECT xet.event_id                  event_id
25012             , l2.line_number                 line_number
25013             , CASE r
25014                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
25015                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
25016                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
25017                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
25018                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
25019                 
25020                ELSE null
25021               END                           object_name
25022             , CASE r
25023                 WHEN 1 THEN 'LINE' 
25024                 WHEN 2 THEN 'LINE' 
25025                 WHEN 3 THEN 'LINE' 
25026                 WHEN 4 THEN 'LINE' 
25027                 WHEN 5 THEN 'LINE' 
25028                 
25029                 ELSE null
25030               END                           object_type_code
25031             , CASE r
25032                 WHEN 1 THEN '540' 
25033                 WHEN 2 THEN '540' 
25034                 WHEN 3 THEN '540' 
25035                 WHEN 4 THEN '540' 
25036                 WHEN 5 THEN '540' 
25037                 
25038                 ELSE null
25039               END                           source_application_id
25040             , 'S'             source_type_code
25041             , CASE r
25042                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
25043                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
25044                 WHEN 3 THEN 'DIST_ID' 
25045                 WHEN 4 THEN 'DIST_TYPE' 
25046                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
25047                 
25048                 ELSE null
25049               END                           source_code
25050             , CASE r
25051                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
25052                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
25053                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
25054                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
25055                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
25056                 
25057                 ELSE null
25058               END                           source_value
25062                 ELSE null
25059             , CASE r
25060                 WHEN 2 THEN fvl6.meaning
25061                 
25063               END               source_meaning
25064          FROM  xla_events_gt     xet  
25065         , OKL_CMN_EXTRACT_LINE_V  l2
25066   , fnd_lookup_values    fvl6
25067             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
25068         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
25069           AND xet.event_class_code = C_EVENT_CLASS_CODE
25070             AND l2.event_id          = xet.event_id
25071    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
25072   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
25073   AND fvl6.view_application_id(+) = 0
25074   AND fvl6.language(+)            = USERENV('LANG')
25075   
25076 )
25077 ;
25078 --
25079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25080 
25081       trace
25082          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
25083          ,p_level    => C_LEVEL_STATEMENT
25084          ,p_module   => l_log_module);
25085 
25086 END IF;
25087 
25088 
25089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25090       trace
25091          (p_msg      => 'END of insert_sources_40'
25092          ,p_level    => C_LEVEL_PROCEDURE
25093          ,p_module   => l_log_module);
25094 END IF;
25095 EXCEPTION
25096   WHEN xla_exceptions_pkg.application_exception THEN
25097       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25098             trace
25099                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25100                ,p_level    => C_LEVEL_EXCEPTION
25101                ,p_module   => l_log_module);
25102       END IF;
25103       RAISE;
25104   WHEN OTHERS THEN
25105       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25106             trace
25107                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25108                ,p_level    => C_LEVEL_EXCEPTION
25109                ,p_module   => l_log_module);
25110        END IF;
25111        xla_exceptions_pkg.raise_message
25112            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_40');
25113 END insert_sources_40;
25114 --
25115 
25116 ---------------------------------------
25117 --
25118 -- PRIVATE FUNCTION
25119 --         EventClass_40
25120 --
25121 ----------------------------------------
25122 --
25123 FUNCTION EventClass_40
25124        (p_application_id         IN NUMBER
25125        ,p_base_ledger_id         IN NUMBER
25126        ,p_target_ledger_id       IN NUMBER
25127        ,p_language               IN VARCHAR2
25128        ,p_currency_code          IN VARCHAR2
25129        ,p_sla_ledger_id          IN NUMBER
25130        ,p_pad_start_date         IN DATE
25131        ,p_pad_end_date           IN DATE
25132        ,p_primary_ledger_id      IN NUMBER)
25133 RETURN BOOLEAN IS
25134 --
25135 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_APPLICATION_ALL';
25136 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIPT_APPLICATION';
25137 
25138 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
25139 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
25140 --
25141 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25142 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25143 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25144 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25145 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25146 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25147 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25148 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25149 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25150 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25151 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25152 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25153 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25154 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25155 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25156 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25157 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25158 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25159 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25160 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25161 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25162 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25163 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
25164 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25165 
25166 l_event_id                             NUMBER;
25167 l_previous_event_id                    NUMBER;
25168 l_first_event_id                       NUMBER;
25169 l_last_event_id                        NUMBER;
25170 
25171 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
25172 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
25173 --
25174 --
25175 l_result                    BOOLEAN := TRUE;
25176 l_rows                      NUMBER  := 1000;
25177 l_event_type_name           VARCHAR2(80) := 'All';
25178 l_event_class_name          VARCHAR2(80) := 'Receipt Application';
25179 l_description               VARCHAR2(4000);
25180 l_transaction_reversal      NUMBER;
25181 l_ae_header_id              NUMBER;
25185 l_acct_reversal_source      VARCHAR2(30);
25182 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
25183 l_log_module                VARCHAR2(240);
25184 --
25186 l_trx_reversal_source       VARCHAR2(30);
25187 
25188 l_continue_with_lines       BOOLEAN := TRUE;
25189 --
25190 l_acc_rev_gl_date_source    DATE;                      -- 4262811
25191 --
25192 type t_array_event_id is table of number index by binary_integer;
25193 
25194 l_rec_array_event                    t_rec_array_event;
25195 l_null_rec_array_event               t_rec_array_event;
25196 l_array_ae_header_id                 xla_number_array_type;
25197 l_actual_flag                        VARCHAR2(1) := NULL;
25198 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
25199 l_balance_type_code                  VARCHAR2(1) :=NULL;
25200 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
25201 
25202 --
25203 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
25204 --
25205 
25206 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
25207 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
25208 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
25209 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
25210 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
25211 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
25212 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
25213 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
25214 
25215 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
25216 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
25217 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
25218 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
25219 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
25220 
25221 l_array_source_1              t_array_source_1;
25222 l_array_source_2              t_array_source_2;
25223 l_array_source_10              t_array_source_10;
25224 l_array_source_11              t_array_source_11;
25225 l_array_source_12              t_array_source_12;
25226 l_array_source_13              t_array_source_13;
25227 l_array_source_15              t_array_source_15;
25228 l_array_source_16              t_array_source_16;
25229 
25230 l_array_source_5      t_array_source_5;
25231 l_array_source_6      t_array_source_6;
25232 l_array_source_6_meaning      t_array_lookup_meaning;
25233 l_array_source_7      t_array_source_7;
25234 l_array_source_8      t_array_source_8;
25235 l_array_source_9      t_array_source_9;
25236 
25237 --
25238 CURSOR header_cur
25239 IS
25240 SELECT /*+ leading(xet) cardinality(xet,1) */
25241 -- Event Class Code: RECEIPT_APPLICATION
25242     xet.entity_id
25243    ,xet.legal_entity_id
25244    ,xet.entity_code
25245    ,xet.transaction_number
25246    ,xet.event_id
25247    ,xet.event_class_code
25248    ,xet.event_type_code
25249    ,xet.event_number
25250    ,xet.event_date
25251    ,xet.transaction_date
25252    ,xet.reference_num_1
25253    ,xet.reference_num_2
25254    ,xet.reference_num_3
25255    ,xet.reference_num_4
25256    ,xet.reference_char_1
25257    ,xet.reference_char_2
25258    ,xet.reference_char_3
25259    ,xet.reference_char_4
25260    ,xet.reference_date_1
25261    ,xet.reference_date_2
25262    ,xet.reference_date_3
25263    ,xet.reference_date_4
25264    ,xet.event_created_by
25265    ,xet.budgetary_control_flag 
25266   , h1.TEH_CONTRACT_NUMBER    source_1
25267   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
25268   , h1.TCN_CURRENCY_CODE    source_10
25269   , h1.TCN_CURR_CONVERSION_DATE    source_11
25270   , h1.TCN_CURR_CONVERSION_RATE    source_12
25271   , h1.TCN_CURR_CONVERSION_TYPE    source_13
25272   , h1.GL_DATE    source_15
25273   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
25274   FROM xla_events_gt     xet 
25275   , OKL_CMN_EXTRACT_HDR_V  h1
25276  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
25277    and xet.event_class_code = C_EVENT_CLASS_CODE
25278    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
25279 
25280  ORDER BY event_id
25281 ;
25282 
25283 
25284 --
25285 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
25286 IS
25287 SELECT  /*+ leading(xet) cardinality(xet,1) */
25288 -- Event Class Code: RECEIPT_APPLICATION
25289     xet.entity_id
25290    ,xet.legal_entity_id
25291    ,xet.entity_code
25292    ,xet.transaction_number
25293    ,xet.event_id
25294    ,xet.event_class_code
25295    ,xet.event_type_code
25296    ,xet.event_number
25297    ,xet.event_date
25298    ,xet.transaction_date
25299    ,xet.reference_num_1
25300    ,xet.reference_num_2
25301    ,xet.reference_num_3
25302    ,xet.reference_num_4
25303    ,xet.reference_char_1
25304    ,xet.reference_char_2
25305    ,xet.reference_char_3
25306    ,xet.reference_char_4
25307    ,xet.reference_date_1
25308    ,xet.reference_date_2
25309    ,xet.reference_date_3
25310    ,xet.reference_date_4
25311    ,xet.event_created_by
25312    ,xet.budgetary_control_flag
25313  , l2.LINE_NUMBER  
25314   , l2.DIST_CODE_COMBINATION_ID    source_5
25315   , l2.DIST_AE_LINE_TYPE_CODE    source_6
25316   , fvl6.meaning   source_6_meaning
25320   FROM xla_events_gt     xet 
25317   , l2.DIST_ID    source_7
25318   , l2.DIST_TYPE    source_8
25319   , l2.DIST_ENTERED_AMOUNT    source_9
25321   , OKL_CMN_EXTRACT_LINE_V  l2
25322   , fnd_lookup_values    fvl6
25323  WHERE xet.event_id between x_first_event_id and x_last_event_id
25324    and xet.event_date between p_pad_start_date and p_pad_end_date
25325    and xet.event_class_code = C_EVENT_CLASS_CODE
25326    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
25327    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
25328   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
25329   AND fvl6.view_application_id(+) = 0
25330   AND fvl6.language(+)            = USERENV('LANG')
25331   ;
25332 
25333 --
25334 BEGIN
25335 IF g_log_enabled THEN
25336    l_log_module := C_DEFAULT_MODULE||'.EventClass_40';
25337 END IF;
25338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25339    trace
25340       (p_msg      => 'BEGIN of EventClass_40'
25341       ,p_level    => C_LEVEL_PROCEDURE
25342       ,p_module   => l_log_module);
25343 END IF;
25344 
25345 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25346    trace
25347       (p_msg      => 'p_application_id = '||p_application_id||
25348                      ' - p_base_ledger_id = '||p_base_ledger_id||
25349                      ' - p_target_ledger_id  = '||p_target_ledger_id||
25350                      ' - p_language = '||p_language||
25351                      ' - p_currency_code = '||p_currency_code||
25352                      ' - p_sla_ledger_id = '||p_sla_ledger_id
25353       ,p_level    => C_LEVEL_STATEMENT
25354       ,p_module   => l_log_module);
25355 END IF;
25356 --
25357 -- initialze arrays
25358 --
25359 g_array_event.DELETE;
25360 l_rec_array_event := l_null_rec_array_event;
25361 --
25362 --------------------------------------
25363 -- 4262811 Initialze MPA Line Number
25364 --------------------------------------
25365 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
25366 
25367 --
25368 
25369 --
25370 OPEN header_cur;
25371 --
25372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25373    trace
25374    (p_msg      => 'SQL - FETCH header_cur'
25375    ,p_level    => C_LEVEL_STATEMENT
25376    ,p_module   => l_log_module);
25377 END IF;
25378 --
25379 LOOP
25380 FETCH header_cur BULK COLLECT INTO
25381         l_array_entity_id
25382       , l_array_legal_entity_id
25383       , l_array_entity_code
25384       , l_array_transaction_num
25385       , l_array_event_id
25386       , l_array_class_code
25387       , l_array_event_type
25388       , l_array_event_number
25389       , l_array_event_date
25390       , l_array_transaction_date
25391       , l_array_reference_num_1
25392       , l_array_reference_num_2
25393       , l_array_reference_num_3
25394       , l_array_reference_num_4
25395       , l_array_reference_char_1
25396       , l_array_reference_char_2
25397       , l_array_reference_char_3
25398       , l_array_reference_char_4
25399       , l_array_reference_date_1
25400       , l_array_reference_date_2
25401       , l_array_reference_date_3
25402       , l_array_reference_date_4
25403       , l_array_event_created_by
25404       , l_array_budgetary_control_flag 
25405       , l_array_source_1
25406       , l_array_source_2
25407       , l_array_source_10
25408       , l_array_source_11
25409       , l_array_source_12
25410       , l_array_source_13
25411       , l_array_source_15
25412       , l_array_source_16
25413       LIMIT l_rows;
25414 --
25415 IF (C_LEVEL_EVENT >= g_log_level) THEN
25416    trace
25417    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
25418    ,p_level    => C_LEVEL_EVENT
25419    ,p_module   => l_log_module);
25420 END IF;
25421 --
25422 EXIT WHEN l_array_entity_id.COUNT = 0;
25423 
25424 -- initialize arrays
25425 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
25426 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
25427 
25428 --
25429 -- Bug 4458708
25430 --
25431 XLA_AE_LINES_PKG.g_LineNumber := 0;
25432 
25433 
25434 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
25435 g_last_hdr_idx := l_array_event_id.LAST;
25436 --
25437 -- loop for the headers. Each iteration is for each header extract row
25438 -- fetched in header cursor
25439 --
25440 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
25441 
25442 --
25443 -- set event info as cache for other routines to refer event attributes
25444 --
25445 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
25446    (p_application_id           => p_application_id
25447    ,p_primary_ledger_id        => p_primary_ledger_id
25448    ,p_base_ledger_id           => p_base_ledger_id
25449    ,p_target_ledger_id         => p_target_ledger_id
25450    ,p_entity_id                => l_array_entity_id(hdr_idx)
25451    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
25452    ,p_entity_code              => l_array_entity_code(hdr_idx)
25453    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
25454    ,p_event_id                 => l_array_event_id(hdr_idx)
25455    ,p_event_class_code         => l_array_class_code(hdr_idx)
25456    ,p_event_type_code          => l_array_event_type(hdr_idx)
25457    ,p_event_number             => l_array_event_number(hdr_idx)
25458    ,p_event_date               => l_array_event_date(hdr_idx)
25459    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
25460    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
25461    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
25462    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
25463    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
25467    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
25464    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
25465    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
25466    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
25468    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
25469    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
25470    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
25471    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
25472    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
25473    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
25474 
25475 --
25476 -- set the status of entry to C_VALID (0)
25477 --
25478 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
25479 
25480 --
25481 -- initialize a row for ae header
25482 --
25483 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
25484 
25485 l_event_id := l_array_event_id(hdr_idx);
25486 
25487 --
25488 -- storing the hdr_idx for event. May be used by line cursor.
25489 --
25490 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
25491 
25492 --
25493 -- store sources from header extract. This can be improved to
25494 -- store only those sources from header extract that may be used in lines
25495 --
25496 
25497 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
25498 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
25499 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
25500 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
25501 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
25502 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
25503 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
25504 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
25505 
25506 --
25507 -- initilaize the status of ae headers for diffrent balance types
25508 -- the status is initialised to C_NOT_CREATED (2)
25509 --
25510 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25511 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25512 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25513 
25514 --
25515 -- call api to validate and store accounting attributes for header
25516 --
25517 
25518 ------------------------------------------------------------
25519 -- Accrual Reversal : to get date for Standard Source (NONE)
25520 ------------------------------------------------------------
25521 l_acc_rev_gl_date_source := NULL;
25522 
25523      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
25524       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
25525      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
25526       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
25527 
25528 
25529 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
25530 
25531 XLA_AE_HEADER_PKG.SetJeCategoryName;
25532 
25533 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
25534 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
25535 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
25536 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
25537 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
25538 
25539 
25540 --
25541 xla_ae_header_pkg.SetHdrDescription(
25542    p_description => Description_1 (
25543    p_application_id => p_application_id 
25544  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25545  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25546    )
25547 );
25548 --
25549 
25550 -- No header level analytical criteria
25551 
25552 --
25553 --accounting attribute enhancement, bug 3612931
25554 --
25555 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
25556 
25557 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
25558    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
25559 
25560    xla_accounting_err_pkg.build_message
25561       (p_appli_s_name            => 'XLA'
25562       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
25563       ,p_token_1                 => 'ACCT_ATTR_NAME'
25564       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
25565       ,p_token_2                 => 'PRODUCT_NAME'
25566       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
25567       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
25568       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
25569       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
25570 
25571 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
25572    --
25573    -- following sets the accounting attributes needed to reverse
25574    -- accounting for a distributeion
25575    --
25576    xla_ae_lines_pkg.SetTrxReversalAttrs
25577       (p_event_id              => l_event_id
25578       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
25579       ,p_trx_reversal_source   => l_trx_reversal_source);
25580 
25581 END IF;
25582 
25583 
25587 --
25584 ----------------------------------------------------------------
25585 -- 4262811 -  update the header statuses to invalid in need be
25586 ----------------------------------------------------------------
25588 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
25589 
25590 
25591   -----------------------------------------------
25592   -- No accrual reversal for the event class/type
25593   -----------------------------------------------
25594 ----------------------------------------------------------------
25595 
25596 --
25597 -- this ends the header loop iteration for one bulk fetch
25598 --
25599 END LOOP;
25600 
25601 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
25602 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
25603 
25604 --
25605 -- insert dummy rows into lines gt table that were created due to
25606 -- transaction reversals
25607 --
25608 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
25609    l_result := XLA_AE_LINES_PKG.InsertLines;
25610 END IF;
25611 
25612 --
25613 -- reset the temp_line_num for each set of events fetched from header
25614 -- cursor rather than doing it for each new event in line cursor
25615 -- Bug 3939231
25616 --
25617 xla_ae_lines_pkg.g_temp_line_num := 0;
25618 
25619 
25620 
25621 --
25622 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
25623 --
25624 --
25625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25626 
25627       trace
25628          (p_msg      => 'SQL - FETCH line_cur'
25629          ,p_level    => C_LEVEL_STATEMENT
25630          ,p_module   => l_log_module);
25631 
25632 END IF;
25633 --
25634 --
25635 LOOP
25636   --
25637   FETCH line_cur BULK COLLECT INTO
25638         l_array_entity_id
25639       , l_array_legal_entity_id
25640       , l_array_entity_code
25641       , l_array_transaction_num
25642       , l_array_event_id
25643       , l_array_class_code
25644       , l_array_event_type
25645       , l_array_event_number
25646       , l_array_event_date
25647       , l_array_transaction_date
25648       , l_array_reference_num_1
25649       , l_array_reference_num_2
25650       , l_array_reference_num_3
25651       , l_array_reference_num_4
25652       , l_array_reference_char_1
25653       , l_array_reference_char_2
25654       , l_array_reference_char_3
25655       , l_array_reference_char_4
25656       , l_array_reference_date_1
25657       , l_array_reference_date_2
25658       , l_array_reference_date_3
25659       , l_array_reference_date_4
25660       , l_array_event_created_by
25661       , l_array_budgetary_control_flag
25662       , l_array_extract_line_num 
25663       , l_array_source_5
25664       , l_array_source_6
25665       , l_array_source_6_meaning
25666       , l_array_source_7
25667       , l_array_source_8
25668       , l_array_source_9
25669       LIMIT l_rows;
25670 
25671   --
25672   IF (C_LEVEL_EVENT >= g_log_level) THEN
25673             trace
25674                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
25675                ,p_level    => C_LEVEL_EVENT
25676                ,p_module   => l_log_module);
25677   END IF;
25678   --
25679   EXIT WHEN l_array_entity_id.count = 0;
25680 
25681   XLA_AE_LINES_PKG.g_rec_lines := null;
25682 
25683 --
25684 -- Bug 4458708
25685 --
25686 XLA_AE_LINES_PKG.g_LineNumber := 0;
25687 --
25688 --
25689 
25690 FOR Idx IN 1..l_array_event_id.count LOOP
25691    --
25692    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
25693    --
25694    l_event_id := l_array_event_id(idx);  -- 5648433
25695 
25696    --
25697    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
25698    --
25699 
25700    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
25701              (g_array_event(l_event_id).array_value_num('header_index'))
25702          ,'N'
25703          ) <> 'Y'
25704    THEN
25705       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25706          trace
25707             (p_msg      => 'Trancaction revesal option is not Y '
25708             ,p_level    => C_LEVEL_STATEMENT
25709             ,p_module   => l_log_module);
25710       END IF;
25711 
25712 --
25713 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
25714 --
25715 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
25716 --
25717 -- set event info as cache for other routines to refer event attributes
25718 --
25719 
25720 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
25721    l_previous_event_id := l_event_id;
25722 
25723    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
25724       (p_application_id           => p_application_id
25725       ,p_primary_ledger_id        => p_primary_ledger_id
25726       ,p_base_ledger_id           => p_base_ledger_id
25727       ,p_target_ledger_id         => p_target_ledger_id
25728       ,p_entity_id                => l_array_entity_id(Idx)
25729       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
25730       ,p_entity_code              => l_array_entity_code(Idx)
25731       ,p_transaction_num          => l_array_transaction_num(Idx)
25732       ,p_event_id                 => l_array_event_id(Idx)
25733       ,p_event_class_code         => l_array_class_code(Idx)
25734       ,p_event_type_code          => l_array_event_type(Idx)
25735       ,p_event_number             => l_array_event_number(Idx)
25736       ,p_event_date               => l_array_event_date(Idx)
25737       ,p_transaction_date         => l_array_transaction_date(Idx)
25741       ,p_reference_num_4          => l_array_reference_num_4(Idx)
25738       ,p_reference_num_1          => l_array_reference_num_1(Idx)
25739       ,p_reference_num_2          => l_array_reference_num_2(Idx)
25740       ,p_reference_num_3          => l_array_reference_num_3(Idx)
25742       ,p_reference_char_1         => l_array_reference_char_1(Idx)
25743       ,p_reference_char_2         => l_array_reference_char_2(Idx)
25744       ,p_reference_char_3         => l_array_reference_char_3(Idx)
25745       ,p_reference_char_4         => l_array_reference_char_4(Idx)
25746       ,p_reference_date_1         => l_array_reference_date_1(Idx)
25747       ,p_reference_date_2         => l_array_reference_date_2(Idx)
25748       ,p_reference_date_3         => l_array_reference_date_3(Idx)
25749       ,p_reference_date_4         => l_array_reference_date_4(Idx)
25750       ,p_event_created_by         => l_array_event_created_by(Idx)
25751       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
25752        --
25753 END IF;
25754 
25755 
25756 
25757 --
25758 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
25759 
25760 l_acct_reversal_source := SUBSTR(NULL, 1,30);
25761 
25762 IF l_continue_with_lines THEN
25763    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
25764       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
25765 
25766       xla_accounting_err_pkg.build_message
25767          (p_appli_s_name            => 'XLA'
25768          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
25769          ,p_token_1                 => 'LINE_NUMBER'
25770          ,p_value_1                 => l_array_extract_line_num(Idx)
25771          ,p_token_2                 => 'PRODUCT_NAME'
25772          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
25773          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
25774          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
25775          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
25776 
25777    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
25778       --
25779       -- following sets the accounting attributes needed to reverse
25780       -- accounting for a distributeion
25781       --
25782 
25783       --
25784       -- 5217187
25785       --
25786       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
25787       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
25788                                        g_array_event(l_event_id).array_value_num('header_index'));
25789       --
25790       --
25791 
25792       -- No reversal code generated
25793 
25794       xla_ae_lines_pkg.SetAcctReversalAttrs
25795          (p_event_id             => l_event_id
25796          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
25797          ,p_calculate_acctd_flag => l_calculate_acctd_flag
25798          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
25799    END IF;
25800 
25801    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
25802        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
25803 
25804 --
25805 AcctLineType_20 (
25806  p_application_id  => p_application_id
25807  ,p_event_id     => l_event_id
25808  ,p_calculate_acctd_flag => l_calculate_acctd_flag
25809  ,p_calculate_g_l_flag => l_calculate_g_l_flag
25810  ,p_actual_flag => l_actual_flag
25811  ,p_balance_type_code => l_balance_type_code
25812  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
25813  
25814  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25815  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25816  , p_source_5 => l_array_source_5(Idx)
25817  , p_source_6 => l_array_source_6(Idx)
25818  , p_source_6_meaning => l_array_source_6_meaning(Idx)
25819  , p_source_7 => l_array_source_7(Idx)
25820  , p_source_8 => l_array_source_8(Idx)
25821  , p_source_9 => l_array_source_9(Idx)
25822  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
25823  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
25824  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
25825  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
25826  );
25827 If(l_balance_type_code = 'A') THEN
25828   l_actual_gain_loss_ref := l_gain_or_loss_ref;
25829 END IF;
25830 
25831 --
25832 
25833 
25834 --
25835 AcctLineType_21 (
25836  p_application_id  => p_application_id
25837  ,p_event_id     => l_event_id
25838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
25839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
25840  ,p_actual_flag => l_actual_flag
25841  ,p_balance_type_code => l_balance_type_code
25842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
25843  
25844  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
25845  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25846  , p_source_5 => l_array_source_5(Idx)
25847  , p_source_6 => l_array_source_6(Idx)
25848  , p_source_6_meaning => l_array_source_6_meaning(Idx)
25849  , p_source_7 => l_array_source_7(Idx)
25850  , p_source_8 => l_array_source_8(Idx)
25851  , p_source_9 => l_array_source_9(Idx)
25852  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
25853  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
25854  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
25855  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
25856  );
25857 If(l_balance_type_code = 'A') THEN
25858   l_actual_gain_loss_ref := l_gain_or_loss_ref;
25859 END IF;
25860 
25861 --
25862 
25863       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
25867             (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'))
25864       -- or secondary ledger that has different currency with primary
25865       -- or alc that is calculated by sla
25866       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
25868 
25869 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
25870 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
25871           AND (l_actual_flag = 'A')) THEN
25872         XLA_AE_LINES_PKG.CreateGainOrLossLines(
25873           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
25874          ,p_application_id   => p_application_id
25875          ,p_amb_context_code => 'DEFAULT'
25876          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
25877          ,p_event_class_code => C_EVENT_CLASS_CODE
25878          ,p_event_type_code  => C_EVENT_TYPE_CODE
25879          
25880          ,p_gain_ccid        => -1
25881          ,p_loss_ccid        => -1
25882 
25883          ,p_actual_flag      => l_actual_flag
25884          ,p_enc_flag         => null
25885          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
25886          ,p_enc_g_l_ref      => null
25887          );
25888       END IF;
25889    END IF;
25890 END IF;
25891 
25892    ELSE
25893       --
25894       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
25895       --
25896       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25897          trace
25898             (p_msg      => 'Trancaction revesal option is Y'
25899             ,p_level    => C_LEVEL_STATEMENT
25900             ,p_module   => l_log_module);
25901       END IF;
25902    END IF;
25903 
25904 END LOOP;
25905 l_result := XLA_AE_LINES_PKG.InsertLines ;
25906 end loop;
25907 close line_cur;
25908 
25909 
25910 --
25911 -- insert headers into xla_ae_headers_gt table
25912 --
25913 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
25914 
25915 -- insert into errors table here.
25916 
25917 END LOOP;
25918 
25919 --
25920 -- 4865292
25921 --
25922 -- Compare g_hdr_extract_count with event count in
25923 -- CreateHeadersAndLines.
25924 --
25925 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
25926 
25927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25928    trace (p_msg     => '# rows extracted from header extract objects '
25929                     || ' (running total): '
25930                     || g_hdr_extract_count
25931          ,p_level   => C_LEVEL_STATEMENT
25932          ,p_module  => l_log_module);
25933 END IF;
25934 
25935 CLOSE header_cur;
25936 --
25937 
25938 --
25939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25940    trace
25941       (p_msg      => 'END of EventClass_40'
25942       ,p_level    => C_LEVEL_PROCEDURE
25943       ,p_module   => l_log_module);
25944 END IF;
25945 --
25946 RETURN l_result;
25947 EXCEPTION
25948 WHEN xla_exceptions_pkg.application_exception THEN
25949    
25950 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
25951 
25952    
25953 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
25954 
25955    RAISE;
25956 WHEN OTHERS THEN
25957    xla_exceptions_pkg.raise_message
25958       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_40');
25959 END EventClass_40;
25960 --
25961 
25962 ---------------------------------------
25963 --
25964 -- PRIVATE PROCEDURE
25965 --         insert_sources_41
25966 --
25967 ----------------------------------------
25968 --
25969 PROCEDURE insert_sources_41(
25970                                 p_target_ledger_id       IN NUMBER
25971                               , p_language               IN VARCHAR2
25972                               , p_sla_ledger_id          IN NUMBER
25973                               , p_pad_start_date         IN DATE
25974                               , p_pad_end_date           IN DATE
25975                          )
25976 IS
25977 
25978 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RE_LEASE_ALL';
25979 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RE_LEASE';
25980 p_apps_owner                   VARCHAR2(30);
25981 l_log_module                   VARCHAR2(240);
25982 BEGIN
25983 IF g_log_enabled THEN
25984       l_log_module := C_DEFAULT_MODULE||'.insert_sources_41';
25985 END IF;
25986 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25987 
25988       trace
25989          (p_msg      => 'BEGIN of insert_sources_41'
25990          ,p_level    => C_LEVEL_PROCEDURE
25991          ,p_module   => l_log_module);
25992 
25993 END IF;
25994 
25995 -- select APPS owner
25996 SELECT oracle_username
25997   INTO p_apps_owner
25998   FROM fnd_oracle_userid
25999  WHERE read_only_flag = 'U'
26000 ;
26001 
26002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26003       trace
26004          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
26005                         ' - p_language = '||p_language||
26006                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
26007                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
26008                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
26009                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
26010          ,p_level    => C_LEVEL_STATEMENT
26011          ,p_module   => l_log_module);
26012 END IF;
26013 
26014 
26015 --
26016 INSERT INTO xla_diag_sources --hdr2
26017 (
26018         event_id
26019       , ledger_id
26020       , sla_ledger_id
26021       , description_language
26025       , source_application_id
26022       , object_name
26023       , object_type_code
26024       , line_number
26026       , source_type_code
26027       , source_code
26028       , source_value
26029       , source_meaning
26030       , created_by
26031       , creation_date
26032       , last_update_date
26033       , last_updated_by
26034       , last_update_login
26035       , program_update_date
26036       , program_application_id
26037       , program_id
26038       , request_id
26039 )
26040 SELECT
26041         event_id
26042       , p_target_ledger_id
26043       , p_sla_ledger_id
26044       , p_language
26045       , object_name
26046       , object_type_code
26047       , line_number
26048       , source_application_id
26049       , source_type_code
26050       , source_code
26051       , SUBSTR(source_value ,1,1996)
26052       , SUBSTR(source_meaning ,1,200)
26053       , xla_environment_pkg.g_Usr_Id
26054       , TRUNC(SYSDATE)
26055       , TRUNC(SYSDATE)
26056       , xla_environment_pkg.g_Usr_Id
26057       , xla_environment_pkg.g_Login_Id
26058       , TRUNC(SYSDATE)
26059       , xla_environment_pkg.g_Prog_Appl_Id
26060       , xla_environment_pkg.g_Prog_Id
26061       , xla_environment_pkg.g_Req_Id
26062   FROM (
26063        SELECT xet.event_id                  event_id
26064             , 0                          line_number
26065             , CASE r
26066                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26067                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26068                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26069                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26070                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26071                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26072                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26073                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
26074                 
26075                ELSE null
26076               END                           object_name
26077             , CASE r
26078                 WHEN 1 THEN 'HEADER' 
26079                 WHEN 2 THEN 'HEADER' 
26080                 WHEN 3 THEN 'HEADER' 
26081                 WHEN 4 THEN 'HEADER' 
26082                 WHEN 5 THEN 'HEADER' 
26083                 WHEN 6 THEN 'HEADER' 
26084                 WHEN 7 THEN 'HEADER' 
26085                 WHEN 8 THEN 'HEADER' 
26086                 
26087                 ELSE null
26088               END                           object_type_code
26089             , CASE r
26090                 WHEN 1 THEN '540' 
26091                 WHEN 2 THEN '540' 
26092                 WHEN 3 THEN '540' 
26093                 WHEN 4 THEN '540' 
26094                 WHEN 5 THEN '540' 
26095                 WHEN 6 THEN '540' 
26096                 WHEN 7 THEN '540' 
26097                 WHEN 8 THEN '540' 
26098                 
26099                 ELSE null
26100               END                           source_application_id
26101             , 'S'             source_type_code
26102             , CASE r
26103                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
26104                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
26105                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
26106                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
26107                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
26108                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
26109                 WHEN 7 THEN 'GL_DATE' 
26110                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
26111                 
26112                 ELSE null
26113               END                           source_code
26114             , CASE r
26115                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
26116                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
26117                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
26118                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
26119                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
26120                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
26121                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
26122                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
26123                 
26124                 ELSE null
26125               END                           source_value
26126             , null              source_meaning
26127          FROM xla_events_gt     xet  
26128       , OKL_CMN_EXTRACT_HDR_V  h1
26129              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
26130          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26131            AND xet.event_class_code = C_EVENT_CLASS_CODE
26132               AND h1.event_id = xet.event_id
26133 
26134 )
26135 ;
26136 --
26137 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26138 
26139       trace
26140          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
26141          ,p_level    => C_LEVEL_STATEMENT
26142          ,p_module   => l_log_module);
26143 
26144 END IF;
26145 --
26146 
26147 
26148 
26149 --
26150 INSERT INTO xla_diag_sources  --line2
26151 (
26152         event_id
26153       , ledger_id
26154       , sla_ledger_id
26155       , description_language
26156       , object_name
26157       , object_type_code
26158       , line_number
26159       , source_application_id
26160       , source_type_code
26161       , source_code
26162       , source_value
26163       , source_meaning
26164       , created_by
26165       , creation_date
26166       , last_update_date
26167       , last_updated_by
26168       , last_update_login
26169       , program_update_date
26170       , program_application_id
26171       , program_id
26172       , request_id
26176       , p_sla_ledger_id
26173 )
26174 SELECT  event_id
26175       , p_target_ledger_id
26177       , p_language
26178       , object_name
26179       , object_type_code
26180       , line_number
26181       , source_application_id
26182       , source_type_code
26183       , source_code
26184       , SUBSTR(source_value,1,1996)
26185       , SUBSTR(source_meaning ,1,200)
26186       , xla_environment_pkg.g_Usr_Id
26187       , TRUNC(SYSDATE)
26188       , TRUNC(SYSDATE)
26189       , xla_environment_pkg.g_Usr_Id
26190       , xla_environment_pkg.g_Login_Id
26191       , TRUNC(SYSDATE)
26192       , xla_environment_pkg.g_Prog_Appl_Id
26193       , xla_environment_pkg.g_Prog_Id
26194       , xla_environment_pkg.g_Req_Id
26195   FROM (
26196        SELECT xet.event_id                  event_id
26197             , l2.line_number                 line_number
26198             , CASE r
26199                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
26200                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
26201                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
26202                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
26203                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
26204                 
26205                ELSE null
26206               END                           object_name
26207             , CASE r
26208                 WHEN 1 THEN 'LINE' 
26209                 WHEN 2 THEN 'LINE' 
26210                 WHEN 3 THEN 'LINE' 
26211                 WHEN 4 THEN 'LINE' 
26212                 WHEN 5 THEN 'LINE' 
26213                 
26214                 ELSE null
26215               END                           object_type_code
26216             , CASE r
26217                 WHEN 1 THEN '540' 
26218                 WHEN 2 THEN '540' 
26219                 WHEN 3 THEN '540' 
26220                 WHEN 4 THEN '540' 
26221                 WHEN 5 THEN '540' 
26222                 
26223                 ELSE null
26224               END                           source_application_id
26225             , 'S'             source_type_code
26226             , CASE r
26227                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
26228                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
26229                 WHEN 3 THEN 'DIST_ID' 
26230                 WHEN 4 THEN 'DIST_TYPE' 
26231                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
26232                 
26233                 ELSE null
26234               END                           source_code
26235             , CASE r
26236                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
26237                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
26238                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
26239                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
26240                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
26241                 
26242                 ELSE null
26243               END                           source_value
26244             , CASE r
26245                 WHEN 2 THEN fvl6.meaning
26246                 
26247                 ELSE null
26248               END               source_meaning
26249          FROM  xla_events_gt     xet  
26250         , OKL_CMN_EXTRACT_LINE_V  l2
26251   , fnd_lookup_values    fvl6
26252             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
26253         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26254           AND xet.event_class_code = C_EVENT_CLASS_CODE
26255             AND l2.event_id          = xet.event_id
26256    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
26257   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
26258   AND fvl6.view_application_id(+) = 0
26259   AND fvl6.language(+)            = USERENV('LANG')
26260   
26261 )
26262 ;
26263 --
26264 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26265 
26266       trace
26267          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
26268          ,p_level    => C_LEVEL_STATEMENT
26269          ,p_module   => l_log_module);
26270 
26271 END IF;
26272 
26273 
26274 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26275       trace
26276          (p_msg      => 'END of insert_sources_41'
26277          ,p_level    => C_LEVEL_PROCEDURE
26278          ,p_module   => l_log_module);
26279 END IF;
26280 EXCEPTION
26281   WHEN xla_exceptions_pkg.application_exception THEN
26282       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26283             trace
26284                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26285                ,p_level    => C_LEVEL_EXCEPTION
26286                ,p_module   => l_log_module);
26287       END IF;
26288       RAISE;
26289   WHEN OTHERS THEN
26290       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26291             trace
26292                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26293                ,p_level    => C_LEVEL_EXCEPTION
26294                ,p_module   => l_log_module);
26295        END IF;
26296        xla_exceptions_pkg.raise_message
26297            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_41');
26298 END insert_sources_41;
26299 --
26300 
26301 ---------------------------------------
26302 --
26303 -- PRIVATE FUNCTION
26304 --         EventClass_41
26305 --
26306 ----------------------------------------
26307 --
26308 FUNCTION EventClass_41
26309        (p_application_id         IN NUMBER
26310        ,p_base_ledger_id         IN NUMBER
26311        ,p_target_ledger_id       IN NUMBER
26312        ,p_language               IN VARCHAR2
26313        ,p_currency_code          IN VARCHAR2
26314        ,p_sla_ledger_id          IN NUMBER
26315        ,p_pad_start_date         IN DATE
26316        ,p_pad_end_date           IN DATE
26320 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RE_LEASE_ALL';
26317        ,p_primary_ledger_id      IN NUMBER)
26318 RETURN BOOLEAN IS
26319 --
26321 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RE_LEASE';
26322 
26323 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
26324 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
26325 --
26326 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26327 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26328 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26329 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26330 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26331 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26332 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26333 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26334 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26335 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26336 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26337 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26338 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26339 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26340 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26341 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26342 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26343 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26344 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26345 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26346 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26347 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26348 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
26349 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26350 
26351 l_event_id                             NUMBER;
26352 l_previous_event_id                    NUMBER;
26353 l_first_event_id                       NUMBER;
26354 l_last_event_id                        NUMBER;
26355 
26356 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
26357 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
26358 --
26359 --
26360 l_result                    BOOLEAN := TRUE;
26361 l_rows                      NUMBER  := 1000;
26362 l_event_type_name           VARCHAR2(80) := 'All';
26363 l_event_class_name          VARCHAR2(80) := 'Release';
26364 l_description               VARCHAR2(4000);
26365 l_transaction_reversal      NUMBER;
26366 l_ae_header_id              NUMBER;
26367 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
26368 l_log_module                VARCHAR2(240);
26369 --
26370 l_acct_reversal_source      VARCHAR2(30);
26371 l_trx_reversal_source       VARCHAR2(30);
26372 
26373 l_continue_with_lines       BOOLEAN := TRUE;
26374 --
26375 l_acc_rev_gl_date_source    DATE;                      -- 4262811
26376 --
26377 type t_array_event_id is table of number index by binary_integer;
26378 
26379 l_rec_array_event                    t_rec_array_event;
26380 l_null_rec_array_event               t_rec_array_event;
26381 l_array_ae_header_id                 xla_number_array_type;
26382 l_actual_flag                        VARCHAR2(1) := NULL;
26383 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
26384 l_balance_type_code                  VARCHAR2(1) :=NULL;
26385 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
26386 
26387 --
26388 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
26389 --
26390 
26391 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
26392 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
26393 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
26394 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
26395 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
26396 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
26397 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
26398 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
26399 
26400 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
26401 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
26402 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
26403 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
26404 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
26405 
26406 l_array_source_1              t_array_source_1;
26407 l_array_source_2              t_array_source_2;
26408 l_array_source_10              t_array_source_10;
26409 l_array_source_11              t_array_source_11;
26410 l_array_source_12              t_array_source_12;
26411 l_array_source_13              t_array_source_13;
26412 l_array_source_15              t_array_source_15;
26413 l_array_source_16              t_array_source_16;
26414 
26415 l_array_source_5      t_array_source_5;
26416 l_array_source_6      t_array_source_6;
26417 l_array_source_6_meaning      t_array_lookup_meaning;
26421 
26418 l_array_source_7      t_array_source_7;
26419 l_array_source_8      t_array_source_8;
26420 l_array_source_9      t_array_source_9;
26422 --
26423 CURSOR header_cur
26424 IS
26425 SELECT /*+ leading(xet) cardinality(xet,1) */
26426 -- Event Class Code: RE_LEASE
26427     xet.entity_id
26428    ,xet.legal_entity_id
26429    ,xet.entity_code
26430    ,xet.transaction_number
26431    ,xet.event_id
26432    ,xet.event_class_code
26433    ,xet.event_type_code
26434    ,xet.event_number
26435    ,xet.event_date
26436    ,xet.transaction_date
26437    ,xet.reference_num_1
26438    ,xet.reference_num_2
26439    ,xet.reference_num_3
26440    ,xet.reference_num_4
26441    ,xet.reference_char_1
26442    ,xet.reference_char_2
26443    ,xet.reference_char_3
26444    ,xet.reference_char_4
26445    ,xet.reference_date_1
26446    ,xet.reference_date_2
26447    ,xet.reference_date_3
26448    ,xet.reference_date_4
26449    ,xet.event_created_by
26450    ,xet.budgetary_control_flag 
26451   , h1.TEH_CONTRACT_NUMBER    source_1
26452   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
26453   , h1.TCN_CURRENCY_CODE    source_10
26454   , h1.TCN_CURR_CONVERSION_DATE    source_11
26455   , h1.TCN_CURR_CONVERSION_RATE    source_12
26456   , h1.TCN_CURR_CONVERSION_TYPE    source_13
26457   , h1.GL_DATE    source_15
26458   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
26459   FROM xla_events_gt     xet 
26460   , OKL_CMN_EXTRACT_HDR_V  h1
26461  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
26462    and xet.event_class_code = C_EVENT_CLASS_CODE
26463    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
26464 
26465  ORDER BY event_id
26466 ;
26467 
26468 
26469 --
26470 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
26471 IS
26472 SELECT  /*+ leading(xet) cardinality(xet,1) */
26473 -- Event Class Code: RE_LEASE
26474     xet.entity_id
26475    ,xet.legal_entity_id
26476    ,xet.entity_code
26477    ,xet.transaction_number
26478    ,xet.event_id
26479    ,xet.event_class_code
26480    ,xet.event_type_code
26481    ,xet.event_number
26482    ,xet.event_date
26483    ,xet.transaction_date
26484    ,xet.reference_num_1
26485    ,xet.reference_num_2
26486    ,xet.reference_num_3
26487    ,xet.reference_num_4
26488    ,xet.reference_char_1
26489    ,xet.reference_char_2
26490    ,xet.reference_char_3
26491    ,xet.reference_char_4
26492    ,xet.reference_date_1
26493    ,xet.reference_date_2
26494    ,xet.reference_date_3
26495    ,xet.reference_date_4
26496    ,xet.event_created_by
26497    ,xet.budgetary_control_flag
26498  , l2.LINE_NUMBER  
26499   , l2.DIST_CODE_COMBINATION_ID    source_5
26500   , l2.DIST_AE_LINE_TYPE_CODE    source_6
26501   , fvl6.meaning   source_6_meaning
26502   , l2.DIST_ID    source_7
26503   , l2.DIST_TYPE    source_8
26504   , l2.DIST_ENTERED_AMOUNT    source_9
26505   FROM xla_events_gt     xet 
26506   , OKL_CMN_EXTRACT_LINE_V  l2
26507   , fnd_lookup_values    fvl6
26508  WHERE xet.event_id between x_first_event_id and x_last_event_id
26509    and xet.event_date between p_pad_start_date and p_pad_end_date
26510    and xet.event_class_code = C_EVENT_CLASS_CODE
26511    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
26512    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
26513   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
26514   AND fvl6.view_application_id(+) = 0
26515   AND fvl6.language(+)            = USERENV('LANG')
26516   ;
26517 
26518 --
26519 BEGIN
26520 IF g_log_enabled THEN
26521    l_log_module := C_DEFAULT_MODULE||'.EventClass_41';
26522 END IF;
26523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26524    trace
26525       (p_msg      => 'BEGIN of EventClass_41'
26526       ,p_level    => C_LEVEL_PROCEDURE
26527       ,p_module   => l_log_module);
26528 END IF;
26529 
26530 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26531    trace
26532       (p_msg      => 'p_application_id = '||p_application_id||
26533                      ' - p_base_ledger_id = '||p_base_ledger_id||
26534                      ' - p_target_ledger_id  = '||p_target_ledger_id||
26535                      ' - p_language = '||p_language||
26536                      ' - p_currency_code = '||p_currency_code||
26537                      ' - p_sla_ledger_id = '||p_sla_ledger_id
26538       ,p_level    => C_LEVEL_STATEMENT
26539       ,p_module   => l_log_module);
26540 END IF;
26541 --
26542 -- initialze arrays
26543 --
26544 g_array_event.DELETE;
26545 l_rec_array_event := l_null_rec_array_event;
26546 --
26547 --------------------------------------
26548 -- 4262811 Initialze MPA Line Number
26549 --------------------------------------
26550 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
26551 
26552 --
26553 
26554 --
26555 OPEN header_cur;
26556 --
26557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26558    trace
26559    (p_msg      => 'SQL - FETCH header_cur'
26560    ,p_level    => C_LEVEL_STATEMENT
26561    ,p_module   => l_log_module);
26562 END IF;
26563 --
26564 LOOP
26565 FETCH header_cur BULK COLLECT INTO
26566         l_array_entity_id
26567       , l_array_legal_entity_id
26568       , l_array_entity_code
26569       , l_array_transaction_num
26570       , l_array_event_id
26571       , l_array_class_code
26572       , l_array_event_type
26573       , l_array_event_number
26574       , l_array_event_date
26575       , l_array_transaction_date
26576       , l_array_reference_num_1
26577       , l_array_reference_num_2
26578       , l_array_reference_num_3
26579       , l_array_reference_num_4
26580       , l_array_reference_char_1
26584       , l_array_reference_date_1
26581       , l_array_reference_char_2
26582       , l_array_reference_char_3
26583       , l_array_reference_char_4
26585       , l_array_reference_date_2
26586       , l_array_reference_date_3
26587       , l_array_reference_date_4
26588       , l_array_event_created_by
26589       , l_array_budgetary_control_flag 
26590       , l_array_source_1
26591       , l_array_source_2
26592       , l_array_source_10
26593       , l_array_source_11
26594       , l_array_source_12
26595       , l_array_source_13
26596       , l_array_source_15
26597       , l_array_source_16
26598       LIMIT l_rows;
26599 --
26600 IF (C_LEVEL_EVENT >= g_log_level) THEN
26601    trace
26602    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
26603    ,p_level    => C_LEVEL_EVENT
26604    ,p_module   => l_log_module);
26605 END IF;
26606 --
26607 EXIT WHEN l_array_entity_id.COUNT = 0;
26608 
26609 -- initialize arrays
26610 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
26611 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
26612 
26613 --
26614 -- Bug 4458708
26615 --
26616 XLA_AE_LINES_PKG.g_LineNumber := 0;
26617 
26618 
26619 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
26620 g_last_hdr_idx := l_array_event_id.LAST;
26621 --
26622 -- loop for the headers. Each iteration is for each header extract row
26623 -- fetched in header cursor
26624 --
26625 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
26626 
26627 --
26628 -- set event info as cache for other routines to refer event attributes
26629 --
26630 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
26631    (p_application_id           => p_application_id
26632    ,p_primary_ledger_id        => p_primary_ledger_id
26633    ,p_base_ledger_id           => p_base_ledger_id
26634    ,p_target_ledger_id         => p_target_ledger_id
26635    ,p_entity_id                => l_array_entity_id(hdr_idx)
26636    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
26637    ,p_entity_code              => l_array_entity_code(hdr_idx)
26638    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
26639    ,p_event_id                 => l_array_event_id(hdr_idx)
26640    ,p_event_class_code         => l_array_class_code(hdr_idx)
26641    ,p_event_type_code          => l_array_event_type(hdr_idx)
26642    ,p_event_number             => l_array_event_number(hdr_idx)
26643    ,p_event_date               => l_array_event_date(hdr_idx)
26644    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
26645    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
26646    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
26647    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
26648    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
26649    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
26650    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
26651    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
26652    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
26653    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
26654    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
26655    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
26656    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
26657    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
26658    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
26659 
26660 --
26661 -- set the status of entry to C_VALID (0)
26662 --
26663 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
26664 
26665 --
26666 -- initialize a row for ae header
26667 --
26668 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
26669 
26670 l_event_id := l_array_event_id(hdr_idx);
26671 
26672 --
26673 -- storing the hdr_idx for event. May be used by line cursor.
26674 --
26675 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
26676 
26677 --
26678 -- store sources from header extract. This can be improved to
26679 -- store only those sources from header extract that may be used in lines
26680 --
26681 
26682 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
26683 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
26684 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
26685 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
26686 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
26687 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
26688 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
26689 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
26690 
26691 --
26692 -- initilaize the status of ae headers for diffrent balance types
26693 -- the status is initialised to C_NOT_CREATED (2)
26694 --
26695 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26696 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26697 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
26698 
26699 --
26700 -- call api to validate and store accounting attributes for header
26701 --
26702 
26703 ------------------------------------------------------------
26704 -- Accrual Reversal : to get date for Standard Source (NONE)
26705 ------------------------------------------------------------
26706 l_acc_rev_gl_date_source := NULL;
26707 
26708      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
26712 
26709       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
26710      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
26711       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
26713 
26714 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
26715 
26716 XLA_AE_HEADER_PKG.SetJeCategoryName;
26717 
26718 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
26719 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
26720 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
26721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
26722 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
26723 
26724 
26725 --
26726 xla_ae_header_pkg.SetHdrDescription(
26727    p_description => Description_1 (
26728    p_application_id => p_application_id 
26729  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
26730  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
26731    )
26732 );
26733 --
26734 
26735 -- No header level analytical criteria
26736 
26737 --
26738 --accounting attribute enhancement, bug 3612931
26739 --
26740 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
26741 
26742 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
26743    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
26744 
26745    xla_accounting_err_pkg.build_message
26746       (p_appli_s_name            => 'XLA'
26747       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
26748       ,p_token_1                 => 'ACCT_ATTR_NAME'
26749       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
26750       ,p_token_2                 => 'PRODUCT_NAME'
26751       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
26752       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
26753       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
26754       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
26755 
26756 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
26757    --
26758    -- following sets the accounting attributes needed to reverse
26759    -- accounting for a distributeion
26760    --
26761    xla_ae_lines_pkg.SetTrxReversalAttrs
26762       (p_event_id              => l_event_id
26763       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
26764       ,p_trx_reversal_source   => l_trx_reversal_source);
26765 
26766 END IF;
26767 
26768 
26769 ----------------------------------------------------------------
26770 -- 4262811 -  update the header statuses to invalid in need be
26771 ----------------------------------------------------------------
26772 --
26773 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
26774 
26775 
26776   -----------------------------------------------
26777   -- No accrual reversal for the event class/type
26778   -----------------------------------------------
26779 ----------------------------------------------------------------
26780 
26781 --
26782 -- this ends the header loop iteration for one bulk fetch
26783 --
26784 END LOOP;
26785 
26786 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
26787 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
26788 
26789 --
26790 -- insert dummy rows into lines gt table that were created due to
26791 -- transaction reversals
26792 --
26793 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
26794    l_result := XLA_AE_LINES_PKG.InsertLines;
26795 END IF;
26796 
26797 --
26798 -- reset the temp_line_num for each set of events fetched from header
26799 -- cursor rather than doing it for each new event in line cursor
26800 -- Bug 3939231
26801 --
26802 xla_ae_lines_pkg.g_temp_line_num := 0;
26803 
26804 
26805 
26806 --
26807 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
26808 --
26809 --
26810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26811 
26812       trace
26813          (p_msg      => 'SQL - FETCH line_cur'
26814          ,p_level    => C_LEVEL_STATEMENT
26815          ,p_module   => l_log_module);
26816 
26817 END IF;
26818 --
26819 --
26820 LOOP
26821   --
26822   FETCH line_cur BULK COLLECT INTO
26823         l_array_entity_id
26824       , l_array_legal_entity_id
26825       , l_array_entity_code
26826       , l_array_transaction_num
26827       , l_array_event_id
26828       , l_array_class_code
26829       , l_array_event_type
26830       , l_array_event_number
26831       , l_array_event_date
26832       , l_array_transaction_date
26833       , l_array_reference_num_1
26834       , l_array_reference_num_2
26835       , l_array_reference_num_3
26836       , l_array_reference_num_4
26837       , l_array_reference_char_1
26838       , l_array_reference_char_2
26839       , l_array_reference_char_3
26840       , l_array_reference_char_4
26841       , l_array_reference_date_1
26842       , l_array_reference_date_2
26843       , l_array_reference_date_3
26844       , l_array_reference_date_4
26845       , l_array_event_created_by
26846       , l_array_budgetary_control_flag
26847       , l_array_extract_line_num 
26848       , l_array_source_5
26849       , l_array_source_6
26850       , l_array_source_6_meaning
26851       , l_array_source_7
26852       , l_array_source_8
26856   --
26853       , l_array_source_9
26854       LIMIT l_rows;
26855 
26857   IF (C_LEVEL_EVENT >= g_log_level) THEN
26858             trace
26859                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
26860                ,p_level    => C_LEVEL_EVENT
26861                ,p_module   => l_log_module);
26862   END IF;
26863   --
26864   EXIT WHEN l_array_entity_id.count = 0;
26865 
26866   XLA_AE_LINES_PKG.g_rec_lines := null;
26867 
26868 --
26869 -- Bug 4458708
26870 --
26871 XLA_AE_LINES_PKG.g_LineNumber := 0;
26872 --
26873 --
26874 
26875 FOR Idx IN 1..l_array_event_id.count LOOP
26876    --
26877    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
26878    --
26879    l_event_id := l_array_event_id(idx);  -- 5648433
26880 
26881    --
26882    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
26883    --
26884 
26885    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
26886              (g_array_event(l_event_id).array_value_num('header_index'))
26887          ,'N'
26888          ) <> 'Y'
26889    THEN
26890       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26891          trace
26892             (p_msg      => 'Trancaction revesal option is not Y '
26893             ,p_level    => C_LEVEL_STATEMENT
26894             ,p_module   => l_log_module);
26895       END IF;
26896 
26897 --
26898 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
26899 --
26900 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
26901 --
26902 -- set event info as cache for other routines to refer event attributes
26903 --
26904 
26905 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
26906    l_previous_event_id := l_event_id;
26907 
26908    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
26909       (p_application_id           => p_application_id
26910       ,p_primary_ledger_id        => p_primary_ledger_id
26911       ,p_base_ledger_id           => p_base_ledger_id
26912       ,p_target_ledger_id         => p_target_ledger_id
26913       ,p_entity_id                => l_array_entity_id(Idx)
26914       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
26915       ,p_entity_code              => l_array_entity_code(Idx)
26916       ,p_transaction_num          => l_array_transaction_num(Idx)
26917       ,p_event_id                 => l_array_event_id(Idx)
26918       ,p_event_class_code         => l_array_class_code(Idx)
26919       ,p_event_type_code          => l_array_event_type(Idx)
26920       ,p_event_number             => l_array_event_number(Idx)
26921       ,p_event_date               => l_array_event_date(Idx)
26922       ,p_transaction_date         => l_array_transaction_date(Idx)
26923       ,p_reference_num_1          => l_array_reference_num_1(Idx)
26924       ,p_reference_num_2          => l_array_reference_num_2(Idx)
26925       ,p_reference_num_3          => l_array_reference_num_3(Idx)
26926       ,p_reference_num_4          => l_array_reference_num_4(Idx)
26927       ,p_reference_char_1         => l_array_reference_char_1(Idx)
26928       ,p_reference_char_2         => l_array_reference_char_2(Idx)
26929       ,p_reference_char_3         => l_array_reference_char_3(Idx)
26930       ,p_reference_char_4         => l_array_reference_char_4(Idx)
26931       ,p_reference_date_1         => l_array_reference_date_1(Idx)
26932       ,p_reference_date_2         => l_array_reference_date_2(Idx)
26933       ,p_reference_date_3         => l_array_reference_date_3(Idx)
26934       ,p_reference_date_4         => l_array_reference_date_4(Idx)
26935       ,p_event_created_by         => l_array_event_created_by(Idx)
26936       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
26937        --
26938 END IF;
26939 
26940 
26941 
26942 --
26943 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
26944 
26945 l_acct_reversal_source := SUBSTR(NULL, 1,30);
26946 
26947 IF l_continue_with_lines THEN
26948    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
26949       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
26950 
26951       xla_accounting_err_pkg.build_message
26952          (p_appli_s_name            => 'XLA'
26953          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
26954          ,p_token_1                 => 'LINE_NUMBER'
26955          ,p_value_1                 => l_array_extract_line_num(Idx)
26956          ,p_token_2                 => 'PRODUCT_NAME'
26957          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
26958          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
26959          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
26960          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
26961 
26962    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
26963       --
26964       -- following sets the accounting attributes needed to reverse
26965       -- accounting for a distributeion
26966       --
26967 
26968       --
26969       -- 5217187
26970       --
26971       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
26972       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
26973                                        g_array_event(l_event_id).array_value_num('header_index'));
26974       --
26975       --
26976 
26977       -- No reversal code generated
26978 
26979       xla_ae_lines_pkg.SetAcctReversalAttrs
26980          (p_event_id             => l_event_id
26981          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
26982          ,p_calculate_acctd_flag => l_calculate_acctd_flag
26983          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
26987        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
26984    END IF;
26985 
26986    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
26988 
26989 --
26990 AcctLineType_22 (
26991  p_application_id  => p_application_id
26992  ,p_event_id     => l_event_id
26993  ,p_calculate_acctd_flag => l_calculate_acctd_flag
26994  ,p_calculate_g_l_flag => l_calculate_g_l_flag
26995  ,p_actual_flag => l_actual_flag
26996  ,p_balance_type_code => l_balance_type_code
26997  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
26998  
26999  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27000  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27001  , p_source_5 => l_array_source_5(Idx)
27002  , p_source_6 => l_array_source_6(Idx)
27003  , p_source_6_meaning => l_array_source_6_meaning(Idx)
27004  , p_source_7 => l_array_source_7(Idx)
27005  , p_source_8 => l_array_source_8(Idx)
27006  , p_source_9 => l_array_source_9(Idx)
27007  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
27008  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
27009  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
27010  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
27011  );
27012 If(l_balance_type_code = 'A') THEN
27013   l_actual_gain_loss_ref := l_gain_or_loss_ref;
27014 END IF;
27015 
27016 --
27017 
27018 
27019 --
27020 AcctLineType_23 (
27021  p_application_id  => p_application_id
27022  ,p_event_id     => l_event_id
27023  ,p_calculate_acctd_flag => l_calculate_acctd_flag
27024  ,p_calculate_g_l_flag => l_calculate_g_l_flag
27025  ,p_actual_flag => l_actual_flag
27026  ,p_balance_type_code => l_balance_type_code
27027  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
27028  
27029  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27030  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27031  , p_source_5 => l_array_source_5(Idx)
27032  , p_source_6 => l_array_source_6(Idx)
27033  , p_source_6_meaning => l_array_source_6_meaning(Idx)
27034  , p_source_7 => l_array_source_7(Idx)
27035  , p_source_8 => l_array_source_8(Idx)
27036  , p_source_9 => l_array_source_9(Idx)
27037  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
27038  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
27039  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
27040  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
27041  );
27042 If(l_balance_type_code = 'A') THEN
27043   l_actual_gain_loss_ref := l_gain_or_loss_ref;
27044 END IF;
27045 
27046 --
27047 
27048       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
27049       -- or secondary ledger that has different currency with primary
27050       -- or alc that is calculated by sla
27051       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
27052             (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'))
27053 
27054 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
27055 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
27056           AND (l_actual_flag = 'A')) THEN
27057         XLA_AE_LINES_PKG.CreateGainOrLossLines(
27058           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
27059          ,p_application_id   => p_application_id
27060          ,p_amb_context_code => 'DEFAULT'
27061          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
27062          ,p_event_class_code => C_EVENT_CLASS_CODE
27063          ,p_event_type_code  => C_EVENT_TYPE_CODE
27064          
27065          ,p_gain_ccid        => -1
27066          ,p_loss_ccid        => -1
27067 
27068          ,p_actual_flag      => l_actual_flag
27069          ,p_enc_flag         => null
27070          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
27071          ,p_enc_g_l_ref      => null
27072          );
27073       END IF;
27074    END IF;
27075 END IF;
27076 
27077    ELSE
27078       --
27079       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
27080       --
27081       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27082          trace
27083             (p_msg      => 'Trancaction revesal option is Y'
27084             ,p_level    => C_LEVEL_STATEMENT
27085             ,p_module   => l_log_module);
27086       END IF;
27087    END IF;
27088 
27089 END LOOP;
27090 l_result := XLA_AE_LINES_PKG.InsertLines ;
27091 end loop;
27092 close line_cur;
27093 
27094 
27095 --
27096 -- insert headers into xla_ae_headers_gt table
27097 --
27098 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
27099 
27100 -- insert into errors table here.
27101 
27102 END LOOP;
27103 
27104 --
27105 -- 4865292
27106 --
27107 -- Compare g_hdr_extract_count with event count in
27108 -- CreateHeadersAndLines.
27109 --
27110 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
27111 
27112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27113    trace (p_msg     => '# rows extracted from header extract objects '
27114                     || ' (running total): '
27115                     || g_hdr_extract_count
27116          ,p_level   => C_LEVEL_STATEMENT
27117          ,p_module  => l_log_module);
27118 END IF;
27119 
27120 CLOSE header_cur;
27121 --
27122 
27123 --
27124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27125    trace
27126       (p_msg      => 'END of EventClass_41'
27127       ,p_level    => C_LEVEL_PROCEDURE
27131 RETURN l_result;
27128       ,p_module   => l_log_module);
27129 END IF;
27130 --
27132 EXCEPTION
27133 WHEN xla_exceptions_pkg.application_exception THEN
27134    
27135 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
27136 
27137    
27138 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
27139 
27140    RAISE;
27141 WHEN OTHERS THEN
27142    xla_exceptions_pkg.raise_message
27143       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_41');
27144 END EventClass_41;
27145 --
27146 
27147 ---------------------------------------
27148 --
27149 -- PRIVATE PROCEDURE
27150 --         insert_sources_42
27151 --
27152 ----------------------------------------
27153 --
27154 PROCEDURE insert_sources_42(
27155                                 p_target_ledger_id       IN NUMBER
27156                               , p_language               IN VARCHAR2
27157                               , p_sla_ledger_id          IN NUMBER
27158                               , p_pad_start_date         IN DATE
27159                               , p_pad_end_date           IN DATE
27160                          )
27161 IS
27162 
27163 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SPECIFIC_LOSS_PROVISION_ALL';
27164 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
27165 p_apps_owner                   VARCHAR2(30);
27166 l_log_module                   VARCHAR2(240);
27167 BEGIN
27168 IF g_log_enabled THEN
27169       l_log_module := C_DEFAULT_MODULE||'.insert_sources_42';
27170 END IF;
27171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27172 
27173       trace
27174          (p_msg      => 'BEGIN of insert_sources_42'
27175          ,p_level    => C_LEVEL_PROCEDURE
27176          ,p_module   => l_log_module);
27177 
27178 END IF;
27179 
27180 -- select APPS owner
27181 SELECT oracle_username
27182   INTO p_apps_owner
27183   FROM fnd_oracle_userid
27184  WHERE read_only_flag = 'U'
27185 ;
27186 
27187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27188       trace
27189          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
27190                         ' - p_language = '||p_language||
27191                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
27192                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
27193                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
27194                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
27195          ,p_level    => C_LEVEL_STATEMENT
27196          ,p_module   => l_log_module);
27197 END IF;
27198 
27199 
27200 --
27201 INSERT INTO xla_diag_sources --hdr2
27202 (
27203         event_id
27204       , ledger_id
27205       , sla_ledger_id
27206       , description_language
27207       , object_name
27208       , object_type_code
27209       , line_number
27210       , source_application_id
27211       , source_type_code
27212       , source_code
27213       , source_value
27214       , source_meaning
27215       , created_by
27216       , creation_date
27217       , last_update_date
27218       , last_updated_by
27219       , last_update_login
27220       , program_update_date
27221       , program_application_id
27222       , program_id
27223       , request_id
27224 )
27225 SELECT
27226         event_id
27227       , p_target_ledger_id
27228       , p_sla_ledger_id
27229       , p_language
27230       , object_name
27231       , object_type_code
27232       , line_number
27233       , source_application_id
27234       , source_type_code
27235       , source_code
27236       , SUBSTR(source_value ,1,1996)
27237       , SUBSTR(source_meaning ,1,200)
27238       , xla_environment_pkg.g_Usr_Id
27239       , TRUNC(SYSDATE)
27240       , TRUNC(SYSDATE)
27241       , xla_environment_pkg.g_Usr_Id
27242       , xla_environment_pkg.g_Login_Id
27243       , TRUNC(SYSDATE)
27244       , xla_environment_pkg.g_Prog_Appl_Id
27245       , xla_environment_pkg.g_Prog_Id
27246       , xla_environment_pkg.g_Req_Id
27247   FROM (
27248        SELECT xet.event_id                  event_id
27249             , 0                          line_number
27250             , CASE r
27251                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27252                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27253                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27254                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27255                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27256                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27257                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27258                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
27259                 
27260                ELSE null
27261               END                           object_name
27262             , CASE r
27263                 WHEN 1 THEN 'HEADER' 
27264                 WHEN 2 THEN 'HEADER' 
27265                 WHEN 3 THEN 'HEADER' 
27266                 WHEN 4 THEN 'HEADER' 
27267                 WHEN 5 THEN 'HEADER' 
27268                 WHEN 6 THEN 'HEADER' 
27269                 WHEN 7 THEN 'HEADER' 
27270                 WHEN 8 THEN 'HEADER' 
27271                 
27272                 ELSE null
27273               END                           object_type_code
27274             , CASE r
27275                 WHEN 1 THEN '540' 
27276                 WHEN 2 THEN '540' 
27277                 WHEN 3 THEN '540' 
27278                 WHEN 4 THEN '540' 
27279                 WHEN 5 THEN '540' 
27280                 WHEN 6 THEN '540' 
27281                 WHEN 7 THEN '540' 
27282                 WHEN 8 THEN '540' 
27283                 
27284                 ELSE null
27288                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
27285               END                           source_application_id
27286             , 'S'             source_type_code
27287             , CASE r
27289                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
27290                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
27291                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
27292                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
27293                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
27294                 WHEN 7 THEN 'GL_DATE' 
27295                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
27296                 
27297                 ELSE null
27298               END                           source_code
27299             , CASE r
27300                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
27301                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
27302                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
27303                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
27304                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
27305                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
27306                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
27307                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
27308                 
27309                 ELSE null
27310               END                           source_value
27311             , null              source_meaning
27312          FROM xla_events_gt     xet  
27313       , OKL_CMN_EXTRACT_HDR_V  h1
27314              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
27315          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
27316            AND xet.event_class_code = C_EVENT_CLASS_CODE
27317               AND h1.event_id = xet.event_id
27318 
27319 )
27320 ;
27321 --
27322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27323 
27324       trace
27325          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
27326          ,p_level    => C_LEVEL_STATEMENT
27327          ,p_module   => l_log_module);
27328 
27329 END IF;
27330 --
27331 
27332 
27333 
27334 --
27335 INSERT INTO xla_diag_sources  --line2
27336 (
27337         event_id
27338       , ledger_id
27339       , sla_ledger_id
27340       , description_language
27341       , object_name
27342       , object_type_code
27343       , line_number
27344       , source_application_id
27345       , source_type_code
27346       , source_code
27347       , source_value
27348       , source_meaning
27349       , created_by
27350       , creation_date
27351       , last_update_date
27352       , last_updated_by
27353       , last_update_login
27354       , program_update_date
27355       , program_application_id
27356       , program_id
27357       , request_id
27358 )
27359 SELECT  event_id
27360       , p_target_ledger_id
27361       , p_sla_ledger_id
27362       , p_language
27363       , object_name
27364       , object_type_code
27365       , line_number
27366       , source_application_id
27367       , source_type_code
27368       , source_code
27369       , SUBSTR(source_value,1,1996)
27370       , SUBSTR(source_meaning ,1,200)
27371       , xla_environment_pkg.g_Usr_Id
27372       , TRUNC(SYSDATE)
27373       , TRUNC(SYSDATE)
27374       , xla_environment_pkg.g_Usr_Id
27375       , xla_environment_pkg.g_Login_Id
27376       , TRUNC(SYSDATE)
27377       , xla_environment_pkg.g_Prog_Appl_Id
27378       , xla_environment_pkg.g_Prog_Id
27379       , xla_environment_pkg.g_Req_Id
27380   FROM (
27381        SELECT xet.event_id                  event_id
27382             , l2.line_number                 line_number
27383             , CASE r
27384                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
27385                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
27386                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
27387                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
27388                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
27389                 
27390                ELSE null
27391               END                           object_name
27392             , CASE r
27393                 WHEN 1 THEN 'LINE' 
27394                 WHEN 2 THEN 'LINE' 
27395                 WHEN 3 THEN 'LINE' 
27396                 WHEN 4 THEN 'LINE' 
27397                 WHEN 5 THEN 'LINE' 
27398                 
27399                 ELSE null
27400               END                           object_type_code
27401             , CASE r
27402                 WHEN 1 THEN '540' 
27403                 WHEN 2 THEN '540' 
27404                 WHEN 3 THEN '540' 
27405                 WHEN 4 THEN '540' 
27406                 WHEN 5 THEN '540' 
27407                 
27408                 ELSE null
27409               END                           source_application_id
27410             , 'S'             source_type_code
27411             , CASE r
27412                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
27413                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
27414                 WHEN 3 THEN 'DIST_ID' 
27415                 WHEN 4 THEN 'DIST_TYPE' 
27416                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
27417                 
27418                 ELSE null
27419               END                           source_code
27420             , CASE r
27421                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
27422                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
27423                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
27424                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
27425                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
27426                 
27427                 ELSE null
27428               END                           source_value
27432                 ELSE null
27429             , CASE r
27430                 WHEN 2 THEN fvl6.meaning
27431                 
27433               END               source_meaning
27434          FROM  xla_events_gt     xet  
27435         , OKL_CMN_EXTRACT_LINE_V  l2
27436   , fnd_lookup_values    fvl6
27437             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
27438         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
27439           AND xet.event_class_code = C_EVENT_CLASS_CODE
27440             AND l2.event_id          = xet.event_id
27441    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
27442   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
27443   AND fvl6.view_application_id(+) = 0
27444   AND fvl6.language(+)            = USERENV('LANG')
27445   
27446 )
27447 ;
27448 --
27449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27450 
27451       trace
27452          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
27453          ,p_level    => C_LEVEL_STATEMENT
27454          ,p_module   => l_log_module);
27455 
27456 END IF;
27457 
27458 
27459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27460       trace
27461          (p_msg      => 'END of insert_sources_42'
27462          ,p_level    => C_LEVEL_PROCEDURE
27463          ,p_module   => l_log_module);
27464 END IF;
27465 EXCEPTION
27466   WHEN xla_exceptions_pkg.application_exception THEN
27467       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
27468             trace
27469                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
27470                ,p_level    => C_LEVEL_EXCEPTION
27471                ,p_module   => l_log_module);
27472       END IF;
27473       RAISE;
27474   WHEN OTHERS THEN
27475       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
27476             trace
27477                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
27478                ,p_level    => C_LEVEL_EXCEPTION
27479                ,p_module   => l_log_module);
27480        END IF;
27481        xla_exceptions_pkg.raise_message
27482            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_42');
27483 END insert_sources_42;
27484 --
27485 
27486 ---------------------------------------
27487 --
27488 -- PRIVATE FUNCTION
27489 --         EventClass_42
27490 --
27491 ----------------------------------------
27492 --
27493 FUNCTION EventClass_42
27494        (p_application_id         IN NUMBER
27495        ,p_base_ledger_id         IN NUMBER
27496        ,p_target_ledger_id       IN NUMBER
27497        ,p_language               IN VARCHAR2
27498        ,p_currency_code          IN VARCHAR2
27499        ,p_sla_ledger_id          IN NUMBER
27500        ,p_pad_start_date         IN DATE
27501        ,p_pad_end_date           IN DATE
27502        ,p_primary_ledger_id      IN NUMBER)
27503 RETURN BOOLEAN IS
27504 --
27505 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SPECIFIC_LOSS_PROVISION_ALL';
27506 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
27507 
27508 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
27509 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
27510 --
27511 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27512 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27513 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27514 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27515 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27516 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27517 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27518 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27519 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27520 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27521 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27522 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27523 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27524 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
27525 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27526 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27527 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27528 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
27529 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27530 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27531 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27532 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
27533 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
27534 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
27535 
27536 l_event_id                             NUMBER;
27537 l_previous_event_id                    NUMBER;
27538 l_first_event_id                       NUMBER;
27539 l_last_event_id                        NUMBER;
27540 
27541 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
27542 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
27543 --
27544 --
27545 l_result                    BOOLEAN := TRUE;
27546 l_rows                      NUMBER  := 1000;
27547 l_event_type_name           VARCHAR2(80) := 'All';
27548 l_event_class_name          VARCHAR2(80) := 'Specific Loss Provision';
27549 l_description               VARCHAR2(4000);
27550 l_transaction_reversal      NUMBER;
27551 l_ae_header_id              NUMBER;
27555 l_acct_reversal_source      VARCHAR2(30);
27552 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
27553 l_log_module                VARCHAR2(240);
27554 --
27556 l_trx_reversal_source       VARCHAR2(30);
27557 
27558 l_continue_with_lines       BOOLEAN := TRUE;
27559 --
27560 l_acc_rev_gl_date_source    DATE;                      -- 4262811
27561 --
27562 type t_array_event_id is table of number index by binary_integer;
27563 
27564 l_rec_array_event                    t_rec_array_event;
27565 l_null_rec_array_event               t_rec_array_event;
27566 l_array_ae_header_id                 xla_number_array_type;
27567 l_actual_flag                        VARCHAR2(1) := NULL;
27568 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
27569 l_balance_type_code                  VARCHAR2(1) :=NULL;
27570 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
27571 
27572 --
27573 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
27574 --
27575 
27576 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
27577 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
27578 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
27579 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
27580 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
27581 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
27582 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
27583 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
27584 
27585 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
27586 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
27587 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
27588 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
27589 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
27590 
27591 l_array_source_1              t_array_source_1;
27592 l_array_source_2              t_array_source_2;
27593 l_array_source_10              t_array_source_10;
27594 l_array_source_11              t_array_source_11;
27595 l_array_source_12              t_array_source_12;
27596 l_array_source_13              t_array_source_13;
27597 l_array_source_15              t_array_source_15;
27598 l_array_source_16              t_array_source_16;
27599 
27600 l_array_source_5      t_array_source_5;
27601 l_array_source_6      t_array_source_6;
27602 l_array_source_6_meaning      t_array_lookup_meaning;
27603 l_array_source_7      t_array_source_7;
27604 l_array_source_8      t_array_source_8;
27605 l_array_source_9      t_array_source_9;
27606 
27607 --
27608 CURSOR header_cur
27609 IS
27610 SELECT /*+ leading(xet) cardinality(xet,1) */
27611 -- Event Class Code: SPECIFIC_LOSS_PROVISION
27612     xet.entity_id
27613    ,xet.legal_entity_id
27614    ,xet.entity_code
27615    ,xet.transaction_number
27616    ,xet.event_id
27617    ,xet.event_class_code
27618    ,xet.event_type_code
27619    ,xet.event_number
27620    ,xet.event_date
27621    ,xet.transaction_date
27622    ,xet.reference_num_1
27623    ,xet.reference_num_2
27624    ,xet.reference_num_3
27625    ,xet.reference_num_4
27626    ,xet.reference_char_1
27627    ,xet.reference_char_2
27628    ,xet.reference_char_3
27629    ,xet.reference_char_4
27630    ,xet.reference_date_1
27631    ,xet.reference_date_2
27632    ,xet.reference_date_3
27633    ,xet.reference_date_4
27634    ,xet.event_created_by
27635    ,xet.budgetary_control_flag 
27636   , h1.TEH_CONTRACT_NUMBER    source_1
27637   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
27638   , h1.TCN_CURRENCY_CODE    source_10
27639   , h1.TCN_CURR_CONVERSION_DATE    source_11
27640   , h1.TCN_CURR_CONVERSION_RATE    source_12
27641   , h1.TCN_CURR_CONVERSION_TYPE    source_13
27642   , h1.GL_DATE    source_15
27643   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
27644   FROM xla_events_gt     xet 
27645   , OKL_CMN_EXTRACT_HDR_V  h1
27646  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
27647    and xet.event_class_code = C_EVENT_CLASS_CODE
27648    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
27649 
27650  ORDER BY event_id
27651 ;
27652 
27653 
27654 --
27655 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
27656 IS
27657 SELECT  /*+ leading(xet) cardinality(xet,1) */
27658 -- Event Class Code: SPECIFIC_LOSS_PROVISION
27659     xet.entity_id
27660    ,xet.legal_entity_id
27661    ,xet.entity_code
27662    ,xet.transaction_number
27663    ,xet.event_id
27664    ,xet.event_class_code
27665    ,xet.event_type_code
27666    ,xet.event_number
27667    ,xet.event_date
27668    ,xet.transaction_date
27669    ,xet.reference_num_1
27670    ,xet.reference_num_2
27671    ,xet.reference_num_3
27672    ,xet.reference_num_4
27673    ,xet.reference_char_1
27674    ,xet.reference_char_2
27675    ,xet.reference_char_3
27676    ,xet.reference_char_4
27677    ,xet.reference_date_1
27678    ,xet.reference_date_2
27679    ,xet.reference_date_3
27680    ,xet.reference_date_4
27681    ,xet.event_created_by
27682    ,xet.budgetary_control_flag
27683  , l2.LINE_NUMBER  
27684   , l2.DIST_CODE_COMBINATION_ID    source_5
27685   , l2.DIST_AE_LINE_TYPE_CODE    source_6
27686   , fvl6.meaning   source_6_meaning
27690   FROM xla_events_gt     xet 
27687   , l2.DIST_ID    source_7
27688   , l2.DIST_TYPE    source_8
27689   , l2.DIST_ENTERED_AMOUNT    source_9
27691   , OKL_CMN_EXTRACT_LINE_V  l2
27692   , fnd_lookup_values    fvl6
27693  WHERE xet.event_id between x_first_event_id and x_last_event_id
27694    and xet.event_date between p_pad_start_date and p_pad_end_date
27695    and xet.event_class_code = C_EVENT_CLASS_CODE
27696    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
27697    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
27698   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
27699   AND fvl6.view_application_id(+) = 0
27700   AND fvl6.language(+)            = USERENV('LANG')
27701   ;
27702 
27703 --
27704 BEGIN
27705 IF g_log_enabled THEN
27706    l_log_module := C_DEFAULT_MODULE||'.EventClass_42';
27707 END IF;
27708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27709    trace
27710       (p_msg      => 'BEGIN of EventClass_42'
27711       ,p_level    => C_LEVEL_PROCEDURE
27712       ,p_module   => l_log_module);
27713 END IF;
27714 
27715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27716    trace
27717       (p_msg      => 'p_application_id = '||p_application_id||
27718                      ' - p_base_ledger_id = '||p_base_ledger_id||
27719                      ' - p_target_ledger_id  = '||p_target_ledger_id||
27720                      ' - p_language = '||p_language||
27721                      ' - p_currency_code = '||p_currency_code||
27722                      ' - p_sla_ledger_id = '||p_sla_ledger_id
27723       ,p_level    => C_LEVEL_STATEMENT
27724       ,p_module   => l_log_module);
27725 END IF;
27726 --
27727 -- initialze arrays
27728 --
27729 g_array_event.DELETE;
27730 l_rec_array_event := l_null_rec_array_event;
27731 --
27732 --------------------------------------
27733 -- 4262811 Initialze MPA Line Number
27734 --------------------------------------
27735 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
27736 
27737 --
27738 
27739 --
27740 OPEN header_cur;
27741 --
27742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27743    trace
27744    (p_msg      => 'SQL - FETCH header_cur'
27745    ,p_level    => C_LEVEL_STATEMENT
27746    ,p_module   => l_log_module);
27747 END IF;
27748 --
27749 LOOP
27750 FETCH header_cur BULK COLLECT INTO
27751         l_array_entity_id
27752       , l_array_legal_entity_id
27753       , l_array_entity_code
27754       , l_array_transaction_num
27755       , l_array_event_id
27756       , l_array_class_code
27757       , l_array_event_type
27758       , l_array_event_number
27759       , l_array_event_date
27760       , l_array_transaction_date
27761       , l_array_reference_num_1
27762       , l_array_reference_num_2
27763       , l_array_reference_num_3
27764       , l_array_reference_num_4
27765       , l_array_reference_char_1
27766       , l_array_reference_char_2
27767       , l_array_reference_char_3
27768       , l_array_reference_char_4
27769       , l_array_reference_date_1
27770       , l_array_reference_date_2
27771       , l_array_reference_date_3
27772       , l_array_reference_date_4
27773       , l_array_event_created_by
27774       , l_array_budgetary_control_flag 
27775       , l_array_source_1
27776       , l_array_source_2
27777       , l_array_source_10
27778       , l_array_source_11
27779       , l_array_source_12
27780       , l_array_source_13
27781       , l_array_source_15
27782       , l_array_source_16
27783       LIMIT l_rows;
27784 --
27785 IF (C_LEVEL_EVENT >= g_log_level) THEN
27786    trace
27787    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
27788    ,p_level    => C_LEVEL_EVENT
27789    ,p_module   => l_log_module);
27790 END IF;
27791 --
27792 EXIT WHEN l_array_entity_id.COUNT = 0;
27793 
27794 -- initialize arrays
27795 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
27796 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
27797 
27798 --
27799 -- Bug 4458708
27800 --
27801 XLA_AE_LINES_PKG.g_LineNumber := 0;
27802 
27803 
27804 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
27805 g_last_hdr_idx := l_array_event_id.LAST;
27806 --
27807 -- loop for the headers. Each iteration is for each header extract row
27808 -- fetched in header cursor
27809 --
27810 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
27811 
27812 --
27813 -- set event info as cache for other routines to refer event attributes
27814 --
27815 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
27816    (p_application_id           => p_application_id
27817    ,p_primary_ledger_id        => p_primary_ledger_id
27818    ,p_base_ledger_id           => p_base_ledger_id
27819    ,p_target_ledger_id         => p_target_ledger_id
27820    ,p_entity_id                => l_array_entity_id(hdr_idx)
27821    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
27822    ,p_entity_code              => l_array_entity_code(hdr_idx)
27823    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
27824    ,p_event_id                 => l_array_event_id(hdr_idx)
27825    ,p_event_class_code         => l_array_class_code(hdr_idx)
27826    ,p_event_type_code          => l_array_event_type(hdr_idx)
27827    ,p_event_number             => l_array_event_number(hdr_idx)
27828    ,p_event_date               => l_array_event_date(hdr_idx)
27829    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
27830    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
27831    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
27832    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
27833    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
27837    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
27834    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
27835    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
27836    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
27838    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
27839    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
27840    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
27841    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
27842    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
27843    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
27844 
27845 --
27846 -- set the status of entry to C_VALID (0)
27847 --
27848 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
27849 
27850 --
27851 -- initialize a row for ae header
27852 --
27853 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
27854 
27855 l_event_id := l_array_event_id(hdr_idx);
27856 
27857 --
27858 -- storing the hdr_idx for event. May be used by line cursor.
27859 --
27860 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
27861 
27862 --
27863 -- store sources from header extract. This can be improved to
27864 -- store only those sources from header extract that may be used in lines
27865 --
27866 
27867 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
27868 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
27869 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
27870 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
27871 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
27872 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
27873 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
27874 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
27875 
27876 --
27877 -- initilaize the status of ae headers for diffrent balance types
27878 -- the status is initialised to C_NOT_CREATED (2)
27879 --
27880 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27881 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27882 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27883 
27884 --
27885 -- call api to validate and store accounting attributes for header
27886 --
27887 
27888 ------------------------------------------------------------
27889 -- Accrual Reversal : to get date for Standard Source (NONE)
27890 ------------------------------------------------------------
27891 l_acc_rev_gl_date_source := NULL;
27892 
27893      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
27894       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
27895      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
27896       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
27897 
27898 
27899 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
27900 
27901 XLA_AE_HEADER_PKG.SetJeCategoryName;
27902 
27903 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
27904 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
27905 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
27906 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
27907 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
27908 
27909 
27910 --
27911 xla_ae_header_pkg.SetHdrDescription(
27912    p_description => Description_1 (
27913    p_application_id => p_application_id 
27914  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
27915  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27916    )
27917 );
27918 --
27919 
27920 -- No header level analytical criteria
27921 
27922 --
27923 --accounting attribute enhancement, bug 3612931
27924 --
27925 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
27926 
27927 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
27928    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
27929 
27930    xla_accounting_err_pkg.build_message
27931       (p_appli_s_name            => 'XLA'
27932       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
27933       ,p_token_1                 => 'ACCT_ATTR_NAME'
27934       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
27935       ,p_token_2                 => 'PRODUCT_NAME'
27936       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
27937       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
27938       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
27939       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
27940 
27941 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
27942    --
27943    -- following sets the accounting attributes needed to reverse
27944    -- accounting for a distributeion
27945    --
27946    xla_ae_lines_pkg.SetTrxReversalAttrs
27947       (p_event_id              => l_event_id
27948       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
27949       ,p_trx_reversal_source   => l_trx_reversal_source);
27950 
27951 END IF;
27952 
27953 
27957 --
27954 ----------------------------------------------------------------
27955 -- 4262811 -  update the header statuses to invalid in need be
27956 ----------------------------------------------------------------
27958 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
27959 
27960 
27961   -----------------------------------------------
27962   -- No accrual reversal for the event class/type
27963   -----------------------------------------------
27964 ----------------------------------------------------------------
27965 
27966 --
27967 -- this ends the header loop iteration for one bulk fetch
27968 --
27969 END LOOP;
27970 
27971 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
27972 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
27973 
27974 --
27975 -- insert dummy rows into lines gt table that were created due to
27976 -- transaction reversals
27977 --
27978 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
27979    l_result := XLA_AE_LINES_PKG.InsertLines;
27980 END IF;
27981 
27982 --
27983 -- reset the temp_line_num for each set of events fetched from header
27984 -- cursor rather than doing it for each new event in line cursor
27985 -- Bug 3939231
27986 --
27987 xla_ae_lines_pkg.g_temp_line_num := 0;
27988 
27989 
27990 
27991 --
27992 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
27993 --
27994 --
27995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27996 
27997       trace
27998          (p_msg      => 'SQL - FETCH line_cur'
27999          ,p_level    => C_LEVEL_STATEMENT
28000          ,p_module   => l_log_module);
28001 
28002 END IF;
28003 --
28004 --
28005 LOOP
28006   --
28007   FETCH line_cur BULK COLLECT INTO
28008         l_array_entity_id
28009       , l_array_legal_entity_id
28010       , l_array_entity_code
28011       , l_array_transaction_num
28012       , l_array_event_id
28013       , l_array_class_code
28014       , l_array_event_type
28015       , l_array_event_number
28016       , l_array_event_date
28017       , l_array_transaction_date
28018       , l_array_reference_num_1
28019       , l_array_reference_num_2
28020       , l_array_reference_num_3
28021       , l_array_reference_num_4
28022       , l_array_reference_char_1
28023       , l_array_reference_char_2
28024       , l_array_reference_char_3
28025       , l_array_reference_char_4
28026       , l_array_reference_date_1
28027       , l_array_reference_date_2
28028       , l_array_reference_date_3
28029       , l_array_reference_date_4
28030       , l_array_event_created_by
28031       , l_array_budgetary_control_flag
28032       , l_array_extract_line_num 
28033       , l_array_source_5
28034       , l_array_source_6
28035       , l_array_source_6_meaning
28036       , l_array_source_7
28037       , l_array_source_8
28038       , l_array_source_9
28039       LIMIT l_rows;
28040 
28041   --
28042   IF (C_LEVEL_EVENT >= g_log_level) THEN
28043             trace
28044                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
28045                ,p_level    => C_LEVEL_EVENT
28046                ,p_module   => l_log_module);
28047   END IF;
28048   --
28049   EXIT WHEN l_array_entity_id.count = 0;
28050 
28051   XLA_AE_LINES_PKG.g_rec_lines := null;
28052 
28053 --
28054 -- Bug 4458708
28055 --
28056 XLA_AE_LINES_PKG.g_LineNumber := 0;
28057 --
28058 --
28059 
28060 FOR Idx IN 1..l_array_event_id.count LOOP
28061    --
28062    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
28063    --
28064    l_event_id := l_array_event_id(idx);  -- 5648433
28065 
28066    --
28067    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
28068    --
28069 
28070    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
28071              (g_array_event(l_event_id).array_value_num('header_index'))
28072          ,'N'
28073          ) <> 'Y'
28074    THEN
28075       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28076          trace
28077             (p_msg      => 'Trancaction revesal option is not Y '
28078             ,p_level    => C_LEVEL_STATEMENT
28079             ,p_module   => l_log_module);
28080       END IF;
28081 
28082 --
28083 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
28084 --
28085 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
28086 --
28087 -- set event info as cache for other routines to refer event attributes
28088 --
28089 
28090 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
28091    l_previous_event_id := l_event_id;
28092 
28093    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28094       (p_application_id           => p_application_id
28095       ,p_primary_ledger_id        => p_primary_ledger_id
28096       ,p_base_ledger_id           => p_base_ledger_id
28097       ,p_target_ledger_id         => p_target_ledger_id
28098       ,p_entity_id                => l_array_entity_id(Idx)
28099       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
28100       ,p_entity_code              => l_array_entity_code(Idx)
28101       ,p_transaction_num          => l_array_transaction_num(Idx)
28102       ,p_event_id                 => l_array_event_id(Idx)
28103       ,p_event_class_code         => l_array_class_code(Idx)
28104       ,p_event_type_code          => l_array_event_type(Idx)
28105       ,p_event_number             => l_array_event_number(Idx)
28106       ,p_event_date               => l_array_event_date(Idx)
28107       ,p_transaction_date         => l_array_transaction_date(Idx)
28111       ,p_reference_num_4          => l_array_reference_num_4(Idx)
28108       ,p_reference_num_1          => l_array_reference_num_1(Idx)
28109       ,p_reference_num_2          => l_array_reference_num_2(Idx)
28110       ,p_reference_num_3          => l_array_reference_num_3(Idx)
28112       ,p_reference_char_1         => l_array_reference_char_1(Idx)
28113       ,p_reference_char_2         => l_array_reference_char_2(Idx)
28114       ,p_reference_char_3         => l_array_reference_char_3(Idx)
28115       ,p_reference_char_4         => l_array_reference_char_4(Idx)
28116       ,p_reference_date_1         => l_array_reference_date_1(Idx)
28117       ,p_reference_date_2         => l_array_reference_date_2(Idx)
28118       ,p_reference_date_3         => l_array_reference_date_3(Idx)
28119       ,p_reference_date_4         => l_array_reference_date_4(Idx)
28120       ,p_event_created_by         => l_array_event_created_by(Idx)
28121       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
28122        --
28123 END IF;
28124 
28125 
28126 
28127 --
28128 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
28129 
28130 l_acct_reversal_source := SUBSTR(NULL, 1,30);
28131 
28132 IF l_continue_with_lines THEN
28133    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
28134       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
28135 
28136       xla_accounting_err_pkg.build_message
28137          (p_appli_s_name            => 'XLA'
28138          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
28139          ,p_token_1                 => 'LINE_NUMBER'
28140          ,p_value_1                 => l_array_extract_line_num(Idx)
28141          ,p_token_2                 => 'PRODUCT_NAME'
28142          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
28143          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
28144          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
28145          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
28146 
28147    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
28148       --
28149       -- following sets the accounting attributes needed to reverse
28150       -- accounting for a distributeion
28151       --
28152 
28153       --
28154       -- 5217187
28155       --
28156       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
28157       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
28158                                        g_array_event(l_event_id).array_value_num('header_index'));
28159       --
28160       --
28161 
28162       -- No reversal code generated
28163 
28164       xla_ae_lines_pkg.SetAcctReversalAttrs
28165          (p_event_id             => l_event_id
28166          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
28167          ,p_calculate_acctd_flag => l_calculate_acctd_flag
28168          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
28169    END IF;
28170 
28171    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
28172        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
28173 
28174 --
28175 AcctLineType_24 (
28176  p_application_id  => p_application_id
28177  ,p_event_id     => l_event_id
28178  ,p_calculate_acctd_flag => l_calculate_acctd_flag
28179  ,p_calculate_g_l_flag => l_calculate_g_l_flag
28180  ,p_actual_flag => l_actual_flag
28181  ,p_balance_type_code => l_balance_type_code
28182  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28183  
28184  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
28185  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
28186  , p_source_5 => l_array_source_5(Idx)
28187  , p_source_6 => l_array_source_6(Idx)
28188  , p_source_6_meaning => l_array_source_6_meaning(Idx)
28189  , p_source_7 => l_array_source_7(Idx)
28190  , p_source_8 => l_array_source_8(Idx)
28191  , p_source_9 => l_array_source_9(Idx)
28192  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
28193  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
28194  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
28195  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
28196  );
28197 If(l_balance_type_code = 'A') THEN
28198   l_actual_gain_loss_ref := l_gain_or_loss_ref;
28199 END IF;
28200 
28201 --
28202 
28203 
28204 --
28205 AcctLineType_25 (
28206  p_application_id  => p_application_id
28207  ,p_event_id     => l_event_id
28208  ,p_calculate_acctd_flag => l_calculate_acctd_flag
28209  ,p_calculate_g_l_flag => l_calculate_g_l_flag
28210  ,p_actual_flag => l_actual_flag
28211  ,p_balance_type_code => l_balance_type_code
28212  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28213  
28214  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
28215  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
28216  , p_source_5 => l_array_source_5(Idx)
28217  , p_source_6 => l_array_source_6(Idx)
28218  , p_source_6_meaning => l_array_source_6_meaning(Idx)
28219  , p_source_7 => l_array_source_7(Idx)
28220  , p_source_8 => l_array_source_8(Idx)
28221  , p_source_9 => l_array_source_9(Idx)
28222  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
28223  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
28224  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
28225  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
28226  );
28227 If(l_balance_type_code = 'A') THEN
28228   l_actual_gain_loss_ref := l_gain_or_loss_ref;
28229 END IF;
28230 
28231 --
28232 
28233       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
28237             (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'))
28234       -- or secondary ledger that has different currency with primary
28235       -- or alc that is calculated by sla
28236       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
28238 
28239 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
28240 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
28241           AND (l_actual_flag = 'A')) THEN
28242         XLA_AE_LINES_PKG.CreateGainOrLossLines(
28243           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
28244          ,p_application_id   => p_application_id
28245          ,p_amb_context_code => 'DEFAULT'
28246          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
28247          ,p_event_class_code => C_EVENT_CLASS_CODE
28248          ,p_event_type_code  => C_EVENT_TYPE_CODE
28249          
28250          ,p_gain_ccid        => -1
28251          ,p_loss_ccid        => -1
28252 
28253          ,p_actual_flag      => l_actual_flag
28254          ,p_enc_flag         => null
28255          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
28256          ,p_enc_g_l_ref      => null
28257          );
28258       END IF;
28259    END IF;
28260 END IF;
28261 
28262    ELSE
28263       --
28264       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
28265       --
28266       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28267          trace
28268             (p_msg      => 'Trancaction revesal option is Y'
28269             ,p_level    => C_LEVEL_STATEMENT
28270             ,p_module   => l_log_module);
28271       END IF;
28272    END IF;
28273 
28274 END LOOP;
28275 l_result := XLA_AE_LINES_PKG.InsertLines ;
28276 end loop;
28277 close line_cur;
28278 
28279 
28280 --
28281 -- insert headers into xla_ae_headers_gt table
28282 --
28283 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
28284 
28285 -- insert into errors table here.
28286 
28287 END LOOP;
28288 
28289 --
28290 -- 4865292
28291 --
28292 -- Compare g_hdr_extract_count with event count in
28293 -- CreateHeadersAndLines.
28294 --
28295 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
28296 
28297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28298    trace (p_msg     => '# rows extracted from header extract objects '
28299                     || ' (running total): '
28300                     || g_hdr_extract_count
28301          ,p_level   => C_LEVEL_STATEMENT
28302          ,p_module  => l_log_module);
28303 END IF;
28304 
28305 CLOSE header_cur;
28306 --
28307 
28308 --
28309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28310    trace
28311       (p_msg      => 'END of EventClass_42'
28312       ,p_level    => C_LEVEL_PROCEDURE
28313       ,p_module   => l_log_module);
28314 END IF;
28315 --
28316 RETURN l_result;
28317 EXCEPTION
28318 WHEN xla_exceptions_pkg.application_exception THEN
28319    
28320 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
28321 
28322    
28323 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
28324 
28325    RAISE;
28326 WHEN OTHERS THEN
28327    xla_exceptions_pkg.raise_message
28328       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_42');
28329 END EventClass_42;
28330 --
28331 
28332 ---------------------------------------
28333 --
28334 -- PRIVATE PROCEDURE
28335 --         insert_sources_43
28336 --
28337 ----------------------------------------
28338 --
28339 PROCEDURE insert_sources_43(
28340                                 p_target_ledger_id       IN NUMBER
28341                               , p_language               IN VARCHAR2
28342                               , p_sla_ledger_id          IN NUMBER
28343                               , p_pad_start_date         IN DATE
28344                               , p_pad_end_date           IN DATE
28345                          )
28346 IS
28347 
28348 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SPLIT_ASSET_ALL';
28349 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SPLIT_ASSET';
28350 p_apps_owner                   VARCHAR2(30);
28351 l_log_module                   VARCHAR2(240);
28352 BEGIN
28353 IF g_log_enabled THEN
28354       l_log_module := C_DEFAULT_MODULE||'.insert_sources_43';
28355 END IF;
28356 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28357 
28358       trace
28359          (p_msg      => 'BEGIN of insert_sources_43'
28360          ,p_level    => C_LEVEL_PROCEDURE
28361          ,p_module   => l_log_module);
28362 
28363 END IF;
28364 
28365 -- select APPS owner
28366 SELECT oracle_username
28367   INTO p_apps_owner
28368   FROM fnd_oracle_userid
28369  WHERE read_only_flag = 'U'
28370 ;
28371 
28372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28373       trace
28374          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
28375                         ' - p_language = '||p_language||
28376                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
28377                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
28378                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
28379                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
28380          ,p_level    => C_LEVEL_STATEMENT
28381          ,p_module   => l_log_module);
28382 END IF;
28383 
28384 
28385 --
28386 INSERT INTO xla_diag_sources --hdr2
28387 (
28388         event_id
28389       , ledger_id
28390       , sla_ledger_id
28394       , line_number
28391       , description_language
28392       , object_name
28393       , object_type_code
28395       , source_application_id
28396       , source_type_code
28397       , source_code
28398       , source_value
28399       , source_meaning
28400       , created_by
28401       , creation_date
28402       , last_update_date
28403       , last_updated_by
28404       , last_update_login
28405       , program_update_date
28406       , program_application_id
28407       , program_id
28408       , request_id
28409 )
28410 SELECT
28411         event_id
28412       , p_target_ledger_id
28413       , p_sla_ledger_id
28414       , p_language
28415       , object_name
28416       , object_type_code
28417       , line_number
28418       , source_application_id
28419       , source_type_code
28420       , source_code
28421       , SUBSTR(source_value ,1,1996)
28422       , SUBSTR(source_meaning ,1,200)
28423       , xla_environment_pkg.g_Usr_Id
28424       , TRUNC(SYSDATE)
28425       , TRUNC(SYSDATE)
28426       , xla_environment_pkg.g_Usr_Id
28427       , xla_environment_pkg.g_Login_Id
28428       , TRUNC(SYSDATE)
28429       , xla_environment_pkg.g_Prog_Appl_Id
28430       , xla_environment_pkg.g_Prog_Id
28431       , xla_environment_pkg.g_Req_Id
28432   FROM (
28433        SELECT xet.event_id                  event_id
28434             , 0                          line_number
28435             , CASE r
28436                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28437                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28438                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28439                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28440                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28441                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28442                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
28443                 
28444                ELSE null
28445               END                           object_name
28446             , CASE r
28447                 WHEN 1 THEN 'HEADER' 
28448                 WHEN 2 THEN 'HEADER' 
28449                 WHEN 3 THEN 'HEADER' 
28450                 WHEN 4 THEN 'HEADER' 
28451                 WHEN 5 THEN 'HEADER' 
28452                 WHEN 6 THEN 'HEADER' 
28453                 WHEN 7 THEN 'HEADER' 
28454                 
28455                 ELSE null
28456               END                           object_type_code
28457             , CASE r
28458                 WHEN 1 THEN '540' 
28459                 WHEN 2 THEN '540' 
28460                 WHEN 3 THEN '540' 
28461                 WHEN 4 THEN '540' 
28462                 WHEN 5 THEN '540' 
28463                 WHEN 6 THEN '540' 
28464                 WHEN 7 THEN '540' 
28465                 
28466                 ELSE null
28467               END                           source_application_id
28468             , 'S'             source_type_code
28469             , CASE r
28470                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
28471                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
28472                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
28473                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
28474                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
28475                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
28476                 WHEN 7 THEN 'GL_DATE' 
28477                 
28478                 ELSE null
28479               END                           source_code
28480             , CASE r
28481                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
28482                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
28483                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
28484                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
28485                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
28486                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
28487                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
28488                 
28489                 ELSE null
28490               END                           source_value
28491             , null              source_meaning
28492          FROM xla_events_gt     xet  
28493       , OKL_CMN_EXTRACT_HDR_V  h1
28494              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
28495          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28496            AND xet.event_class_code = C_EVENT_CLASS_CODE
28497               AND h1.event_id = xet.event_id
28498 
28499 )
28500 ;
28501 --
28502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28503 
28504       trace
28505          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
28506          ,p_level    => C_LEVEL_STATEMENT
28507          ,p_module   => l_log_module);
28508 
28509 END IF;
28510 --
28511 
28512 
28513 
28514 --
28515 INSERT INTO xla_diag_sources  --line2
28516 (
28517         event_id
28518       , ledger_id
28519       , sla_ledger_id
28520       , description_language
28521       , object_name
28522       , object_type_code
28523       , line_number
28524       , source_application_id
28525       , source_type_code
28526       , source_code
28527       , source_value
28528       , source_meaning
28529       , created_by
28530       , creation_date
28531       , last_update_date
28532       , last_updated_by
28533       , last_update_login
28534       , program_update_date
28535       , program_application_id
28536       , program_id
28537       , request_id
28538 )
28539 SELECT  event_id
28540       , p_target_ledger_id
28541       , p_sla_ledger_id
28542       , p_language
28543       , object_name
28544       , object_type_code
28545       , line_number
28549       , SUBSTR(source_value,1,1996)
28546       , source_application_id
28547       , source_type_code
28548       , source_code
28550       , SUBSTR(source_meaning ,1,200)
28551       , xla_environment_pkg.g_Usr_Id
28552       , TRUNC(SYSDATE)
28553       , TRUNC(SYSDATE)
28554       , xla_environment_pkg.g_Usr_Id
28555       , xla_environment_pkg.g_Login_Id
28556       , TRUNC(SYSDATE)
28557       , xla_environment_pkg.g_Prog_Appl_Id
28558       , xla_environment_pkg.g_Prog_Id
28559       , xla_environment_pkg.g_Req_Id
28560   FROM (
28561        SELECT xet.event_id                  event_id
28562             , l2.line_number                 line_number
28563             , CASE r
28564                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
28565                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
28566                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
28567                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
28568                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
28569                 
28570                ELSE null
28571               END                           object_name
28572             , CASE r
28573                 WHEN 1 THEN 'LINE' 
28574                 WHEN 2 THEN 'LINE' 
28575                 WHEN 3 THEN 'LINE' 
28576                 WHEN 4 THEN 'LINE' 
28577                 WHEN 5 THEN 'LINE' 
28578                 
28579                 ELSE null
28580               END                           object_type_code
28581             , CASE r
28582                 WHEN 1 THEN '540' 
28583                 WHEN 2 THEN '540' 
28584                 WHEN 3 THEN '540' 
28585                 WHEN 4 THEN '540' 
28586                 WHEN 5 THEN '540' 
28587                 
28588                 ELSE null
28589               END                           source_application_id
28590             , 'S'             source_type_code
28591             , CASE r
28592                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
28593                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
28594                 WHEN 3 THEN 'DIST_ID' 
28595                 WHEN 4 THEN 'DIST_TYPE' 
28596                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
28597                 
28598                 ELSE null
28599               END                           source_code
28600             , CASE r
28601                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
28602                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
28603                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
28604                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
28605                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
28606                 
28607                 ELSE null
28608               END                           source_value
28609             , CASE r
28610                 WHEN 2 THEN fvl6.meaning
28611                 
28612                 ELSE null
28613               END               source_meaning
28614          FROM  xla_events_gt     xet  
28615         , OKL_CMN_EXTRACT_LINE_V  l2
28616   , fnd_lookup_values    fvl6
28617             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
28618         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28619           AND xet.event_class_code = C_EVENT_CLASS_CODE
28620             AND l2.event_id          = xet.event_id
28621    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
28622   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
28623   AND fvl6.view_application_id(+) = 0
28624   AND fvl6.language(+)            = USERENV('LANG')
28625   
28626 )
28627 ;
28628 --
28629 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28630 
28631       trace
28632          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
28633          ,p_level    => C_LEVEL_STATEMENT
28634          ,p_module   => l_log_module);
28635 
28636 END IF;
28637 
28638 
28639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28640       trace
28641          (p_msg      => 'END of insert_sources_43'
28642          ,p_level    => C_LEVEL_PROCEDURE
28643          ,p_module   => l_log_module);
28644 END IF;
28645 EXCEPTION
28646   WHEN xla_exceptions_pkg.application_exception THEN
28647       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28648             trace
28649                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28650                ,p_level    => C_LEVEL_EXCEPTION
28651                ,p_module   => l_log_module);
28652       END IF;
28653       RAISE;
28654   WHEN OTHERS THEN
28655       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28656             trace
28657                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28658                ,p_level    => C_LEVEL_EXCEPTION
28659                ,p_module   => l_log_module);
28660        END IF;
28661        xla_exceptions_pkg.raise_message
28662            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_43');
28663 END insert_sources_43;
28664 --
28665 
28666 ---------------------------------------
28667 --
28668 -- PRIVATE FUNCTION
28669 --         EventClass_43
28670 --
28671 ----------------------------------------
28672 --
28673 FUNCTION EventClass_43
28674        (p_application_id         IN NUMBER
28675        ,p_base_ledger_id         IN NUMBER
28676        ,p_target_ledger_id       IN NUMBER
28677        ,p_language               IN VARCHAR2
28678        ,p_currency_code          IN VARCHAR2
28679        ,p_sla_ledger_id          IN NUMBER
28680        ,p_pad_start_date         IN DATE
28681        ,p_pad_end_date           IN DATE
28682        ,p_primary_ledger_id      IN NUMBER)
28683 RETURN BOOLEAN IS
28684 --
28685 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SPLIT_ASSET_ALL';
28686 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SPLIT_ASSET';
28687 
28691 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28688 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
28689 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
28690 --
28692 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28693 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28694 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28695 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28696 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28697 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28698 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28699 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28700 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28701 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28702 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28703 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28704 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28705 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28706 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28707 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28708 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28709 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28710 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28711 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28712 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28713 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
28714 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28715 
28716 l_event_id                             NUMBER;
28717 l_previous_event_id                    NUMBER;
28718 l_first_event_id                       NUMBER;
28719 l_last_event_id                        NUMBER;
28720 
28721 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
28722 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
28723 --
28724 --
28725 l_result                    BOOLEAN := TRUE;
28726 l_rows                      NUMBER  := 1000;
28727 l_event_type_name           VARCHAR2(80) := 'All';
28728 l_event_class_name          VARCHAR2(80) := 'Split Asset';
28729 l_description               VARCHAR2(4000);
28730 l_transaction_reversal      NUMBER;
28731 l_ae_header_id              NUMBER;
28732 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
28733 l_log_module                VARCHAR2(240);
28734 --
28735 l_acct_reversal_source      VARCHAR2(30);
28736 l_trx_reversal_source       VARCHAR2(30);
28737 
28738 l_continue_with_lines       BOOLEAN := TRUE;
28739 --
28740 l_acc_rev_gl_date_source    DATE;                      -- 4262811
28741 --
28742 type t_array_event_id is table of number index by binary_integer;
28743 
28744 l_rec_array_event                    t_rec_array_event;
28745 l_null_rec_array_event               t_rec_array_event;
28746 l_array_ae_header_id                 xla_number_array_type;
28747 l_actual_flag                        VARCHAR2(1) := NULL;
28748 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
28749 l_balance_type_code                  VARCHAR2(1) :=NULL;
28750 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
28751 
28752 --
28753 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
28754 --
28755 
28756 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
28757 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
28758 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
28759 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
28760 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
28761 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
28762 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
28763 
28764 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
28765 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
28766 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
28767 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
28768 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
28769 
28770 l_array_source_1              t_array_source_1;
28771 l_array_source_2              t_array_source_2;
28772 l_array_source_10              t_array_source_10;
28773 l_array_source_11              t_array_source_11;
28774 l_array_source_12              t_array_source_12;
28775 l_array_source_13              t_array_source_13;
28776 l_array_source_15              t_array_source_15;
28777 
28778 l_array_source_5      t_array_source_5;
28779 l_array_source_6      t_array_source_6;
28780 l_array_source_6_meaning      t_array_lookup_meaning;
28781 l_array_source_7      t_array_source_7;
28782 l_array_source_8      t_array_source_8;
28783 l_array_source_9      t_array_source_9;
28784 
28785 --
28786 CURSOR header_cur
28787 IS
28788 SELECT /*+ leading(xet) cardinality(xet,1) */
28789 -- Event Class Code: SPLIT_ASSET
28790     xet.entity_id
28791    ,xet.legal_entity_id
28792    ,xet.entity_code
28793    ,xet.transaction_number
28797    ,xet.event_number
28794    ,xet.event_id
28795    ,xet.event_class_code
28796    ,xet.event_type_code
28798    ,xet.event_date
28799    ,xet.transaction_date
28800    ,xet.reference_num_1
28801    ,xet.reference_num_2
28802    ,xet.reference_num_3
28803    ,xet.reference_num_4
28804    ,xet.reference_char_1
28805    ,xet.reference_char_2
28806    ,xet.reference_char_3
28807    ,xet.reference_char_4
28808    ,xet.reference_date_1
28809    ,xet.reference_date_2
28810    ,xet.reference_date_3
28811    ,xet.reference_date_4
28812    ,xet.event_created_by
28813    ,xet.budgetary_control_flag 
28814   , h1.TEH_CONTRACT_NUMBER    source_1
28815   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
28816   , h1.TCN_CURRENCY_CODE    source_10
28817   , h1.TCN_CURR_CONVERSION_DATE    source_11
28818   , h1.TCN_CURR_CONVERSION_RATE    source_12
28819   , h1.TCN_CURR_CONVERSION_TYPE    source_13
28820   , h1.GL_DATE    source_15
28821   FROM xla_events_gt     xet 
28822   , OKL_CMN_EXTRACT_HDR_V  h1
28823  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
28824    and xet.event_class_code = C_EVENT_CLASS_CODE
28825    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
28826 
28827  ORDER BY event_id
28828 ;
28829 
28830 
28831 --
28832 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
28833 IS
28834 SELECT  /*+ leading(xet) cardinality(xet,1) */
28835 -- Event Class Code: SPLIT_ASSET
28836     xet.entity_id
28837    ,xet.legal_entity_id
28838    ,xet.entity_code
28839    ,xet.transaction_number
28840    ,xet.event_id
28841    ,xet.event_class_code
28842    ,xet.event_type_code
28843    ,xet.event_number
28844    ,xet.event_date
28845    ,xet.transaction_date
28846    ,xet.reference_num_1
28847    ,xet.reference_num_2
28848    ,xet.reference_num_3
28849    ,xet.reference_num_4
28850    ,xet.reference_char_1
28851    ,xet.reference_char_2
28852    ,xet.reference_char_3
28853    ,xet.reference_char_4
28854    ,xet.reference_date_1
28855    ,xet.reference_date_2
28856    ,xet.reference_date_3
28857    ,xet.reference_date_4
28858    ,xet.event_created_by
28859    ,xet.budgetary_control_flag
28860  , l2.LINE_NUMBER  
28861   , l2.DIST_CODE_COMBINATION_ID    source_5
28862   , l2.DIST_AE_LINE_TYPE_CODE    source_6
28863   , fvl6.meaning   source_6_meaning
28864   , l2.DIST_ID    source_7
28865   , l2.DIST_TYPE    source_8
28866   , l2.DIST_ENTERED_AMOUNT    source_9
28867   FROM xla_events_gt     xet 
28868   , OKL_CMN_EXTRACT_LINE_V  l2
28869   , fnd_lookup_values    fvl6
28870  WHERE xet.event_id between x_first_event_id and x_last_event_id
28871    and xet.event_date between p_pad_start_date and p_pad_end_date
28872    and xet.event_class_code = C_EVENT_CLASS_CODE
28873    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
28874    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
28875   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
28876   AND fvl6.view_application_id(+) = 0
28877   AND fvl6.language(+)            = USERENV('LANG')
28878   ;
28879 
28880 --
28881 BEGIN
28882 IF g_log_enabled THEN
28883    l_log_module := C_DEFAULT_MODULE||'.EventClass_43';
28884 END IF;
28885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28886    trace
28887       (p_msg      => 'BEGIN of EventClass_43'
28888       ,p_level    => C_LEVEL_PROCEDURE
28889       ,p_module   => l_log_module);
28890 END IF;
28891 
28892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28893    trace
28894       (p_msg      => 'p_application_id = '||p_application_id||
28895                      ' - p_base_ledger_id = '||p_base_ledger_id||
28896                      ' - p_target_ledger_id  = '||p_target_ledger_id||
28897                      ' - p_language = '||p_language||
28898                      ' - p_currency_code = '||p_currency_code||
28899                      ' - p_sla_ledger_id = '||p_sla_ledger_id
28900       ,p_level    => C_LEVEL_STATEMENT
28901       ,p_module   => l_log_module);
28902 END IF;
28903 --
28904 -- initialze arrays
28905 --
28906 g_array_event.DELETE;
28907 l_rec_array_event := l_null_rec_array_event;
28908 --
28909 --------------------------------------
28910 -- 4262811 Initialze MPA Line Number
28911 --------------------------------------
28912 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
28913 
28914 --
28915 
28916 --
28917 OPEN header_cur;
28918 --
28919 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28920    trace
28921    (p_msg      => 'SQL - FETCH header_cur'
28922    ,p_level    => C_LEVEL_STATEMENT
28923    ,p_module   => l_log_module);
28924 END IF;
28925 --
28926 LOOP
28927 FETCH header_cur BULK COLLECT INTO
28928         l_array_entity_id
28929       , l_array_legal_entity_id
28930       , l_array_entity_code
28931       , l_array_transaction_num
28932       , l_array_event_id
28933       , l_array_class_code
28934       , l_array_event_type
28935       , l_array_event_number
28936       , l_array_event_date
28937       , l_array_transaction_date
28938       , l_array_reference_num_1
28939       , l_array_reference_num_2
28940       , l_array_reference_num_3
28941       , l_array_reference_num_4
28942       , l_array_reference_char_1
28943       , l_array_reference_char_2
28944       , l_array_reference_char_3
28945       , l_array_reference_char_4
28946       , l_array_reference_date_1
28947       , l_array_reference_date_2
28948       , l_array_reference_date_3
28949       , l_array_reference_date_4
28950       , l_array_event_created_by
28951       , l_array_budgetary_control_flag 
28952       , l_array_source_1
28953       , l_array_source_2
28954       , l_array_source_10
28958       , l_array_source_15
28955       , l_array_source_11
28956       , l_array_source_12
28957       , l_array_source_13
28959       LIMIT l_rows;
28960 --
28961 IF (C_LEVEL_EVENT >= g_log_level) THEN
28962    trace
28963    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
28964    ,p_level    => C_LEVEL_EVENT
28965    ,p_module   => l_log_module);
28966 END IF;
28967 --
28968 EXIT WHEN l_array_entity_id.COUNT = 0;
28969 
28970 -- initialize arrays
28971 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
28972 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
28973 
28974 --
28975 -- Bug 4458708
28976 --
28977 XLA_AE_LINES_PKG.g_LineNumber := 0;
28978 
28979 
28980 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
28981 g_last_hdr_idx := l_array_event_id.LAST;
28982 --
28983 -- loop for the headers. Each iteration is for each header extract row
28984 -- fetched in header cursor
28985 --
28986 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
28987 
28988 --
28989 -- set event info as cache for other routines to refer event attributes
28990 --
28991 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28992    (p_application_id           => p_application_id
28993    ,p_primary_ledger_id        => p_primary_ledger_id
28994    ,p_base_ledger_id           => p_base_ledger_id
28995    ,p_target_ledger_id         => p_target_ledger_id
28996    ,p_entity_id                => l_array_entity_id(hdr_idx)
28997    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
28998    ,p_entity_code              => l_array_entity_code(hdr_idx)
28999    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
29000    ,p_event_id                 => l_array_event_id(hdr_idx)
29001    ,p_event_class_code         => l_array_class_code(hdr_idx)
29002    ,p_event_type_code          => l_array_event_type(hdr_idx)
29003    ,p_event_number             => l_array_event_number(hdr_idx)
29004    ,p_event_date               => l_array_event_date(hdr_idx)
29005    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
29006    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
29007    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
29008    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
29009    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
29010    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
29011    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
29012    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
29013    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
29014    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
29015    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
29016    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
29017    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
29018    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
29019    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
29020 
29021 --
29022 -- set the status of entry to C_VALID (0)
29023 --
29024 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
29025 
29026 --
29027 -- initialize a row for ae header
29028 --
29029 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
29030 
29031 l_event_id := l_array_event_id(hdr_idx);
29032 
29033 --
29034 -- storing the hdr_idx for event. May be used by line cursor.
29035 --
29036 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
29037 
29038 --
29039 -- store sources from header extract. This can be improved to
29040 -- store only those sources from header extract that may be used in lines
29041 --
29042 
29043 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
29044 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
29045 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
29046 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
29047 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
29048 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
29049 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
29050 
29051 --
29052 -- initilaize the status of ae headers for diffrent balance types
29053 -- the status is initialised to C_NOT_CREATED (2)
29054 --
29055 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29056 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29057 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
29058 
29059 --
29060 -- call api to validate and store accounting attributes for header
29061 --
29062 
29063 ------------------------------------------------------------
29064 -- Accrual Reversal : to get date for Standard Source (NONE)
29065 ------------------------------------------------------------
29066 l_acc_rev_gl_date_source := NULL;
29067 
29068      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
29069       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
29070 
29071 
29072 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
29073 
29074 XLA_AE_HEADER_PKG.SetJeCategoryName;
29075 
29076 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
29077 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
29078 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
29082 
29079 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
29080 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
29081 
29083 -- No header level analytical criteria
29084 
29085 --
29086 --accounting attribute enhancement, bug 3612931
29087 --
29088 l_trx_reversal_source := SUBSTR(NULL, 1,30);
29089 
29090 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
29091    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
29092 
29093    xla_accounting_err_pkg.build_message
29094       (p_appli_s_name            => 'XLA'
29095       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
29096       ,p_token_1                 => 'ACCT_ATTR_NAME'
29097       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
29098       ,p_token_2                 => 'PRODUCT_NAME'
29099       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
29100       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
29101       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
29102       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
29103 
29104 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
29105    --
29106    -- following sets the accounting attributes needed to reverse
29107    -- accounting for a distributeion
29108    --
29109    xla_ae_lines_pkg.SetTrxReversalAttrs
29110       (p_event_id              => l_event_id
29111       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
29112       ,p_trx_reversal_source   => l_trx_reversal_source);
29113 
29114 END IF;
29115 
29116 
29117 ----------------------------------------------------------------
29118 -- 4262811 -  update the header statuses to invalid in need be
29119 ----------------------------------------------------------------
29120 --
29121 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
29122 
29123 
29124   -----------------------------------------------
29125   -- No accrual reversal for the event class/type
29126   -----------------------------------------------
29127 ----------------------------------------------------------------
29128 
29129 --
29130 -- this ends the header loop iteration for one bulk fetch
29131 --
29132 END LOOP;
29133 
29134 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
29135 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
29136 
29137 --
29138 -- insert dummy rows into lines gt table that were created due to
29139 -- transaction reversals
29140 --
29141 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
29142    l_result := XLA_AE_LINES_PKG.InsertLines;
29143 END IF;
29144 
29145 --
29146 -- reset the temp_line_num for each set of events fetched from header
29147 -- cursor rather than doing it for each new event in line cursor
29148 -- Bug 3939231
29149 --
29150 xla_ae_lines_pkg.g_temp_line_num := 0;
29151 
29152 
29153 
29154 --
29155 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
29156 --
29157 --
29158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29159 
29160       trace
29161          (p_msg      => 'SQL - FETCH line_cur'
29162          ,p_level    => C_LEVEL_STATEMENT
29163          ,p_module   => l_log_module);
29164 
29165 END IF;
29166 --
29167 --
29168 LOOP
29169   --
29170   FETCH line_cur BULK COLLECT INTO
29171         l_array_entity_id
29172       , l_array_legal_entity_id
29173       , l_array_entity_code
29174       , l_array_transaction_num
29175       , l_array_event_id
29176       , l_array_class_code
29177       , l_array_event_type
29178       , l_array_event_number
29179       , l_array_event_date
29180       , l_array_transaction_date
29181       , l_array_reference_num_1
29182       , l_array_reference_num_2
29183       , l_array_reference_num_3
29184       , l_array_reference_num_4
29185       , l_array_reference_char_1
29186       , l_array_reference_char_2
29187       , l_array_reference_char_3
29188       , l_array_reference_char_4
29189       , l_array_reference_date_1
29190       , l_array_reference_date_2
29191       , l_array_reference_date_3
29192       , l_array_reference_date_4
29193       , l_array_event_created_by
29194       , l_array_budgetary_control_flag
29195       , l_array_extract_line_num 
29196       , l_array_source_5
29197       , l_array_source_6
29198       , l_array_source_6_meaning
29199       , l_array_source_7
29200       , l_array_source_8
29201       , l_array_source_9
29202       LIMIT l_rows;
29203 
29204   --
29205   IF (C_LEVEL_EVENT >= g_log_level) THEN
29206             trace
29207                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
29208                ,p_level    => C_LEVEL_EVENT
29209                ,p_module   => l_log_module);
29210   END IF;
29211   --
29212   EXIT WHEN l_array_entity_id.count = 0;
29213 
29214   XLA_AE_LINES_PKG.g_rec_lines := null;
29215 
29216 --
29217 -- Bug 4458708
29218 --
29219 XLA_AE_LINES_PKG.g_LineNumber := 0;
29220 --
29221 --
29222 
29223 FOR Idx IN 1..l_array_event_id.count LOOP
29224    --
29225    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
29226    --
29227    l_event_id := l_array_event_id(idx);  -- 5648433
29228 
29229    --
29230    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
29231    --
29232 
29233    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
29237    THEN
29234              (g_array_event(l_event_id).array_value_num('header_index'))
29235          ,'N'
29236          ) <> 'Y'
29238       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29239          trace
29240             (p_msg      => 'Trancaction revesal option is not Y '
29241             ,p_level    => C_LEVEL_STATEMENT
29242             ,p_module   => l_log_module);
29243       END IF;
29244 
29245 --
29246 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
29247 --
29248 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
29249 --
29250 -- set event info as cache for other routines to refer event attributes
29251 --
29252 
29253 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
29254    l_previous_event_id := l_event_id;
29255 
29256    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
29257       (p_application_id           => p_application_id
29258       ,p_primary_ledger_id        => p_primary_ledger_id
29259       ,p_base_ledger_id           => p_base_ledger_id
29260       ,p_target_ledger_id         => p_target_ledger_id
29261       ,p_entity_id                => l_array_entity_id(Idx)
29262       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
29263       ,p_entity_code              => l_array_entity_code(Idx)
29264       ,p_transaction_num          => l_array_transaction_num(Idx)
29265       ,p_event_id                 => l_array_event_id(Idx)
29266       ,p_event_class_code         => l_array_class_code(Idx)
29267       ,p_event_type_code          => l_array_event_type(Idx)
29268       ,p_event_number             => l_array_event_number(Idx)
29269       ,p_event_date               => l_array_event_date(Idx)
29270       ,p_transaction_date         => l_array_transaction_date(Idx)
29271       ,p_reference_num_1          => l_array_reference_num_1(Idx)
29272       ,p_reference_num_2          => l_array_reference_num_2(Idx)
29273       ,p_reference_num_3          => l_array_reference_num_3(Idx)
29274       ,p_reference_num_4          => l_array_reference_num_4(Idx)
29275       ,p_reference_char_1         => l_array_reference_char_1(Idx)
29276       ,p_reference_char_2         => l_array_reference_char_2(Idx)
29277       ,p_reference_char_3         => l_array_reference_char_3(Idx)
29278       ,p_reference_char_4         => l_array_reference_char_4(Idx)
29279       ,p_reference_date_1         => l_array_reference_date_1(Idx)
29280       ,p_reference_date_2         => l_array_reference_date_2(Idx)
29281       ,p_reference_date_3         => l_array_reference_date_3(Idx)
29282       ,p_reference_date_4         => l_array_reference_date_4(Idx)
29283       ,p_event_created_by         => l_array_event_created_by(Idx)
29284       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
29285        --
29286 END IF;
29287 
29288 
29289 
29290 --
29291 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
29292 
29293 l_acct_reversal_source := SUBSTR(NULL, 1,30);
29294 
29295 IF l_continue_with_lines THEN
29296    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
29297       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
29298 
29299       xla_accounting_err_pkg.build_message
29300          (p_appli_s_name            => 'XLA'
29301          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
29302          ,p_token_1                 => 'LINE_NUMBER'
29303          ,p_value_1                 => l_array_extract_line_num(Idx)
29304          ,p_token_2                 => 'PRODUCT_NAME'
29305          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
29306          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
29307          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
29308          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
29309 
29310    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
29311       --
29312       -- following sets the accounting attributes needed to reverse
29313       -- accounting for a distributeion
29314       --
29315 
29316       --
29317       -- 5217187
29318       --
29319       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
29320       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
29321                                        g_array_event(l_event_id).array_value_num('header_index'));
29322       --
29323       --
29324 
29325       -- No reversal code generated
29326 
29327       xla_ae_lines_pkg.SetAcctReversalAttrs
29328          (p_event_id             => l_event_id
29329          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
29330          ,p_calculate_acctd_flag => l_calculate_acctd_flag
29331          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
29332    END IF;
29333 
29334    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
29335        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
29336 
29337 --
29338 AcctLineType_26 (
29339  p_application_id  => p_application_id
29340  ,p_event_id     => l_event_id
29341  ,p_calculate_acctd_flag => l_calculate_acctd_flag
29342  ,p_calculate_g_l_flag => l_calculate_g_l_flag
29343  ,p_actual_flag => l_actual_flag
29344  ,p_balance_type_code => l_balance_type_code
29345  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
29346  
29347  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
29348  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
29349  , p_source_5 => l_array_source_5(Idx)
29350  , p_source_6 => l_array_source_6(Idx)
29351  , p_source_6_meaning => l_array_source_6_meaning(Idx)
29352  , p_source_7 => l_array_source_7(Idx)
29353  , p_source_8 => l_array_source_8(Idx)
29354  , p_source_9 => l_array_source_9(Idx)
29355  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
29359  );
29356  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
29357  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
29358  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
29360 If(l_balance_type_code = 'A') THEN
29361   l_actual_gain_loss_ref := l_gain_or_loss_ref;
29362 END IF;
29363 
29364 --
29365 
29366 
29367 --
29368 AcctLineType_27 (
29369  p_application_id  => p_application_id
29370  ,p_event_id     => l_event_id
29371  ,p_calculate_acctd_flag => l_calculate_acctd_flag
29372  ,p_calculate_g_l_flag => l_calculate_g_l_flag
29373  ,p_actual_flag => l_actual_flag
29374  ,p_balance_type_code => l_balance_type_code
29375  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
29376  
29377  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
29378  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
29379  , p_source_5 => l_array_source_5(Idx)
29380  , p_source_6 => l_array_source_6(Idx)
29381  , p_source_6_meaning => l_array_source_6_meaning(Idx)
29382  , p_source_7 => l_array_source_7(Idx)
29383  , p_source_8 => l_array_source_8(Idx)
29384  , p_source_9 => l_array_source_9(Idx)
29385  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
29386  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
29387  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
29388  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
29389  );
29390 If(l_balance_type_code = 'A') THEN
29391   l_actual_gain_loss_ref := l_gain_or_loss_ref;
29392 END IF;
29393 
29394 --
29395 
29396       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
29397       -- or secondary ledger that has different currency with primary
29398       -- or alc that is calculated by sla
29399       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
29400             (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'))
29401 
29402 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
29403 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
29404           AND (l_actual_flag = 'A')) THEN
29405         XLA_AE_LINES_PKG.CreateGainOrLossLines(
29406           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
29407          ,p_application_id   => p_application_id
29408          ,p_amb_context_code => 'DEFAULT'
29409          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
29410          ,p_event_class_code => C_EVENT_CLASS_CODE
29411          ,p_event_type_code  => C_EVENT_TYPE_CODE
29412          
29413          ,p_gain_ccid        => -1
29414          ,p_loss_ccid        => -1
29415 
29416          ,p_actual_flag      => l_actual_flag
29417          ,p_enc_flag         => null
29418          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
29419          ,p_enc_g_l_ref      => null
29420          );
29421       END IF;
29422    END IF;
29423 END IF;
29424 
29425    ELSE
29426       --
29427       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
29428       --
29429       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29430          trace
29431             (p_msg      => 'Trancaction revesal option is Y'
29432             ,p_level    => C_LEVEL_STATEMENT
29433             ,p_module   => l_log_module);
29434       END IF;
29435    END IF;
29436 
29437 END LOOP;
29438 l_result := XLA_AE_LINES_PKG.InsertLines ;
29439 end loop;
29440 close line_cur;
29441 
29442 
29443 --
29444 -- insert headers into xla_ae_headers_gt table
29445 --
29446 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
29447 
29448 -- insert into errors table here.
29449 
29450 END LOOP;
29451 
29452 --
29453 -- 4865292
29454 --
29455 -- Compare g_hdr_extract_count with event count in
29456 -- CreateHeadersAndLines.
29457 --
29458 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
29459 
29460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29461    trace (p_msg     => '# rows extracted from header extract objects '
29462                     || ' (running total): '
29463                     || g_hdr_extract_count
29464          ,p_level   => C_LEVEL_STATEMENT
29465          ,p_module  => l_log_module);
29466 END IF;
29467 
29468 CLOSE header_cur;
29469 --
29470 
29471 --
29472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29473    trace
29474       (p_msg      => 'END of EventClass_43'
29475       ,p_level    => C_LEVEL_PROCEDURE
29476       ,p_module   => l_log_module);
29477 END IF;
29478 --
29479 RETURN l_result;
29480 EXCEPTION
29481 WHEN xla_exceptions_pkg.application_exception THEN
29482    
29483 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
29484 
29485    
29486 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
29487 
29488    RAISE;
29489 WHEN OTHERS THEN
29490    xla_exceptions_pkg.raise_message
29491       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_43');
29492 END EventClass_43;
29493 --
29494 
29495 ---------------------------------------
29496 --
29497 -- PRIVATE PROCEDURE
29498 --         insert_sources_44
29499 --
29500 ----------------------------------------
29501 --
29502 PROCEDURE insert_sources_44(
29503                                 p_target_ledger_id       IN NUMBER
29504                               , p_language               IN VARCHAR2
29505                               , p_sla_ledger_id          IN NUMBER
29506                               , p_pad_start_date         IN DATE
29510 
29507                               , p_pad_end_date           IN DATE
29508                          )
29509 IS
29511 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TERMINATION_ALL';
29512 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TERMINATION';
29513 p_apps_owner                   VARCHAR2(30);
29514 l_log_module                   VARCHAR2(240);
29515 BEGIN
29516 IF g_log_enabled THEN
29517       l_log_module := C_DEFAULT_MODULE||'.insert_sources_44';
29518 END IF;
29519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29520 
29521       trace
29522          (p_msg      => 'BEGIN of insert_sources_44'
29523          ,p_level    => C_LEVEL_PROCEDURE
29524          ,p_module   => l_log_module);
29525 
29526 END IF;
29527 
29528 -- select APPS owner
29529 SELECT oracle_username
29530   INTO p_apps_owner
29531   FROM fnd_oracle_userid
29532  WHERE read_only_flag = 'U'
29533 ;
29534 
29535 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29536       trace
29537          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
29538                         ' - p_language = '||p_language||
29539                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
29540                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
29541                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
29542                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
29543          ,p_level    => C_LEVEL_STATEMENT
29544          ,p_module   => l_log_module);
29545 END IF;
29546 
29547 
29548 --
29549 INSERT INTO xla_diag_sources --hdr2
29550 (
29551         event_id
29552       , ledger_id
29553       , sla_ledger_id
29554       , description_language
29555       , object_name
29556       , object_type_code
29557       , line_number
29558       , source_application_id
29559       , source_type_code
29560       , source_code
29561       , source_value
29562       , source_meaning
29563       , created_by
29564       , creation_date
29565       , last_update_date
29566       , last_updated_by
29567       , last_update_login
29568       , program_update_date
29569       , program_application_id
29570       , program_id
29571       , request_id
29572 )
29573 SELECT
29574         event_id
29575       , p_target_ledger_id
29576       , p_sla_ledger_id
29577       , p_language
29578       , object_name
29579       , object_type_code
29580       , line_number
29581       , source_application_id
29582       , source_type_code
29583       , source_code
29584       , SUBSTR(source_value ,1,1996)
29585       , SUBSTR(source_meaning ,1,200)
29586       , xla_environment_pkg.g_Usr_Id
29587       , TRUNC(SYSDATE)
29588       , TRUNC(SYSDATE)
29589       , xla_environment_pkg.g_Usr_Id
29590       , xla_environment_pkg.g_Login_Id
29591       , TRUNC(SYSDATE)
29592       , xla_environment_pkg.g_Prog_Appl_Id
29593       , xla_environment_pkg.g_Prog_Id
29594       , xla_environment_pkg.g_Req_Id
29595   FROM (
29596        SELECT xet.event_id                  event_id
29597             , 0                          line_number
29598             , CASE r
29599                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29600                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29601                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29602                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29603                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29604                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29605                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29606                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
29607                 
29608                ELSE null
29609               END                           object_name
29610             , CASE r
29611                 WHEN 1 THEN 'HEADER' 
29612                 WHEN 2 THEN 'HEADER' 
29613                 WHEN 3 THEN 'HEADER' 
29614                 WHEN 4 THEN 'HEADER' 
29615                 WHEN 5 THEN 'HEADER' 
29616                 WHEN 6 THEN 'HEADER' 
29617                 WHEN 7 THEN 'HEADER' 
29618                 WHEN 8 THEN 'HEADER' 
29619                 
29620                 ELSE null
29621               END                           object_type_code
29622             , CASE r
29623                 WHEN 1 THEN '540' 
29624                 WHEN 2 THEN '540' 
29625                 WHEN 3 THEN '540' 
29626                 WHEN 4 THEN '540' 
29627                 WHEN 5 THEN '540' 
29628                 WHEN 6 THEN '540' 
29629                 WHEN 7 THEN '540' 
29630                 WHEN 8 THEN '540' 
29631                 
29632                 ELSE null
29633               END                           source_application_id
29634             , 'S'             source_type_code
29635             , CASE r
29636                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
29637                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
29638                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
29639                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
29640                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
29641                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
29642                 WHEN 7 THEN 'GL_DATE' 
29643                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
29644                 
29645                 ELSE null
29646               END                           source_code
29647             , CASE r
29648                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
29649                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
29650                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
29651                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
29652                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
29653                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
29657                 ELSE null
29654                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
29655                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
29656                 
29658               END                           source_value
29659             , null              source_meaning
29660          FROM xla_events_gt     xet  
29661       , OKL_CMN_EXTRACT_HDR_V  h1
29662              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
29663          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29664            AND xet.event_class_code = C_EVENT_CLASS_CODE
29665               AND h1.event_id = xet.event_id
29666 
29667 )
29668 ;
29669 --
29670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29671 
29672       trace
29673          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
29674          ,p_level    => C_LEVEL_STATEMENT
29675          ,p_module   => l_log_module);
29676 
29677 END IF;
29678 --
29679 
29680 
29681 
29682 --
29683 INSERT INTO xla_diag_sources  --line2
29684 (
29685         event_id
29686       , ledger_id
29687       , sla_ledger_id
29688       , description_language
29689       , object_name
29690       , object_type_code
29691       , line_number
29692       , source_application_id
29693       , source_type_code
29694       , source_code
29695       , source_value
29696       , source_meaning
29697       , created_by
29698       , creation_date
29699       , last_update_date
29700       , last_updated_by
29701       , last_update_login
29702       , program_update_date
29703       , program_application_id
29704       , program_id
29705       , request_id
29706 )
29707 SELECT  event_id
29708       , p_target_ledger_id
29709       , p_sla_ledger_id
29710       , p_language
29711       , object_name
29712       , object_type_code
29713       , line_number
29714       , source_application_id
29715       , source_type_code
29716       , source_code
29717       , SUBSTR(source_value,1,1996)
29718       , SUBSTR(source_meaning ,1,200)
29719       , xla_environment_pkg.g_Usr_Id
29720       , TRUNC(SYSDATE)
29721       , TRUNC(SYSDATE)
29722       , xla_environment_pkg.g_Usr_Id
29723       , xla_environment_pkg.g_Login_Id
29724       , TRUNC(SYSDATE)
29725       , xla_environment_pkg.g_Prog_Appl_Id
29726       , xla_environment_pkg.g_Prog_Id
29727       , xla_environment_pkg.g_Req_Id
29728   FROM (
29729        SELECT xet.event_id                  event_id
29730             , l2.line_number                 line_number
29731             , CASE r
29732                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
29733                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
29734                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
29735                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
29736                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
29737                 
29738                ELSE null
29739               END                           object_name
29740             , CASE r
29741                 WHEN 1 THEN 'LINE' 
29742                 WHEN 2 THEN 'LINE' 
29743                 WHEN 3 THEN 'LINE' 
29744                 WHEN 4 THEN 'LINE' 
29745                 WHEN 5 THEN 'LINE' 
29746                 
29747                 ELSE null
29748               END                           object_type_code
29749             , CASE r
29750                 WHEN 1 THEN '540' 
29751                 WHEN 2 THEN '540' 
29752                 WHEN 3 THEN '540' 
29753                 WHEN 4 THEN '540' 
29754                 WHEN 5 THEN '540' 
29755                 
29756                 ELSE null
29757               END                           source_application_id
29758             , 'S'             source_type_code
29759             , CASE r
29760                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
29761                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
29762                 WHEN 3 THEN 'DIST_ID' 
29763                 WHEN 4 THEN 'DIST_TYPE' 
29764                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
29765                 
29766                 ELSE null
29767               END                           source_code
29768             , CASE r
29769                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
29770                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
29771                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
29772                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
29773                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
29774                 
29775                 ELSE null
29776               END                           source_value
29777             , CASE r
29778                 WHEN 2 THEN fvl6.meaning
29779                 
29780                 ELSE null
29781               END               source_meaning
29782          FROM  xla_events_gt     xet  
29783         , OKL_CMN_EXTRACT_LINE_V  l2
29784   , fnd_lookup_values    fvl6
29785             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
29786         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29787           AND xet.event_class_code = C_EVENT_CLASS_CODE
29788             AND l2.event_id          = xet.event_id
29789    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
29790   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
29791   AND fvl6.view_application_id(+) = 0
29792   AND fvl6.language(+)            = USERENV('LANG')
29793   
29794 )
29795 ;
29796 --
29797 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29798 
29799       trace
29800          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
29801          ,p_level    => C_LEVEL_STATEMENT
29802          ,p_module   => l_log_module);
29803 
29807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29804 END IF;
29805 
29806 
29808       trace
29809          (p_msg      => 'END of insert_sources_44'
29810          ,p_level    => C_LEVEL_PROCEDURE
29811          ,p_module   => l_log_module);
29812 END IF;
29813 EXCEPTION
29814   WHEN xla_exceptions_pkg.application_exception THEN
29815       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29816             trace
29817                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29818                ,p_level    => C_LEVEL_EXCEPTION
29819                ,p_module   => l_log_module);
29820       END IF;
29821       RAISE;
29822   WHEN OTHERS THEN
29823       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29824             trace
29825                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29826                ,p_level    => C_LEVEL_EXCEPTION
29827                ,p_module   => l_log_module);
29828        END IF;
29829        xla_exceptions_pkg.raise_message
29830            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_44');
29831 END insert_sources_44;
29832 --
29833 
29834 ---------------------------------------
29835 --
29836 -- PRIVATE FUNCTION
29837 --         EventClass_44
29838 --
29839 ----------------------------------------
29840 --
29841 FUNCTION EventClass_44
29842        (p_application_id         IN NUMBER
29843        ,p_base_ledger_id         IN NUMBER
29844        ,p_target_ledger_id       IN NUMBER
29845        ,p_language               IN VARCHAR2
29846        ,p_currency_code          IN VARCHAR2
29847        ,p_sla_ledger_id          IN NUMBER
29848        ,p_pad_start_date         IN DATE
29849        ,p_pad_end_date           IN DATE
29850        ,p_primary_ledger_id      IN NUMBER)
29851 RETURN BOOLEAN IS
29852 --
29853 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TERMINATION_ALL';
29854 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TERMINATION';
29855 
29856 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
29857 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
29858 --
29859 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29860 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29861 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29862 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29863 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29864 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29865 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29866 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29867 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29868 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29869 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29870 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29871 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29872 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29873 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29874 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29875 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29876 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29877 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29878 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29879 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29880 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29881 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
29882 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29883 
29884 l_event_id                             NUMBER;
29885 l_previous_event_id                    NUMBER;
29886 l_first_event_id                       NUMBER;
29887 l_last_event_id                        NUMBER;
29888 
29889 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
29890 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
29891 --
29892 --
29893 l_result                    BOOLEAN := TRUE;
29894 l_rows                      NUMBER  := 1000;
29895 l_event_type_name           VARCHAR2(80) := 'All';
29896 l_event_class_name          VARCHAR2(80) := 'Termination';
29897 l_description               VARCHAR2(4000);
29898 l_transaction_reversal      NUMBER;
29899 l_ae_header_id              NUMBER;
29900 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
29901 l_log_module                VARCHAR2(240);
29902 --
29903 l_acct_reversal_source      VARCHAR2(30);
29904 l_trx_reversal_source       VARCHAR2(30);
29905 
29906 l_continue_with_lines       BOOLEAN := TRUE;
29907 --
29908 l_acc_rev_gl_date_source    DATE;                      -- 4262811
29909 --
29910 type t_array_event_id is table of number index by binary_integer;
29911 
29912 l_rec_array_event                    t_rec_array_event;
29913 l_null_rec_array_event               t_rec_array_event;
29914 l_array_ae_header_id                 xla_number_array_type;
29915 l_actual_flag                        VARCHAR2(1) := NULL;
29916 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
29917 l_balance_type_code                  VARCHAR2(1) :=NULL;
29918 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
29919 
29920 --
29921 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
29922 --
29923 
29924 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
29928 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
29925 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
29926 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
29927 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
29929 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
29930 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
29931 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
29932 
29933 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
29934 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
29935 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
29936 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
29937 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
29938 
29939 l_array_source_1              t_array_source_1;
29940 l_array_source_2              t_array_source_2;
29941 l_array_source_10              t_array_source_10;
29942 l_array_source_11              t_array_source_11;
29943 l_array_source_12              t_array_source_12;
29944 l_array_source_13              t_array_source_13;
29945 l_array_source_15              t_array_source_15;
29946 l_array_source_16              t_array_source_16;
29947 
29948 l_array_source_5      t_array_source_5;
29949 l_array_source_6      t_array_source_6;
29950 l_array_source_6_meaning      t_array_lookup_meaning;
29951 l_array_source_7      t_array_source_7;
29952 l_array_source_8      t_array_source_8;
29953 l_array_source_9      t_array_source_9;
29954 
29955 --
29956 CURSOR header_cur
29957 IS
29958 SELECT /*+ leading(xet) cardinality(xet,1) */
29959 -- Event Class Code: TERMINATION
29960     xet.entity_id
29961    ,xet.legal_entity_id
29962    ,xet.entity_code
29963    ,xet.transaction_number
29964    ,xet.event_id
29965    ,xet.event_class_code
29966    ,xet.event_type_code
29967    ,xet.event_number
29968    ,xet.event_date
29969    ,xet.transaction_date
29970    ,xet.reference_num_1
29971    ,xet.reference_num_2
29972    ,xet.reference_num_3
29973    ,xet.reference_num_4
29974    ,xet.reference_char_1
29975    ,xet.reference_char_2
29976    ,xet.reference_char_3
29977    ,xet.reference_char_4
29978    ,xet.reference_date_1
29979    ,xet.reference_date_2
29980    ,xet.reference_date_3
29981    ,xet.reference_date_4
29982    ,xet.event_created_by
29983    ,xet.budgetary_control_flag 
29984   , h1.TEH_CONTRACT_NUMBER    source_1
29985   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
29986   , h1.TCN_CURRENCY_CODE    source_10
29987   , h1.TCN_CURR_CONVERSION_DATE    source_11
29988   , h1.TCN_CURR_CONVERSION_RATE    source_12
29989   , h1.TCN_CURR_CONVERSION_TYPE    source_13
29990   , h1.GL_DATE    source_15
29991   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
29992   FROM xla_events_gt     xet 
29993   , OKL_CMN_EXTRACT_HDR_V  h1
29994  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
29995    and xet.event_class_code = C_EVENT_CLASS_CODE
29996    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
29997 
29998  ORDER BY event_id
29999 ;
30000 
30001 
30002 --
30003 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
30004 IS
30005 SELECT  /*+ leading(xet) cardinality(xet,1) */
30006 -- Event Class Code: TERMINATION
30007     xet.entity_id
30008    ,xet.legal_entity_id
30009    ,xet.entity_code
30010    ,xet.transaction_number
30011    ,xet.event_id
30012    ,xet.event_class_code
30013    ,xet.event_type_code
30014    ,xet.event_number
30015    ,xet.event_date
30016    ,xet.transaction_date
30017    ,xet.reference_num_1
30018    ,xet.reference_num_2
30019    ,xet.reference_num_3
30020    ,xet.reference_num_4
30021    ,xet.reference_char_1
30022    ,xet.reference_char_2
30023    ,xet.reference_char_3
30024    ,xet.reference_char_4
30025    ,xet.reference_date_1
30026    ,xet.reference_date_2
30027    ,xet.reference_date_3
30028    ,xet.reference_date_4
30029    ,xet.event_created_by
30030    ,xet.budgetary_control_flag
30031  , l2.LINE_NUMBER  
30032   , l2.DIST_CODE_COMBINATION_ID    source_5
30033   , l2.DIST_AE_LINE_TYPE_CODE    source_6
30034   , fvl6.meaning   source_6_meaning
30035   , l2.DIST_ID    source_7
30036   , l2.DIST_TYPE    source_8
30037   , l2.DIST_ENTERED_AMOUNT    source_9
30038   FROM xla_events_gt     xet 
30039   , OKL_CMN_EXTRACT_LINE_V  l2
30040   , fnd_lookup_values    fvl6
30041  WHERE xet.event_id between x_first_event_id and x_last_event_id
30042    and xet.event_date between p_pad_start_date and p_pad_end_date
30043    and xet.event_class_code = C_EVENT_CLASS_CODE
30044    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
30045    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
30046   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
30047   AND fvl6.view_application_id(+) = 0
30048   AND fvl6.language(+)            = USERENV('LANG')
30049   ;
30050 
30051 --
30052 BEGIN
30053 IF g_log_enabled THEN
30054    l_log_module := C_DEFAULT_MODULE||'.EventClass_44';
30055 END IF;
30056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30057    trace
30058       (p_msg      => 'BEGIN of EventClass_44'
30059       ,p_level    => C_LEVEL_PROCEDURE
30060       ,p_module   => l_log_module);
30061 END IF;
30062 
30066                      ' - p_base_ledger_id = '||p_base_ledger_id||
30063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30064    trace
30065       (p_msg      => 'p_application_id = '||p_application_id||
30067                      ' - p_target_ledger_id  = '||p_target_ledger_id||
30068                      ' - p_language = '||p_language||
30069                      ' - p_currency_code = '||p_currency_code||
30070                      ' - p_sla_ledger_id = '||p_sla_ledger_id
30071       ,p_level    => C_LEVEL_STATEMENT
30072       ,p_module   => l_log_module);
30073 END IF;
30074 --
30075 -- initialze arrays
30076 --
30077 g_array_event.DELETE;
30078 l_rec_array_event := l_null_rec_array_event;
30079 --
30080 --------------------------------------
30081 -- 4262811 Initialze MPA Line Number
30082 --------------------------------------
30083 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
30084 
30085 --
30086 
30087 --
30088 OPEN header_cur;
30089 --
30090 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30091    trace
30092    (p_msg      => 'SQL - FETCH header_cur'
30093    ,p_level    => C_LEVEL_STATEMENT
30094    ,p_module   => l_log_module);
30095 END IF;
30096 --
30097 LOOP
30098 FETCH header_cur BULK COLLECT INTO
30099         l_array_entity_id
30100       , l_array_legal_entity_id
30101       , l_array_entity_code
30102       , l_array_transaction_num
30103       , l_array_event_id
30104       , l_array_class_code
30105       , l_array_event_type
30106       , l_array_event_number
30107       , l_array_event_date
30108       , l_array_transaction_date
30109       , l_array_reference_num_1
30110       , l_array_reference_num_2
30111       , l_array_reference_num_3
30112       , l_array_reference_num_4
30113       , l_array_reference_char_1
30114       , l_array_reference_char_2
30115       , l_array_reference_char_3
30116       , l_array_reference_char_4
30117       , l_array_reference_date_1
30118       , l_array_reference_date_2
30119       , l_array_reference_date_3
30120       , l_array_reference_date_4
30121       , l_array_event_created_by
30122       , l_array_budgetary_control_flag 
30123       , l_array_source_1
30124       , l_array_source_2
30125       , l_array_source_10
30126       , l_array_source_11
30127       , l_array_source_12
30128       , l_array_source_13
30129       , l_array_source_15
30130       , l_array_source_16
30131       LIMIT l_rows;
30132 --
30133 IF (C_LEVEL_EVENT >= g_log_level) THEN
30134    trace
30135    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
30136    ,p_level    => C_LEVEL_EVENT
30137    ,p_module   => l_log_module);
30138 END IF;
30139 --
30140 EXIT WHEN l_array_entity_id.COUNT = 0;
30141 
30142 -- initialize arrays
30143 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
30144 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
30145 
30146 --
30147 -- Bug 4458708
30148 --
30149 XLA_AE_LINES_PKG.g_LineNumber := 0;
30150 
30151 
30152 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
30153 g_last_hdr_idx := l_array_event_id.LAST;
30154 --
30155 -- loop for the headers. Each iteration is for each header extract row
30156 -- fetched in header cursor
30157 --
30158 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
30159 
30160 --
30161 -- set event info as cache for other routines to refer event attributes
30162 --
30163 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
30164    (p_application_id           => p_application_id
30165    ,p_primary_ledger_id        => p_primary_ledger_id
30166    ,p_base_ledger_id           => p_base_ledger_id
30167    ,p_target_ledger_id         => p_target_ledger_id
30168    ,p_entity_id                => l_array_entity_id(hdr_idx)
30169    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
30170    ,p_entity_code              => l_array_entity_code(hdr_idx)
30171    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
30172    ,p_event_id                 => l_array_event_id(hdr_idx)
30173    ,p_event_class_code         => l_array_class_code(hdr_idx)
30174    ,p_event_type_code          => l_array_event_type(hdr_idx)
30175    ,p_event_number             => l_array_event_number(hdr_idx)
30176    ,p_event_date               => l_array_event_date(hdr_idx)
30177    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
30178    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
30179    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
30180    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
30181    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
30182    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
30183    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
30184    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
30185    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
30186    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
30187    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
30188    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
30189    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
30190    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
30191    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
30192 
30193 --
30194 -- set the status of entry to C_VALID (0)
30195 --
30196 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
30197 
30198 --
30199 -- initialize a row for ae header
30200 --
30201 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
30202 
30203 l_event_id := l_array_event_id(hdr_idx);
30204 
30205 --
30206 -- storing the hdr_idx for event. May be used by line cursor.
30210 --
30207 --
30208 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
30209 
30211 -- store sources from header extract. This can be improved to
30212 -- store only those sources from header extract that may be used in lines
30213 --
30214 
30215 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
30216 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
30217 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
30218 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
30219 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
30220 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
30221 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
30222 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
30223 
30224 --
30225 -- initilaize the status of ae headers for diffrent balance types
30226 -- the status is initialised to C_NOT_CREATED (2)
30227 --
30228 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30229 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30230 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30231 
30232 --
30233 -- call api to validate and store accounting attributes for header
30234 --
30235 
30236 ------------------------------------------------------------
30237 -- Accrual Reversal : to get date for Standard Source (NONE)
30238 ------------------------------------------------------------
30239 l_acc_rev_gl_date_source := NULL;
30240 
30241      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
30242       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
30243      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
30244       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
30245 
30246 
30247 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
30248 
30249 XLA_AE_HEADER_PKG.SetJeCategoryName;
30250 
30251 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
30252 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
30253 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
30254 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
30255 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
30256 
30257 
30258 --
30259 xla_ae_header_pkg.SetHdrDescription(
30260    p_description => Description_1 (
30261    p_application_id => p_application_id 
30262  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30263  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30264    )
30265 );
30266 --
30267 
30268 -- No header level analytical criteria
30269 
30270 --
30271 --accounting attribute enhancement, bug 3612931
30272 --
30273 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
30274 
30275 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
30276    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
30277 
30278    xla_accounting_err_pkg.build_message
30279       (p_appli_s_name            => 'XLA'
30280       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
30281       ,p_token_1                 => 'ACCT_ATTR_NAME'
30282       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
30283       ,p_token_2                 => 'PRODUCT_NAME'
30284       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30285       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30286       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
30287       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30288 
30289 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
30290    --
30291    -- following sets the accounting attributes needed to reverse
30292    -- accounting for a distributeion
30293    --
30294    xla_ae_lines_pkg.SetTrxReversalAttrs
30295       (p_event_id              => l_event_id
30296       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
30297       ,p_trx_reversal_source   => l_trx_reversal_source);
30298 
30299 END IF;
30300 
30301 
30302 ----------------------------------------------------------------
30303 -- 4262811 -  update the header statuses to invalid in need be
30304 ----------------------------------------------------------------
30305 --
30306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
30307 
30308 
30309   -----------------------------------------------
30310   -- No accrual reversal for the event class/type
30311   -----------------------------------------------
30312 ----------------------------------------------------------------
30313 
30314 --
30315 -- this ends the header loop iteration for one bulk fetch
30316 --
30317 END LOOP;
30318 
30319 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
30320 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
30321 
30322 --
30323 -- insert dummy rows into lines gt table that were created due to
30324 -- transaction reversals
30325 --
30326 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
30327    l_result := XLA_AE_LINES_PKG.InsertLines;
30328 END IF;
30329 
30330 --
30331 -- reset the temp_line_num for each set of events fetched from header
30335 xla_ae_lines_pkg.g_temp_line_num := 0;
30332 -- cursor rather than doing it for each new event in line cursor
30333 -- Bug 3939231
30334 --
30336 
30337 
30338 
30339 --
30340 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
30341 --
30342 --
30343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30344 
30345       trace
30346          (p_msg      => 'SQL - FETCH line_cur'
30347          ,p_level    => C_LEVEL_STATEMENT
30348          ,p_module   => l_log_module);
30349 
30350 END IF;
30351 --
30352 --
30353 LOOP
30354   --
30355   FETCH line_cur BULK COLLECT INTO
30356         l_array_entity_id
30357       , l_array_legal_entity_id
30358       , l_array_entity_code
30359       , l_array_transaction_num
30360       , l_array_event_id
30361       , l_array_class_code
30362       , l_array_event_type
30363       , l_array_event_number
30364       , l_array_event_date
30365       , l_array_transaction_date
30366       , l_array_reference_num_1
30367       , l_array_reference_num_2
30368       , l_array_reference_num_3
30369       , l_array_reference_num_4
30370       , l_array_reference_char_1
30371       , l_array_reference_char_2
30372       , l_array_reference_char_3
30373       , l_array_reference_char_4
30374       , l_array_reference_date_1
30375       , l_array_reference_date_2
30376       , l_array_reference_date_3
30377       , l_array_reference_date_4
30378       , l_array_event_created_by
30379       , l_array_budgetary_control_flag
30380       , l_array_extract_line_num 
30381       , l_array_source_5
30382       , l_array_source_6
30383       , l_array_source_6_meaning
30384       , l_array_source_7
30385       , l_array_source_8
30386       , l_array_source_9
30387       LIMIT l_rows;
30388 
30389   --
30390   IF (C_LEVEL_EVENT >= g_log_level) THEN
30391             trace
30392                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
30393                ,p_level    => C_LEVEL_EVENT
30394                ,p_module   => l_log_module);
30395   END IF;
30396   --
30397   EXIT WHEN l_array_entity_id.count = 0;
30398 
30399   XLA_AE_LINES_PKG.g_rec_lines := null;
30400 
30401 --
30402 -- Bug 4458708
30403 --
30404 XLA_AE_LINES_PKG.g_LineNumber := 0;
30405 --
30406 --
30407 
30408 FOR Idx IN 1..l_array_event_id.count LOOP
30409    --
30410    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
30411    --
30412    l_event_id := l_array_event_id(idx);  -- 5648433
30413 
30414    --
30415    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30416    --
30417 
30418    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
30419              (g_array_event(l_event_id).array_value_num('header_index'))
30420          ,'N'
30421          ) <> 'Y'
30422    THEN
30423       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30424          trace
30425             (p_msg      => 'Trancaction revesal option is not Y '
30426             ,p_level    => C_LEVEL_STATEMENT
30427             ,p_module   => l_log_module);
30428       END IF;
30429 
30430 --
30431 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
30432 --
30433 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
30434 --
30435 -- set event info as cache for other routines to refer event attributes
30436 --
30437 
30438 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
30439    l_previous_event_id := l_event_id;
30440 
30441    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
30442       (p_application_id           => p_application_id
30443       ,p_primary_ledger_id        => p_primary_ledger_id
30444       ,p_base_ledger_id           => p_base_ledger_id
30445       ,p_target_ledger_id         => p_target_ledger_id
30446       ,p_entity_id                => l_array_entity_id(Idx)
30447       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
30448       ,p_entity_code              => l_array_entity_code(Idx)
30449       ,p_transaction_num          => l_array_transaction_num(Idx)
30450       ,p_event_id                 => l_array_event_id(Idx)
30451       ,p_event_class_code         => l_array_class_code(Idx)
30452       ,p_event_type_code          => l_array_event_type(Idx)
30453       ,p_event_number             => l_array_event_number(Idx)
30454       ,p_event_date               => l_array_event_date(Idx)
30455       ,p_transaction_date         => l_array_transaction_date(Idx)
30456       ,p_reference_num_1          => l_array_reference_num_1(Idx)
30457       ,p_reference_num_2          => l_array_reference_num_2(Idx)
30458       ,p_reference_num_3          => l_array_reference_num_3(Idx)
30459       ,p_reference_num_4          => l_array_reference_num_4(Idx)
30460       ,p_reference_char_1         => l_array_reference_char_1(Idx)
30461       ,p_reference_char_2         => l_array_reference_char_2(Idx)
30462       ,p_reference_char_3         => l_array_reference_char_3(Idx)
30463       ,p_reference_char_4         => l_array_reference_char_4(Idx)
30464       ,p_reference_date_1         => l_array_reference_date_1(Idx)
30465       ,p_reference_date_2         => l_array_reference_date_2(Idx)
30466       ,p_reference_date_3         => l_array_reference_date_3(Idx)
30467       ,p_reference_date_4         => l_array_reference_date_4(Idx)
30468       ,p_event_created_by         => l_array_event_created_by(Idx)
30469       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
30470        --
30471 END IF;
30472 
30473 
30474 
30475 --
30476 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
30477 
30478 l_acct_reversal_source := SUBSTR(NULL, 1,30);
30479 
30480 IF l_continue_with_lines THEN
30484       xla_accounting_err_pkg.build_message
30481    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
30482       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
30483 
30485          (p_appli_s_name            => 'XLA'
30486          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
30487          ,p_token_1                 => 'LINE_NUMBER'
30488          ,p_value_1                 => l_array_extract_line_num(Idx)
30489          ,p_token_2                 => 'PRODUCT_NAME'
30490          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30491          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30492          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
30493          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30494 
30495    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
30496       --
30497       -- following sets the accounting attributes needed to reverse
30498       -- accounting for a distributeion
30499       --
30500 
30501       --
30502       -- 5217187
30503       --
30504       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
30505       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
30506                                        g_array_event(l_event_id).array_value_num('header_index'));
30507       --
30508       --
30509 
30510       -- No reversal code generated
30511 
30512       xla_ae_lines_pkg.SetAcctReversalAttrs
30513          (p_event_id             => l_event_id
30514          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
30515          ,p_calculate_acctd_flag => l_calculate_acctd_flag
30516          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
30517    END IF;
30518 
30519    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
30520        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
30521 
30522 --
30523 AcctLineType_28 (
30524  p_application_id  => p_application_id
30525  ,p_event_id     => l_event_id
30526  ,p_calculate_acctd_flag => l_calculate_acctd_flag
30527  ,p_calculate_g_l_flag => l_calculate_g_l_flag
30528  ,p_actual_flag => l_actual_flag
30529  ,p_balance_type_code => l_balance_type_code
30530  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30531  
30532  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30533  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30534  , p_source_5 => l_array_source_5(Idx)
30535  , p_source_6 => l_array_source_6(Idx)
30536  , p_source_6_meaning => l_array_source_6_meaning(Idx)
30537  , p_source_7 => l_array_source_7(Idx)
30538  , p_source_8 => l_array_source_8(Idx)
30539  , p_source_9 => l_array_source_9(Idx)
30540  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
30541  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
30542  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
30543  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
30544  );
30545 If(l_balance_type_code = 'A') THEN
30546   l_actual_gain_loss_ref := l_gain_or_loss_ref;
30547 END IF;
30548 
30549 --
30550 
30551 
30552 --
30553 AcctLineType_29 (
30554  p_application_id  => p_application_id
30555  ,p_event_id     => l_event_id
30556  ,p_calculate_acctd_flag => l_calculate_acctd_flag
30557  ,p_calculate_g_l_flag => l_calculate_g_l_flag
30558  ,p_actual_flag => l_actual_flag
30559  ,p_balance_type_code => l_balance_type_code
30560  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30561  
30562  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
30563  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30564  , p_source_5 => l_array_source_5(Idx)
30565  , p_source_6 => l_array_source_6(Idx)
30566  , p_source_6_meaning => l_array_source_6_meaning(Idx)
30567  , p_source_7 => l_array_source_7(Idx)
30568  , p_source_8 => l_array_source_8(Idx)
30569  , p_source_9 => l_array_source_9(Idx)
30570  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
30571  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
30572  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
30573  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
30574  );
30575 If(l_balance_type_code = 'A') THEN
30576   l_actual_gain_loss_ref := l_gain_or_loss_ref;
30577 END IF;
30578 
30579 --
30580 
30581       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
30582       -- or secondary ledger that has different currency with primary
30583       -- or alc that is calculated by sla
30584       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
30585             (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'))
30586 
30587 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
30588 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
30589           AND (l_actual_flag = 'A')) THEN
30590         XLA_AE_LINES_PKG.CreateGainOrLossLines(
30591           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
30592          ,p_application_id   => p_application_id
30593          ,p_amb_context_code => 'DEFAULT'
30594          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
30595          ,p_event_class_code => C_EVENT_CLASS_CODE
30596          ,p_event_type_code  => C_EVENT_TYPE_CODE
30597          
30598          ,p_gain_ccid        => -1
30599          ,p_loss_ccid        => -1
30600 
30601          ,p_actual_flag      => l_actual_flag
30602          ,p_enc_flag         => null
30606       END IF;
30603          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
30604          ,p_enc_g_l_ref      => null
30605          );
30607    END IF;
30608 END IF;
30609 
30610    ELSE
30611       --
30612       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30613       --
30614       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30615          trace
30616             (p_msg      => 'Trancaction revesal option is Y'
30617             ,p_level    => C_LEVEL_STATEMENT
30618             ,p_module   => l_log_module);
30619       END IF;
30620    END IF;
30621 
30622 END LOOP;
30623 l_result := XLA_AE_LINES_PKG.InsertLines ;
30624 end loop;
30625 close line_cur;
30626 
30627 
30628 --
30629 -- insert headers into xla_ae_headers_gt table
30630 --
30631 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
30632 
30633 -- insert into errors table here.
30634 
30635 END LOOP;
30636 
30637 --
30638 -- 4865292
30639 --
30640 -- Compare g_hdr_extract_count with event count in
30641 -- CreateHeadersAndLines.
30642 --
30643 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
30644 
30645 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30646    trace (p_msg     => '# rows extracted from header extract objects '
30647                     || ' (running total): '
30648                     || g_hdr_extract_count
30649          ,p_level   => C_LEVEL_STATEMENT
30650          ,p_module  => l_log_module);
30651 END IF;
30652 
30653 CLOSE header_cur;
30654 --
30655 
30656 --
30657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30658    trace
30659       (p_msg      => 'END of EventClass_44'
30660       ,p_level    => C_LEVEL_PROCEDURE
30661       ,p_module   => l_log_module);
30662 END IF;
30663 --
30664 RETURN l_result;
30665 EXCEPTION
30666 WHEN xla_exceptions_pkg.application_exception THEN
30667    
30668 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
30669 
30670    
30671 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
30672 
30673    RAISE;
30674 WHEN OTHERS THEN
30675    xla_exceptions_pkg.raise_message
30676       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_44');
30677 END EventClass_44;
30678 --
30679 
30680 ---------------------------------------
30681 --
30682 -- PRIVATE PROCEDURE
30683 --         insert_sources_45
30684 --
30685 ----------------------------------------
30686 --
30687 PROCEDURE insert_sources_45(
30688                                 p_target_ledger_id       IN NUMBER
30689                               , p_language               IN VARCHAR2
30690                               , p_sla_ledger_id          IN NUMBER
30691                               , p_pad_start_date         IN DATE
30692                               , p_pad_end_date           IN DATE
30693                          )
30694 IS
30695 
30696 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UPFRONT_TAX_ALL';
30697 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'UPFRONT_TAX';
30698 p_apps_owner                   VARCHAR2(30);
30699 l_log_module                   VARCHAR2(240);
30700 BEGIN
30701 IF g_log_enabled THEN
30702       l_log_module := C_DEFAULT_MODULE||'.insert_sources_45';
30703 END IF;
30704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30705 
30706       trace
30707          (p_msg      => 'BEGIN of insert_sources_45'
30708          ,p_level    => C_LEVEL_PROCEDURE
30709          ,p_module   => l_log_module);
30710 
30711 END IF;
30712 
30713 -- select APPS owner
30714 SELECT oracle_username
30715   INTO p_apps_owner
30716   FROM fnd_oracle_userid
30717  WHERE read_only_flag = 'U'
30718 ;
30719 
30720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30721       trace
30722          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
30723                         ' - p_language = '||p_language||
30724                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
30725                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
30726                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
30727                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
30728          ,p_level    => C_LEVEL_STATEMENT
30729          ,p_module   => l_log_module);
30730 END IF;
30731 
30732 
30733 --
30734 INSERT INTO xla_diag_sources --hdr2
30735 (
30736         event_id
30737       , ledger_id
30738       , sla_ledger_id
30739       , description_language
30740       , object_name
30741       , object_type_code
30742       , line_number
30743       , source_application_id
30744       , source_type_code
30745       , source_code
30746       , source_value
30747       , source_meaning
30748       , created_by
30749       , creation_date
30750       , last_update_date
30751       , last_updated_by
30752       , last_update_login
30753       , program_update_date
30754       , program_application_id
30755       , program_id
30756       , request_id
30757 )
30758 SELECT
30759         event_id
30760       , p_target_ledger_id
30761       , p_sla_ledger_id
30762       , p_language
30763       , object_name
30764       , object_type_code
30765       , line_number
30766       , source_application_id
30767       , source_type_code
30768       , source_code
30769       , SUBSTR(source_value ,1,1996)
30770       , SUBSTR(source_meaning ,1,200)
30771       , xla_environment_pkg.g_Usr_Id
30772       , TRUNC(SYSDATE)
30773       , TRUNC(SYSDATE)
30774       , xla_environment_pkg.g_Usr_Id
30775       , xla_environment_pkg.g_Login_Id
30776       , TRUNC(SYSDATE)
30780   FROM (
30777       , xla_environment_pkg.g_Prog_Appl_Id
30778       , xla_environment_pkg.g_Prog_Id
30779       , xla_environment_pkg.g_Req_Id
30781        SELECT xet.event_id                  event_id
30782             , 0                          line_number
30783             , CASE r
30784                WHEN 1 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30785                 WHEN 2 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30786                 WHEN 3 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30787                 WHEN 4 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30788                 WHEN 5 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30789                 WHEN 6 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30790                 WHEN 7 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30791                 WHEN 8 THEN 'OKL_CMN_EXTRACT_HDR_V' 
30792                 
30793                ELSE null
30794               END                           object_name
30795             , CASE r
30796                 WHEN 1 THEN 'HEADER' 
30797                 WHEN 2 THEN 'HEADER' 
30798                 WHEN 3 THEN 'HEADER' 
30799                 WHEN 4 THEN 'HEADER' 
30800                 WHEN 5 THEN 'HEADER' 
30801                 WHEN 6 THEN 'HEADER' 
30802                 WHEN 7 THEN 'HEADER' 
30803                 WHEN 8 THEN 'HEADER' 
30804                 
30805                 ELSE null
30806               END                           object_type_code
30807             , CASE r
30808                 WHEN 1 THEN '540' 
30809                 WHEN 2 THEN '540' 
30810                 WHEN 3 THEN '540' 
30811                 WHEN 4 THEN '540' 
30812                 WHEN 5 THEN '540' 
30813                 WHEN 6 THEN '540' 
30814                 WHEN 7 THEN '540' 
30815                 WHEN 8 THEN '540' 
30816                 
30817                 ELSE null
30818               END                           source_application_id
30819             , 'S'             source_type_code
30820             , CASE r
30821                 WHEN 1 THEN 'TEH_CONTRACT_NUMBER' 
30822                 WHEN 2 THEN 'TCN_CONTRACT_PRODUCT_NAME' 
30823                 WHEN 3 THEN 'TCN_CURRENCY_CODE' 
30824                 WHEN 4 THEN 'TCN_CURR_CONVERSION_DATE' 
30825                 WHEN 5 THEN 'TCN_CURR_CONVERSION_RATE' 
30826                 WHEN 6 THEN 'TCN_CURR_CONVERSION_TYPE' 
30827                 WHEN 7 THEN 'GL_DATE' 
30828                 WHEN 8 THEN 'TCN_ACCOUNTING_REVERSAL_FLAG' 
30829                 
30830                 ELSE null
30831               END                           source_code
30832             , CASE r
30833                 WHEN 1 THEN TO_CHAR(h1.TEH_CONTRACT_NUMBER)
30834                 WHEN 2 THEN TO_CHAR(h1.TCN_CONTRACT_PRODUCT_NAME)
30835                 WHEN 3 THEN TO_CHAR(h1.TCN_CURRENCY_CODE)
30836                 WHEN 4 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_DATE)
30837                 WHEN 5 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_RATE)
30838                 WHEN 6 THEN TO_CHAR(h1.TCN_CURR_CONVERSION_TYPE)
30839                 WHEN 7 THEN TO_CHAR(h1.GL_DATE)
30840                 WHEN 8 THEN TO_CHAR(h1.TCN_ACCOUNTING_REVERSAL_FLAG)
30841                 
30842                 ELSE null
30843               END                           source_value
30844             , null              source_meaning
30845          FROM xla_events_gt     xet  
30846       , OKL_CMN_EXTRACT_HDR_V  h1
30847              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
30848          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30849            AND xet.event_class_code = C_EVENT_CLASS_CODE
30850               AND h1.event_id = xet.event_id
30851 
30852 )
30853 ;
30854 --
30855 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30856 
30857       trace
30858          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
30859          ,p_level    => C_LEVEL_STATEMENT
30860          ,p_module   => l_log_module);
30861 
30862 END IF;
30863 --
30864 
30865 
30866 
30867 --
30868 INSERT INTO xla_diag_sources  --line2
30869 (
30870         event_id
30871       , ledger_id
30872       , sla_ledger_id
30873       , description_language
30874       , object_name
30875       , object_type_code
30876       , line_number
30877       , source_application_id
30878       , source_type_code
30879       , source_code
30880       , source_value
30881       , source_meaning
30882       , created_by
30883       , creation_date
30884       , last_update_date
30885       , last_updated_by
30886       , last_update_login
30887       , program_update_date
30888       , program_application_id
30889       , program_id
30890       , request_id
30891 )
30892 SELECT  event_id
30893       , p_target_ledger_id
30894       , p_sla_ledger_id
30895       , p_language
30896       , object_name
30897       , object_type_code
30898       , line_number
30899       , source_application_id
30900       , source_type_code
30901       , source_code
30902       , SUBSTR(source_value,1,1996)
30903       , SUBSTR(source_meaning ,1,200)
30904       , xla_environment_pkg.g_Usr_Id
30905       , TRUNC(SYSDATE)
30906       , TRUNC(SYSDATE)
30907       , xla_environment_pkg.g_Usr_Id
30908       , xla_environment_pkg.g_Login_Id
30909       , TRUNC(SYSDATE)
30910       , xla_environment_pkg.g_Prog_Appl_Id
30911       , xla_environment_pkg.g_Prog_Id
30912       , xla_environment_pkg.g_Req_Id
30913   FROM (
30914        SELECT xet.event_id                  event_id
30915             , l2.line_number                 line_number
30916             , CASE r
30917                WHEN 1 THEN 'OKL_CMN_EXTRACT_LINE_V' 
30918                 WHEN 2 THEN 'OKL_CMN_EXTRACT_LINE_V' 
30919                 WHEN 3 THEN 'OKL_CMN_EXTRACT_LINE_V' 
30920                 WHEN 4 THEN 'OKL_CMN_EXTRACT_LINE_V' 
30924               END                           object_name
30921                 WHEN 5 THEN 'OKL_CMN_EXTRACT_LINE_V' 
30922                 
30923                ELSE null
30925             , CASE r
30926                 WHEN 1 THEN 'LINE' 
30927                 WHEN 2 THEN 'LINE' 
30928                 WHEN 3 THEN 'LINE' 
30929                 WHEN 4 THEN 'LINE' 
30930                 WHEN 5 THEN 'LINE' 
30931                 
30932                 ELSE null
30933               END                           object_type_code
30934             , CASE r
30935                 WHEN 1 THEN '540' 
30936                 WHEN 2 THEN '540' 
30937                 WHEN 3 THEN '540' 
30938                 WHEN 4 THEN '540' 
30939                 WHEN 5 THEN '540' 
30940                 
30941                 ELSE null
30942               END                           source_application_id
30943             , 'S'             source_type_code
30944             , CASE r
30945                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
30946                 WHEN 2 THEN 'DIST_AE_LINE_TYPE_CODE' 
30947                 WHEN 3 THEN 'DIST_ID' 
30948                 WHEN 4 THEN 'DIST_TYPE' 
30949                 WHEN 5 THEN 'DIST_ENTERED_AMOUNT' 
30950                 
30951                 ELSE null
30952               END                           source_code
30953             , CASE r
30954                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
30955                 WHEN 2 THEN TO_CHAR(l2.DIST_AE_LINE_TYPE_CODE)
30956                 WHEN 3 THEN TO_CHAR(l2.DIST_ID)
30957                 WHEN 4 THEN TO_CHAR(l2.DIST_TYPE)
30958                 WHEN 5 THEN TO_CHAR(l2.DIST_ENTERED_AMOUNT)
30959                 
30960                 ELSE null
30961               END                           source_value
30962             , CASE r
30963                 WHEN 2 THEN fvl6.meaning
30964                 
30965                 ELSE null
30966               END               source_meaning
30967          FROM  xla_events_gt     xet  
30968         , OKL_CMN_EXTRACT_LINE_V  l2
30969   , fnd_lookup_values    fvl6
30970             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
30971         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30972           AND xet.event_class_code = C_EVENT_CLASS_CODE
30973             AND l2.event_id          = xet.event_id
30974    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
30975   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
30976   AND fvl6.view_application_id(+) = 0
30977   AND fvl6.language(+)            = USERENV('LANG')
30978   
30979 )
30980 ;
30981 --
30982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30983 
30984       trace
30985          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
30986          ,p_level    => C_LEVEL_STATEMENT
30987          ,p_module   => l_log_module);
30988 
30989 END IF;
30990 
30991 
30992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30993       trace
30994          (p_msg      => 'END of insert_sources_45'
30995          ,p_level    => C_LEVEL_PROCEDURE
30996          ,p_module   => l_log_module);
30997 END IF;
30998 EXCEPTION
30999   WHEN xla_exceptions_pkg.application_exception THEN
31000       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
31001             trace
31002                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
31003                ,p_level    => C_LEVEL_EXCEPTION
31004                ,p_module   => l_log_module);
31005       END IF;
31006       RAISE;
31007   WHEN OTHERS THEN
31008       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
31009             trace
31010                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
31011                ,p_level    => C_LEVEL_EXCEPTION
31012                ,p_module   => l_log_module);
31013        END IF;
31014        xla_exceptions_pkg.raise_message
31015            (p_location => 'XLA_00540_AAD_S_000014_PKG.insert_sources_45');
31016 END insert_sources_45;
31017 --
31018 
31019 ---------------------------------------
31020 --
31021 -- PRIVATE FUNCTION
31022 --         EventClass_45
31023 --
31024 ----------------------------------------
31025 --
31026 FUNCTION EventClass_45
31027        (p_application_id         IN NUMBER
31028        ,p_base_ledger_id         IN NUMBER
31029        ,p_target_ledger_id       IN NUMBER
31030        ,p_language               IN VARCHAR2
31031        ,p_currency_code          IN VARCHAR2
31032        ,p_sla_ledger_id          IN NUMBER
31033        ,p_pad_start_date         IN DATE
31034        ,p_pad_end_date           IN DATE
31035        ,p_primary_ledger_id      IN NUMBER)
31036 RETURN BOOLEAN IS
31037 --
31038 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UPFRONT_TAX_ALL';
31039 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'UPFRONT_TAX';
31040 
31041 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
31042 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
31043 --
31044 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31045 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31046 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31047 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31048 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31049 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31050 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31051 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31052 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31053 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31054 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31058 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31055 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31056 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31057 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
31059 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31060 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31061 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
31062 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31063 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31064 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31065 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
31066 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
31067 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
31068 
31069 l_event_id                             NUMBER;
31070 l_previous_event_id                    NUMBER;
31071 l_first_event_id                       NUMBER;
31072 l_last_event_id                        NUMBER;
31073 
31074 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
31075 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
31076 --
31077 --
31078 l_result                    BOOLEAN := TRUE;
31079 l_rows                      NUMBER  := 1000;
31080 l_event_type_name           VARCHAR2(80) := 'All';
31081 l_event_class_name          VARCHAR2(80) := 'Upfront Tax';
31082 l_description               VARCHAR2(4000);
31083 l_transaction_reversal      NUMBER;
31084 l_ae_header_id              NUMBER;
31085 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
31086 l_log_module                VARCHAR2(240);
31087 --
31088 l_acct_reversal_source      VARCHAR2(30);
31089 l_trx_reversal_source       VARCHAR2(30);
31090 
31091 l_continue_with_lines       BOOLEAN := TRUE;
31092 --
31093 l_acc_rev_gl_date_source    DATE;                      -- 4262811
31094 --
31095 type t_array_event_id is table of number index by binary_integer;
31096 
31097 l_rec_array_event                    t_rec_array_event;
31098 l_null_rec_array_event               t_rec_array_event;
31099 l_array_ae_header_id                 xla_number_array_type;
31100 l_actual_flag                        VARCHAR2(1) := NULL;
31101 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
31102 l_balance_type_code                  VARCHAR2(1) :=NULL;
31103 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
31104 
31105 --
31106 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
31107 --
31108 
31109 TYPE t_array_source_1 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TEH_CONTRACT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
31110 TYPE t_array_source_2 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CONTRACT_PRODUCT_NAME%TYPE INDEX BY BINARY_INTEGER;
31111 TYPE t_array_source_10 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
31112 TYPE t_array_source_11 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
31113 TYPE t_array_source_12 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
31114 TYPE t_array_source_13 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_CURR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
31115 TYPE t_array_source_15 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
31116 TYPE t_array_source_16 IS TABLE OF OKL_CMN_EXTRACT_HDR_V.TCN_ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
31117 
31118 TYPE t_array_source_5 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
31119 TYPE t_array_source_6 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_AE_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
31120 TYPE t_array_source_7 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ID%TYPE INDEX BY BINARY_INTEGER;
31121 TYPE t_array_source_8 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
31122 TYPE t_array_source_9 IS TABLE OF OKL_CMN_EXTRACT_LINE_V.DIST_ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
31123 
31124 l_array_source_1              t_array_source_1;
31125 l_array_source_2              t_array_source_2;
31126 l_array_source_10              t_array_source_10;
31127 l_array_source_11              t_array_source_11;
31128 l_array_source_12              t_array_source_12;
31129 l_array_source_13              t_array_source_13;
31130 l_array_source_15              t_array_source_15;
31131 l_array_source_16              t_array_source_16;
31132 
31133 l_array_source_5      t_array_source_5;
31134 l_array_source_6      t_array_source_6;
31135 l_array_source_6_meaning      t_array_lookup_meaning;
31136 l_array_source_7      t_array_source_7;
31137 l_array_source_8      t_array_source_8;
31138 l_array_source_9      t_array_source_9;
31139 
31140 --
31141 CURSOR header_cur
31142 IS
31143 SELECT /*+ leading(xet) cardinality(xet,1) */
31144 -- Event Class Code: UPFRONT_TAX
31145     xet.entity_id
31146    ,xet.legal_entity_id
31147    ,xet.entity_code
31148    ,xet.transaction_number
31149    ,xet.event_id
31150    ,xet.event_class_code
31151    ,xet.event_type_code
31152    ,xet.event_number
31153    ,xet.event_date
31154    ,xet.transaction_date
31155    ,xet.reference_num_1
31156    ,xet.reference_num_2
31157    ,xet.reference_num_3
31158    ,xet.reference_num_4
31159    ,xet.reference_char_1
31160    ,xet.reference_char_2
31161    ,xet.reference_char_3
31162    ,xet.reference_char_4
31163    ,xet.reference_date_1
31164    ,xet.reference_date_2
31165    ,xet.reference_date_3
31166    ,xet.reference_date_4
31167    ,xet.event_created_by
31168    ,xet.budgetary_control_flag 
31169   , h1.TEH_CONTRACT_NUMBER    source_1
31170   , h1.TCN_CONTRACT_PRODUCT_NAME    source_2
31171   , h1.TCN_CURRENCY_CODE    source_10
31175   , h1.GL_DATE    source_15
31172   , h1.TCN_CURR_CONVERSION_DATE    source_11
31173   , h1.TCN_CURR_CONVERSION_RATE    source_12
31174   , h1.TCN_CURR_CONVERSION_TYPE    source_13
31176   , h1.TCN_ACCOUNTING_REVERSAL_FLAG    source_16
31177   FROM xla_events_gt     xet 
31178   , OKL_CMN_EXTRACT_HDR_V  h1
31179  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
31180    and xet.event_class_code = C_EVENT_CLASS_CODE
31181    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
31182 
31183  ORDER BY event_id
31184 ;
31185 
31186 
31187 --
31188 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
31189 IS
31190 SELECT  /*+ leading(xet) cardinality(xet,1) */
31191 -- Event Class Code: UPFRONT_TAX
31192     xet.entity_id
31193    ,xet.legal_entity_id
31194    ,xet.entity_code
31195    ,xet.transaction_number
31196    ,xet.event_id
31197    ,xet.event_class_code
31198    ,xet.event_type_code
31199    ,xet.event_number
31200    ,xet.event_date
31201    ,xet.transaction_date
31202    ,xet.reference_num_1
31203    ,xet.reference_num_2
31204    ,xet.reference_num_3
31205    ,xet.reference_num_4
31206    ,xet.reference_char_1
31207    ,xet.reference_char_2
31208    ,xet.reference_char_3
31209    ,xet.reference_char_4
31210    ,xet.reference_date_1
31211    ,xet.reference_date_2
31212    ,xet.reference_date_3
31213    ,xet.reference_date_4
31214    ,xet.event_created_by
31215    ,xet.budgetary_control_flag
31216  , l2.LINE_NUMBER  
31217   , l2.DIST_CODE_COMBINATION_ID    source_5
31218   , l2.DIST_AE_LINE_TYPE_CODE    source_6
31219   , fvl6.meaning   source_6_meaning
31220   , l2.DIST_ID    source_7
31221   , l2.DIST_TYPE    source_8
31222   , l2.DIST_ENTERED_AMOUNT    source_9
31223   FROM xla_events_gt     xet 
31224   , OKL_CMN_EXTRACT_LINE_V  l2
31225   , fnd_lookup_values    fvl6
31226  WHERE xet.event_id between x_first_event_id and x_last_event_id
31227    and xet.event_date between p_pad_start_date and p_pad_end_date
31228    and xet.event_class_code = C_EVENT_CLASS_CODE
31229    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
31230    AND fvl6.lookup_type(+)         = 'OKL_ACCOUNTING_LINE_TYPE'
31231   AND fvl6.lookup_code(+)         = l2.DIST_AE_LINE_TYPE_CODE
31232   AND fvl6.view_application_id(+) = 0
31233   AND fvl6.language(+)            = USERENV('LANG')
31234   ;
31235 
31236 --
31237 BEGIN
31238 IF g_log_enabled THEN
31239    l_log_module := C_DEFAULT_MODULE||'.EventClass_45';
31240 END IF;
31241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31242    trace
31243       (p_msg      => 'BEGIN of EventClass_45'
31244       ,p_level    => C_LEVEL_PROCEDURE
31245       ,p_module   => l_log_module);
31246 END IF;
31247 
31248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31249    trace
31250       (p_msg      => 'p_application_id = '||p_application_id||
31251                      ' - p_base_ledger_id = '||p_base_ledger_id||
31252                      ' - p_target_ledger_id  = '||p_target_ledger_id||
31253                      ' - p_language = '||p_language||
31254                      ' - p_currency_code = '||p_currency_code||
31255                      ' - p_sla_ledger_id = '||p_sla_ledger_id
31256       ,p_level    => C_LEVEL_STATEMENT
31257       ,p_module   => l_log_module);
31258 END IF;
31259 --
31260 -- initialze arrays
31261 --
31262 g_array_event.DELETE;
31263 l_rec_array_event := l_null_rec_array_event;
31264 --
31265 --------------------------------------
31266 -- 4262811 Initialze MPA Line Number
31267 --------------------------------------
31268 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
31269 
31270 --
31271 
31272 --
31273 OPEN header_cur;
31274 --
31275 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31276    trace
31277    (p_msg      => 'SQL - FETCH header_cur'
31278    ,p_level    => C_LEVEL_STATEMENT
31279    ,p_module   => l_log_module);
31280 END IF;
31281 --
31282 LOOP
31283 FETCH header_cur BULK COLLECT INTO
31284         l_array_entity_id
31285       , l_array_legal_entity_id
31286       , l_array_entity_code
31287       , l_array_transaction_num
31288       , l_array_event_id
31289       , l_array_class_code
31290       , l_array_event_type
31291       , l_array_event_number
31292       , l_array_event_date
31293       , l_array_transaction_date
31294       , l_array_reference_num_1
31295       , l_array_reference_num_2
31296       , l_array_reference_num_3
31297       , l_array_reference_num_4
31298       , l_array_reference_char_1
31299       , l_array_reference_char_2
31300       , l_array_reference_char_3
31301       , l_array_reference_char_4
31302       , l_array_reference_date_1
31303       , l_array_reference_date_2
31304       , l_array_reference_date_3
31305       , l_array_reference_date_4
31306       , l_array_event_created_by
31307       , l_array_budgetary_control_flag 
31308       , l_array_source_1
31309       , l_array_source_2
31310       , l_array_source_10
31311       , l_array_source_11
31312       , l_array_source_12
31313       , l_array_source_13
31314       , l_array_source_15
31315       , l_array_source_16
31316       LIMIT l_rows;
31317 --
31318 IF (C_LEVEL_EVENT >= g_log_level) THEN
31319    trace
31320    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
31321    ,p_level    => C_LEVEL_EVENT
31322    ,p_module   => l_log_module);
31323 END IF;
31324 --
31325 EXIT WHEN l_array_entity_id.COUNT = 0;
31326 
31327 -- initialize arrays
31328 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
31329 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
31330 
31331 --
31332 -- Bug 4458708
31333 --
31337 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
31334 XLA_AE_LINES_PKG.g_LineNumber := 0;
31335 
31336 
31338 g_last_hdr_idx := l_array_event_id.LAST;
31339 --
31340 -- loop for the headers. Each iteration is for each header extract row
31341 -- fetched in header cursor
31342 --
31343 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
31344 
31345 --
31346 -- set event info as cache for other routines to refer event attributes
31347 --
31348 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31349    (p_application_id           => p_application_id
31350    ,p_primary_ledger_id        => p_primary_ledger_id
31351    ,p_base_ledger_id           => p_base_ledger_id
31352    ,p_target_ledger_id         => p_target_ledger_id
31353    ,p_entity_id                => l_array_entity_id(hdr_idx)
31354    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
31355    ,p_entity_code              => l_array_entity_code(hdr_idx)
31356    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
31357    ,p_event_id                 => l_array_event_id(hdr_idx)
31358    ,p_event_class_code         => l_array_class_code(hdr_idx)
31359    ,p_event_type_code          => l_array_event_type(hdr_idx)
31360    ,p_event_number             => l_array_event_number(hdr_idx)
31361    ,p_event_date               => l_array_event_date(hdr_idx)
31362    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
31363    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
31364    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
31365    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
31366    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
31367    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
31368    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
31369    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
31370    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
31371    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
31372    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
31373    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
31374    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
31375    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
31376    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
31377 
31378 --
31379 -- set the status of entry to C_VALID (0)
31380 --
31381 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31382 
31383 --
31384 -- initialize a row for ae header
31385 --
31386 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
31387 
31388 l_event_id := l_array_event_id(hdr_idx);
31389 
31390 --
31391 -- storing the hdr_idx for event. May be used by line cursor.
31392 --
31393 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
31394 
31395 --
31396 -- store sources from header extract. This can be improved to
31397 -- store only those sources from header extract that may be used in lines
31398 --
31399 
31400 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
31401 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
31402 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
31403 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
31404 g_array_event(l_event_id).array_value_num('source_12') := l_array_source_12(hdr_idx);
31405 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
31406 g_array_event(l_event_id).array_value_date('source_15') := l_array_source_15(hdr_idx);
31407 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
31408 
31409 --
31410 -- initilaize the status of ae headers for diffrent balance types
31411 -- the status is initialised to C_NOT_CREATED (2)
31412 --
31413 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31414 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31415 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31416 
31417 --
31418 -- call api to validate and store accounting attributes for header
31419 --
31420 
31421 ------------------------------------------------------------
31422 -- Accrual Reversal : to get date for Standard Source (NONE)
31423 ------------------------------------------------------------
31424 l_acc_rev_gl_date_source := NULL;
31425 
31426      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
31427       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_15');
31428      l_rec_acct_attrs.array_acct_attr_code(2)   := 'TRX_ACCT_REVERSAL_OPTION';
31429       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_16');
31430 
31431 
31432 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
31433 
31434 XLA_AE_HEADER_PKG.SetJeCategoryName;
31435 
31436 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
31437 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
31438 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
31439 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
31440 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
31441 
31442 
31443 --
31444 xla_ae_header_pkg.SetHdrDescription(
31445    p_description => Description_1 (
31446    p_application_id => p_application_id 
31447  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31448  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31449    )
31453 -- No header level analytical criteria
31450 );
31451 --
31452 
31454 
31455 --
31456 --accounting attribute enhancement, bug 3612931
31457 --
31458 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_16'), 1,30);
31459 
31460 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
31461    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
31462 
31463    xla_accounting_err_pkg.build_message
31464       (p_appli_s_name            => 'XLA'
31465       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
31466       ,p_token_1                 => 'ACCT_ATTR_NAME'
31467       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
31468       ,p_token_2                 => 'PRODUCT_NAME'
31469       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31470       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31471       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
31472       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31473 
31474 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
31475    --
31476    -- following sets the accounting attributes needed to reverse
31477    -- accounting for a distributeion
31478    --
31479    xla_ae_lines_pkg.SetTrxReversalAttrs
31480       (p_event_id              => l_event_id
31481       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
31482       ,p_trx_reversal_source   => l_trx_reversal_source);
31483 
31484 END IF;
31485 
31486 
31487 ----------------------------------------------------------------
31488 -- 4262811 -  update the header statuses to invalid in need be
31489 ----------------------------------------------------------------
31490 --
31491 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
31492 
31493 
31494   -----------------------------------------------
31495   -- No accrual reversal for the event class/type
31496   -----------------------------------------------
31497 ----------------------------------------------------------------
31498 
31499 --
31500 -- this ends the header loop iteration for one bulk fetch
31501 --
31502 END LOOP;
31503 
31504 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
31505 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
31506 
31507 --
31508 -- insert dummy rows into lines gt table that were created due to
31509 -- transaction reversals
31510 --
31511 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
31512    l_result := XLA_AE_LINES_PKG.InsertLines;
31513 END IF;
31514 
31515 --
31516 -- reset the temp_line_num for each set of events fetched from header
31517 -- cursor rather than doing it for each new event in line cursor
31518 -- Bug 3939231
31519 --
31520 xla_ae_lines_pkg.g_temp_line_num := 0;
31521 
31522 
31523 
31524 --
31525 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
31526 --
31527 --
31528 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31529 
31530       trace
31531          (p_msg      => 'SQL - FETCH line_cur'
31532          ,p_level    => C_LEVEL_STATEMENT
31533          ,p_module   => l_log_module);
31534 
31535 END IF;
31536 --
31537 --
31538 LOOP
31539   --
31540   FETCH line_cur BULK COLLECT INTO
31541         l_array_entity_id
31542       , l_array_legal_entity_id
31543       , l_array_entity_code
31544       , l_array_transaction_num
31545       , l_array_event_id
31546       , l_array_class_code
31547       , l_array_event_type
31548       , l_array_event_number
31549       , l_array_event_date
31550       , l_array_transaction_date
31551       , l_array_reference_num_1
31552       , l_array_reference_num_2
31553       , l_array_reference_num_3
31554       , l_array_reference_num_4
31555       , l_array_reference_char_1
31556       , l_array_reference_char_2
31557       , l_array_reference_char_3
31558       , l_array_reference_char_4
31559       , l_array_reference_date_1
31560       , l_array_reference_date_2
31561       , l_array_reference_date_3
31562       , l_array_reference_date_4
31563       , l_array_event_created_by
31564       , l_array_budgetary_control_flag
31565       , l_array_extract_line_num 
31566       , l_array_source_5
31567       , l_array_source_6
31568       , l_array_source_6_meaning
31569       , l_array_source_7
31570       , l_array_source_8
31571       , l_array_source_9
31572       LIMIT l_rows;
31573 
31574   --
31575   IF (C_LEVEL_EVENT >= g_log_level) THEN
31576             trace
31577                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
31578                ,p_level    => C_LEVEL_EVENT
31579                ,p_module   => l_log_module);
31580   END IF;
31581   --
31582   EXIT WHEN l_array_entity_id.count = 0;
31583 
31584   XLA_AE_LINES_PKG.g_rec_lines := null;
31585 
31586 --
31587 -- Bug 4458708
31588 --
31589 XLA_AE_LINES_PKG.g_LineNumber := 0;
31590 --
31591 --
31592 
31593 FOR Idx IN 1..l_array_event_id.count LOOP
31594    --
31595    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
31596    --
31597    l_event_id := l_array_event_id(idx);  -- 5648433
31598 
31599    --
31600    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31601    --
31602 
31603    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
31604              (g_array_event(l_event_id).array_value_num('header_index'))
31605          ,'N'
31606          ) <> 'Y'
31610             (p_msg      => 'Trancaction revesal option is not Y '
31607    THEN
31608       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31609          trace
31611             ,p_level    => C_LEVEL_STATEMENT
31612             ,p_module   => l_log_module);
31613       END IF;
31614 
31615 --
31616 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
31617 --
31618 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31619 --
31620 -- set event info as cache for other routines to refer event attributes
31621 --
31622 
31623 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
31624    l_previous_event_id := l_event_id;
31625 
31626    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31627       (p_application_id           => p_application_id
31628       ,p_primary_ledger_id        => p_primary_ledger_id
31629       ,p_base_ledger_id           => p_base_ledger_id
31630       ,p_target_ledger_id         => p_target_ledger_id
31631       ,p_entity_id                => l_array_entity_id(Idx)
31632       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
31633       ,p_entity_code              => l_array_entity_code(Idx)
31634       ,p_transaction_num          => l_array_transaction_num(Idx)
31635       ,p_event_id                 => l_array_event_id(Idx)
31636       ,p_event_class_code         => l_array_class_code(Idx)
31637       ,p_event_type_code          => l_array_event_type(Idx)
31638       ,p_event_number             => l_array_event_number(Idx)
31639       ,p_event_date               => l_array_event_date(Idx)
31640       ,p_transaction_date         => l_array_transaction_date(Idx)
31641       ,p_reference_num_1          => l_array_reference_num_1(Idx)
31642       ,p_reference_num_2          => l_array_reference_num_2(Idx)
31643       ,p_reference_num_3          => l_array_reference_num_3(Idx)
31644       ,p_reference_num_4          => l_array_reference_num_4(Idx)
31645       ,p_reference_char_1         => l_array_reference_char_1(Idx)
31646       ,p_reference_char_2         => l_array_reference_char_2(Idx)
31647       ,p_reference_char_3         => l_array_reference_char_3(Idx)
31648       ,p_reference_char_4         => l_array_reference_char_4(Idx)
31649       ,p_reference_date_1         => l_array_reference_date_1(Idx)
31650       ,p_reference_date_2         => l_array_reference_date_2(Idx)
31651       ,p_reference_date_3         => l_array_reference_date_3(Idx)
31652       ,p_reference_date_4         => l_array_reference_date_4(Idx)
31653       ,p_event_created_by         => l_array_event_created_by(Idx)
31654       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
31655        --
31656 END IF;
31657 
31658 
31659 
31660 --
31661 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
31662 
31663 l_acct_reversal_source := SUBSTR(NULL, 1,30);
31664 
31665 IF l_continue_with_lines THEN
31666    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
31667       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
31668 
31669       xla_accounting_err_pkg.build_message
31670          (p_appli_s_name            => 'XLA'
31671          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
31672          ,p_token_1                 => 'LINE_NUMBER'
31673          ,p_value_1                 => l_array_extract_line_num(Idx)
31674          ,p_token_2                 => 'PRODUCT_NAME'
31675          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31676          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31677          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
31678          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31679 
31680    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
31681       --
31682       -- following sets the accounting attributes needed to reverse
31683       -- accounting for a distributeion
31684       --
31685 
31686       --
31687       -- 5217187
31688       --
31689       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
31690       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
31691                                        g_array_event(l_event_id).array_value_num('header_index'));
31692       --
31693       --
31694 
31695       -- No reversal code generated
31696 
31697       xla_ae_lines_pkg.SetAcctReversalAttrs
31698          (p_event_id             => l_event_id
31699          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
31700          ,p_calculate_acctd_flag => l_calculate_acctd_flag
31701          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
31702    END IF;
31703 
31704    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
31705        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
31706 
31707 --
31708 AcctLineType_30 (
31709  p_application_id  => p_application_id
31710  ,p_event_id     => l_event_id
31711  ,p_calculate_acctd_flag => l_calculate_acctd_flag
31712  ,p_calculate_g_l_flag => l_calculate_g_l_flag
31713  ,p_actual_flag => l_actual_flag
31714  ,p_balance_type_code => l_balance_type_code
31715  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
31716  
31717  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31718  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31719  , p_source_5 => l_array_source_5(Idx)
31720  , p_source_6 => l_array_source_6(Idx)
31721  , p_source_6_meaning => l_array_source_6_meaning(Idx)
31722  , p_source_7 => l_array_source_7(Idx)
31723  , p_source_8 => l_array_source_8(Idx)
31724  , p_source_9 => l_array_source_9(Idx)
31725  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
31726  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
31727  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
31731   l_actual_gain_loss_ref := l_gain_or_loss_ref;
31728  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
31729  );
31730 If(l_balance_type_code = 'A') THEN
31732 END IF;
31733 
31734 --
31735 
31736 
31737 --
31738 AcctLineType_31 (
31739  p_application_id  => p_application_id
31740  ,p_event_id     => l_event_id
31741  ,p_calculate_acctd_flag => l_calculate_acctd_flag
31742  ,p_calculate_g_l_flag => l_calculate_g_l_flag
31743  ,p_actual_flag => l_actual_flag
31744  ,p_balance_type_code => l_balance_type_code
31745  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
31746  
31747  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
31748  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
31749  , p_source_5 => l_array_source_5(Idx)
31750  , p_source_6 => l_array_source_6(Idx)
31751  , p_source_6_meaning => l_array_source_6_meaning(Idx)
31752  , p_source_7 => l_array_source_7(Idx)
31753  , p_source_8 => l_array_source_8(Idx)
31754  , p_source_9 => l_array_source_9(Idx)
31755  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
31756  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
31757  , p_source_12 => g_array_event(l_event_id).array_value_num('source_12')
31758  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
31759  );
31760 If(l_balance_type_code = 'A') THEN
31761   l_actual_gain_loss_ref := l_gain_or_loss_ref;
31762 END IF;
31763 
31764 --
31765 
31766       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
31767       -- or secondary ledger that has different currency with primary
31768       -- or alc that is calculated by sla
31769       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
31770             (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'))
31771 
31772 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
31773 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
31774           AND (l_actual_flag = 'A')) THEN
31775         XLA_AE_LINES_PKG.CreateGainOrLossLines(
31776           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
31777          ,p_application_id   => p_application_id
31778          ,p_amb_context_code => 'DEFAULT'
31779          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
31780          ,p_event_class_code => C_EVENT_CLASS_CODE
31781          ,p_event_type_code  => C_EVENT_TYPE_CODE
31782          
31783          ,p_gain_ccid        => -1
31784          ,p_loss_ccid        => -1
31785 
31786          ,p_actual_flag      => l_actual_flag
31787          ,p_enc_flag         => null
31788          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
31789          ,p_enc_g_l_ref      => null
31790          );
31791       END IF;
31792    END IF;
31793 END IF;
31794 
31795    ELSE
31796       --
31797       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31798       --
31799       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31800          trace
31801             (p_msg      => 'Trancaction revesal option is Y'
31802             ,p_level    => C_LEVEL_STATEMENT
31803             ,p_module   => l_log_module);
31804       END IF;
31805    END IF;
31806 
31807 END LOOP;
31808 l_result := XLA_AE_LINES_PKG.InsertLines ;
31809 end loop;
31810 close line_cur;
31811 
31812 
31813 --
31814 -- insert headers into xla_ae_headers_gt table
31815 --
31816 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
31817 
31818 -- insert into errors table here.
31819 
31820 END LOOP;
31821 
31822 --
31823 -- 4865292
31824 --
31825 -- Compare g_hdr_extract_count with event count in
31826 -- CreateHeadersAndLines.
31827 --
31828 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
31829 
31830 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31831    trace (p_msg     => '# rows extracted from header extract objects '
31832                     || ' (running total): '
31833                     || g_hdr_extract_count
31834          ,p_level   => C_LEVEL_STATEMENT
31835          ,p_module  => l_log_module);
31836 END IF;
31837 
31838 CLOSE header_cur;
31839 --
31840 
31841 --
31842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31843    trace
31844       (p_msg      => 'END of EventClass_45'
31845       ,p_level    => C_LEVEL_PROCEDURE
31846       ,p_module   => l_log_module);
31847 END IF;
31848 --
31849 RETURN l_result;
31850 EXCEPTION
31851 WHEN xla_exceptions_pkg.application_exception THEN
31852    
31853 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
31854 
31855    
31856 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
31857 
31858    RAISE;
31859 WHEN OTHERS THEN
31860    xla_exceptions_pkg.raise_message
31861       (p_location => 'XLA_00540_AAD_S_000014_PKG.EventClass_45');
31862 END EventClass_45;
31863 --
31864 
31865 --
31866 --+============================================+
31867 --|                                            |
31868 --|  PRIVATE FUNCTION                          |
31869 --|                                            |
31870 --+============================================+
31871 --
31872 FUNCTION CreateHeadersAndLines
31873        (p_application_id         IN NUMBER
31874        ,p_base_ledger_id         IN NUMBER
31875        ,p_target_ledger_id       IN NUMBER
31876        ,p_pad_start_date         IN DATE
31877        ,p_pad_end_date           IN DATE
31878        ,p_primary_ledger_id      IN NUMBER)
31879 RETURN BOOLEAN IS
31883 l_language                  VARCHAR2(30);
31880 l_created                   BOOLEAN:=FALSE;
31881 l_event_id                  NUMBER;
31882 l_event_date                DATE;
31884 l_currency_code             VARCHAR2(30);
31885 l_sla_ledger_id             NUMBER;
31886 l_log_module                VARCHAR2(240);
31887 
31888 BEGIN
31889 --
31890 IF g_log_enabled THEN
31891    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
31892 END IF;
31893 --
31894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31895    trace
31896       (p_msg      => 'BEGIN of CreateHeadersAndLines'
31897       ,p_level    => C_LEVEL_PROCEDURE
31898       ,p_module   => l_log_module);
31899 END IF;
31900 
31901 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
31902 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
31903 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
31904 
31905 --
31906 -- initialize array of lines with NULL
31907 --
31908 xla_ae_lines_pkg.SetNullLine;
31909 
31910 --
31911 -- initialize header extract count -- Bug 4865292
31912 --
31913 g_hdr_extract_count:= 0;
31914 
31915 
31916 l_created := EventClass_32(
31917    p_application_id         => p_application_id
31918  , p_base_ledger_id         => p_base_ledger_id
31919  , p_target_ledger_id       => p_target_ledger_id
31920  , p_language               => l_language
31921  , p_currency_code          => l_currency_code
31922  , p_sla_ledger_id          => l_sla_ledger_id
31923  , p_pad_start_date         => p_pad_start_date
31924  , p_pad_end_date           => p_pad_end_date
31925  , p_primary_ledger_id      => p_primary_ledger_id
31926 );
31927 
31928 
31929 
31930      IF ( g_diagnostics_mode ='Y' ) THEN
31931 
31932          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31933           trace
31934               (p_msg      => 'CALL Transaction Objects Diagnostics'
31935               ,p_level    => C_LEVEL_STATEMENT
31936               ,p_module   => l_log_module);
31937 
31938          END IF;
31939 
31940          insert_sources_32(
31941                           p_target_ledger_id => p_target_ledger_id
31942                         , p_language         => l_language
31943                         , p_sla_ledger_id    => l_sla_ledger_id
31944                         , p_pad_start_date   => p_pad_start_date
31945                         , p_pad_end_date     => p_pad_end_date
31946                           );
31947 
31948      END IF;
31949 
31950 l_created := EventClass_33(
31951    p_application_id         => p_application_id
31952  , p_base_ledger_id         => p_base_ledger_id
31953  , p_target_ledger_id       => p_target_ledger_id
31954  , p_language               => l_language
31955  , p_currency_code          => l_currency_code
31956  , p_sla_ledger_id          => l_sla_ledger_id
31957  , p_pad_start_date         => p_pad_start_date
31958  , p_pad_end_date           => p_pad_end_date
31959  , p_primary_ledger_id      => p_primary_ledger_id
31960 );
31961 
31962 
31963 
31964      IF ( g_diagnostics_mode ='Y' ) THEN
31965 
31966          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31967           trace
31968               (p_msg      => 'CALL Transaction Objects Diagnostics'
31969               ,p_level    => C_LEVEL_STATEMENT
31970               ,p_module   => l_log_module);
31971 
31972          END IF;
31973 
31974          insert_sources_33(
31975                           p_target_ledger_id => p_target_ledger_id
31976                         , p_language         => l_language
31977                         , p_sla_ledger_id    => l_sla_ledger_id
31978                         , p_pad_start_date   => p_pad_start_date
31979                         , p_pad_end_date     => p_pad_end_date
31980                           );
31981 
31982      END IF;
31983 
31984 l_created := EventClass_34(
31985    p_application_id         => p_application_id
31986  , p_base_ledger_id         => p_base_ledger_id
31987  , p_target_ledger_id       => p_target_ledger_id
31988  , p_language               => l_language
31989  , p_currency_code          => l_currency_code
31990  , p_sla_ledger_id          => l_sla_ledger_id
31991  , p_pad_start_date         => p_pad_start_date
31992  , p_pad_end_date           => p_pad_end_date
31993  , p_primary_ledger_id      => p_primary_ledger_id
31994 );
31995 
31996 
31997 
31998      IF ( g_diagnostics_mode ='Y' ) THEN
31999 
32000          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32001           trace
32002               (p_msg      => 'CALL Transaction Objects Diagnostics'
32003               ,p_level    => C_LEVEL_STATEMENT
32004               ,p_module   => l_log_module);
32005 
32006          END IF;
32007 
32008          insert_sources_34(
32009                           p_target_ledger_id => p_target_ledger_id
32010                         , p_language         => l_language
32011                         , p_sla_ledger_id    => l_sla_ledger_id
32012                         , p_pad_start_date   => p_pad_start_date
32013                         , p_pad_end_date     => p_pad_end_date
32014                           );
32015 
32016      END IF;
32017 
32018 l_created := EventClass_35(
32019    p_application_id         => p_application_id
32020  , p_base_ledger_id         => p_base_ledger_id
32021  , p_target_ledger_id       => p_target_ledger_id
32022  , p_language               => l_language
32023  , p_currency_code          => l_currency_code
32024  , p_sla_ledger_id          => l_sla_ledger_id
32025  , p_pad_start_date         => p_pad_start_date
32026  , p_pad_end_date           => p_pad_end_date
32027  , p_primary_ledger_id      => p_primary_ledger_id
32028 );
32029 
32030 
32034          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32031 
32032      IF ( g_diagnostics_mode ='Y' ) THEN
32033 
32035           trace
32036               (p_msg      => 'CALL Transaction Objects Diagnostics'
32037               ,p_level    => C_LEVEL_STATEMENT
32038               ,p_module   => l_log_module);
32039 
32040          END IF;
32041 
32042          insert_sources_35(
32043                           p_target_ledger_id => p_target_ledger_id
32044                         , p_language         => l_language
32045                         , p_sla_ledger_id    => l_sla_ledger_id
32046                         , p_pad_start_date   => p_pad_start_date
32047                         , p_pad_end_date     => p_pad_end_date
32048                           );
32049 
32050      END IF;
32051 
32052 l_created := EventClass_36(
32053    p_application_id         => p_application_id
32054  , p_base_ledger_id         => p_base_ledger_id
32055  , p_target_ledger_id       => p_target_ledger_id
32056  , p_language               => l_language
32057  , p_currency_code          => l_currency_code
32058  , p_sla_ledger_id          => l_sla_ledger_id
32059  , p_pad_start_date         => p_pad_start_date
32060  , p_pad_end_date           => p_pad_end_date
32061  , p_primary_ledger_id      => p_primary_ledger_id
32062 );
32063 
32064 
32065 
32066      IF ( g_diagnostics_mode ='Y' ) THEN
32067 
32068          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32069           trace
32070               (p_msg      => 'CALL Transaction Objects Diagnostics'
32071               ,p_level    => C_LEVEL_STATEMENT
32072               ,p_module   => l_log_module);
32073 
32074          END IF;
32075 
32076          insert_sources_36(
32077                           p_target_ledger_id => p_target_ledger_id
32078                         , p_language         => l_language
32079                         , p_sla_ledger_id    => l_sla_ledger_id
32080                         , p_pad_start_date   => p_pad_start_date
32081                         , p_pad_end_date     => p_pad_end_date
32082                           );
32083 
32084      END IF;
32085 
32086 l_created := EventClass_37(
32087    p_application_id         => p_application_id
32088  , p_base_ledger_id         => p_base_ledger_id
32089  , p_target_ledger_id       => p_target_ledger_id
32090  , p_language               => l_language
32091  , p_currency_code          => l_currency_code
32092  , p_sla_ledger_id          => l_sla_ledger_id
32093  , p_pad_start_date         => p_pad_start_date
32094  , p_pad_end_date           => p_pad_end_date
32095  , p_primary_ledger_id      => p_primary_ledger_id
32096 );
32097 
32098 
32099 
32100      IF ( g_diagnostics_mode ='Y' ) THEN
32101 
32102          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32103           trace
32104               (p_msg      => 'CALL Transaction Objects Diagnostics'
32105               ,p_level    => C_LEVEL_STATEMENT
32106               ,p_module   => l_log_module);
32107 
32108          END IF;
32109 
32110          insert_sources_37(
32111                           p_target_ledger_id => p_target_ledger_id
32112                         , p_language         => l_language
32113                         , p_sla_ledger_id    => l_sla_ledger_id
32114                         , p_pad_start_date   => p_pad_start_date
32115                         , p_pad_end_date     => p_pad_end_date
32116                           );
32117 
32118      END IF;
32119 
32120 l_created := EventClass_38(
32121    p_application_id         => p_application_id
32122  , p_base_ledger_id         => p_base_ledger_id
32123  , p_target_ledger_id       => p_target_ledger_id
32124  , p_language               => l_language
32125  , p_currency_code          => l_currency_code
32126  , p_sla_ledger_id          => l_sla_ledger_id
32127  , p_pad_start_date         => p_pad_start_date
32128  , p_pad_end_date           => p_pad_end_date
32129  , p_primary_ledger_id      => p_primary_ledger_id
32130 );
32131 
32132 
32133 
32134      IF ( g_diagnostics_mode ='Y' ) THEN
32135 
32136          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32137           trace
32138               (p_msg      => 'CALL Transaction Objects Diagnostics'
32139               ,p_level    => C_LEVEL_STATEMENT
32140               ,p_module   => l_log_module);
32141 
32142          END IF;
32143 
32144          insert_sources_38(
32145                           p_target_ledger_id => p_target_ledger_id
32146                         , p_language         => l_language
32147                         , p_sla_ledger_id    => l_sla_ledger_id
32148                         , p_pad_start_date   => p_pad_start_date
32149                         , p_pad_end_date     => p_pad_end_date
32150                           );
32151 
32152      END IF;
32153 
32154 l_created := EventClass_39(
32155    p_application_id         => p_application_id
32156  , p_base_ledger_id         => p_base_ledger_id
32157  , p_target_ledger_id       => p_target_ledger_id
32158  , p_language               => l_language
32159  , p_currency_code          => l_currency_code
32160  , p_sla_ledger_id          => l_sla_ledger_id
32161  , p_pad_start_date         => p_pad_start_date
32162  , p_pad_end_date           => p_pad_end_date
32163  , p_primary_ledger_id      => p_primary_ledger_id
32164 );
32165 
32166 
32167 
32168      IF ( g_diagnostics_mode ='Y' ) THEN
32169 
32170          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32171           trace
32172               (p_msg      => 'CALL Transaction Objects Diagnostics'
32173               ,p_level    => C_LEVEL_STATEMENT
32174               ,p_module   => l_log_module);
32175 
32176          END IF;
32177 
32178          insert_sources_39(
32182                         , p_pad_start_date   => p_pad_start_date
32179                           p_target_ledger_id => p_target_ledger_id
32180                         , p_language         => l_language
32181                         , p_sla_ledger_id    => l_sla_ledger_id
32183                         , p_pad_end_date     => p_pad_end_date
32184                           );
32185 
32186      END IF;
32187 
32188 l_created := EventClass_40(
32189    p_application_id         => p_application_id
32190  , p_base_ledger_id         => p_base_ledger_id
32191  , p_target_ledger_id       => p_target_ledger_id
32192  , p_language               => l_language
32193  , p_currency_code          => l_currency_code
32194  , p_sla_ledger_id          => l_sla_ledger_id
32195  , p_pad_start_date         => p_pad_start_date
32196  , p_pad_end_date           => p_pad_end_date
32197  , p_primary_ledger_id      => p_primary_ledger_id
32198 );
32199 
32200 
32201 
32202      IF ( g_diagnostics_mode ='Y' ) THEN
32203 
32204          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32205           trace
32206               (p_msg      => 'CALL Transaction Objects Diagnostics'
32207               ,p_level    => C_LEVEL_STATEMENT
32208               ,p_module   => l_log_module);
32209 
32210          END IF;
32211 
32212          insert_sources_40(
32213                           p_target_ledger_id => p_target_ledger_id
32214                         , p_language         => l_language
32215                         , p_sla_ledger_id    => l_sla_ledger_id
32216                         , p_pad_start_date   => p_pad_start_date
32217                         , p_pad_end_date     => p_pad_end_date
32218                           );
32219 
32220      END IF;
32221 
32222 l_created := EventClass_41(
32223    p_application_id         => p_application_id
32224  , p_base_ledger_id         => p_base_ledger_id
32225  , p_target_ledger_id       => p_target_ledger_id
32226  , p_language               => l_language
32227  , p_currency_code          => l_currency_code
32228  , p_sla_ledger_id          => l_sla_ledger_id
32229  , p_pad_start_date         => p_pad_start_date
32230  , p_pad_end_date           => p_pad_end_date
32231  , p_primary_ledger_id      => p_primary_ledger_id
32232 );
32233 
32234 
32235 
32236      IF ( g_diagnostics_mode ='Y' ) THEN
32237 
32238          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32239           trace
32240               (p_msg      => 'CALL Transaction Objects Diagnostics'
32241               ,p_level    => C_LEVEL_STATEMENT
32242               ,p_module   => l_log_module);
32243 
32244          END IF;
32245 
32246          insert_sources_41(
32247                           p_target_ledger_id => p_target_ledger_id
32248                         , p_language         => l_language
32249                         , p_sla_ledger_id    => l_sla_ledger_id
32250                         , p_pad_start_date   => p_pad_start_date
32251                         , p_pad_end_date     => p_pad_end_date
32252                           );
32253 
32254      END IF;
32255 
32256 l_created := EventClass_42(
32257    p_application_id         => p_application_id
32258  , p_base_ledger_id         => p_base_ledger_id
32259  , p_target_ledger_id       => p_target_ledger_id
32260  , p_language               => l_language
32261  , p_currency_code          => l_currency_code
32262  , p_sla_ledger_id          => l_sla_ledger_id
32263  , p_pad_start_date         => p_pad_start_date
32264  , p_pad_end_date           => p_pad_end_date
32265  , p_primary_ledger_id      => p_primary_ledger_id
32266 );
32267 
32268 
32269 
32270      IF ( g_diagnostics_mode ='Y' ) THEN
32271 
32272          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32273           trace
32274               (p_msg      => 'CALL Transaction Objects Diagnostics'
32275               ,p_level    => C_LEVEL_STATEMENT
32276               ,p_module   => l_log_module);
32277 
32278          END IF;
32279 
32280          insert_sources_42(
32281                           p_target_ledger_id => p_target_ledger_id
32282                         , p_language         => l_language
32283                         , p_sla_ledger_id    => l_sla_ledger_id
32284                         , p_pad_start_date   => p_pad_start_date
32285                         , p_pad_end_date     => p_pad_end_date
32286                           );
32287 
32288      END IF;
32289 
32290 l_created := EventClass_43(
32291    p_application_id         => p_application_id
32292  , p_base_ledger_id         => p_base_ledger_id
32293  , p_target_ledger_id       => p_target_ledger_id
32294  , p_language               => l_language
32295  , p_currency_code          => l_currency_code
32296  , p_sla_ledger_id          => l_sla_ledger_id
32297  , p_pad_start_date         => p_pad_start_date
32298  , p_pad_end_date           => p_pad_end_date
32299  , p_primary_ledger_id      => p_primary_ledger_id
32300 );
32301 
32302 
32303 
32304      IF ( g_diagnostics_mode ='Y' ) THEN
32305 
32306          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32307           trace
32308               (p_msg      => 'CALL Transaction Objects Diagnostics'
32309               ,p_level    => C_LEVEL_STATEMENT
32310               ,p_module   => l_log_module);
32311 
32312          END IF;
32313 
32314          insert_sources_43(
32315                           p_target_ledger_id => p_target_ledger_id
32316                         , p_language         => l_language
32317                         , p_sla_ledger_id    => l_sla_ledger_id
32318                         , p_pad_start_date   => p_pad_start_date
32319                         , p_pad_end_date     => p_pad_end_date
32320                           );
32321 
32322      END IF;
32323 
32324 l_created := EventClass_44(
32328  , p_language               => l_language
32325    p_application_id         => p_application_id
32326  , p_base_ledger_id         => p_base_ledger_id
32327  , p_target_ledger_id       => p_target_ledger_id
32329  , p_currency_code          => l_currency_code
32330  , p_sla_ledger_id          => l_sla_ledger_id
32331  , p_pad_start_date         => p_pad_start_date
32332  , p_pad_end_date           => p_pad_end_date
32333  , p_primary_ledger_id      => p_primary_ledger_id
32334 );
32335 
32336 
32337 
32338      IF ( g_diagnostics_mode ='Y' ) THEN
32339 
32340          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32341           trace
32342               (p_msg      => 'CALL Transaction Objects Diagnostics'
32343               ,p_level    => C_LEVEL_STATEMENT
32344               ,p_module   => l_log_module);
32345 
32346          END IF;
32347 
32348          insert_sources_44(
32349                           p_target_ledger_id => p_target_ledger_id
32350                         , p_language         => l_language
32351                         , p_sla_ledger_id    => l_sla_ledger_id
32352                         , p_pad_start_date   => p_pad_start_date
32353                         , p_pad_end_date     => p_pad_end_date
32354                           );
32355 
32356      END IF;
32357 
32358 l_created := EventClass_45(
32359    p_application_id         => p_application_id
32360  , p_base_ledger_id         => p_base_ledger_id
32361  , p_target_ledger_id       => p_target_ledger_id
32362  , p_language               => l_language
32363  , p_currency_code          => l_currency_code
32364  , p_sla_ledger_id          => l_sla_ledger_id
32365  , p_pad_start_date         => p_pad_start_date
32366  , p_pad_end_date           => p_pad_end_date
32367  , p_primary_ledger_id      => p_primary_ledger_id
32368 );
32369 
32370 
32371 
32372      IF ( g_diagnostics_mode ='Y' ) THEN
32373 
32374          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32375           trace
32376               (p_msg      => 'CALL Transaction Objects Diagnostics'
32377               ,p_level    => C_LEVEL_STATEMENT
32378               ,p_module   => l_log_module);
32379 
32380          END IF;
32381 
32382          insert_sources_45(
32383                           p_target_ledger_id => p_target_ledger_id
32384                         , p_language         => l_language
32385                         , p_sla_ledger_id    => l_sla_ledger_id
32386                         , p_pad_start_date   => p_pad_start_date
32387                         , p_pad_end_date     => p_pad_end_date
32388                           );
32389 
32390      END IF;
32391 
32392 
32393  --
32394  -- Bug 4865292
32395  -- When the number of events and that of header extract do not match,
32396  -- set the no header extract flag to indicate there are some issues
32397  -- in header extract.
32398  --
32399  -- Event count context is set in xla_accounting_pkg.unit_processor.
32400  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
32401  -- to report it as a general error.
32402  --
32403  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
32404  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
32405 
32406      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32407         trace
32408           (p_msg      => '# of extracted headers and events does not match'
32409           ,p_level    => C_LEVEL_STATEMENT
32410           ,p_module   => l_log_module);
32411 
32412         trace
32413           (p_msg      => '# of extracted headers: '
32414                          ||g_hdr_extract_count
32415           ,p_level    => C_LEVEL_STATEMENT
32416           ,p_module   => l_log_module);
32417 
32418         trace
32419           (p_msg      => '# of events in xla_events_gt: '
32420                          ||xla_context_pkg.get_event_count_context
32421           ,p_level    => C_LEVEL_STATEMENT
32422           ,p_module   => l_log_module);
32423 
32424         trace
32425           (p_msg      => 'Event No Header Extract Context: '
32426                          ||xla_context_pkg.get_event_nohdr_context
32427           ,p_level    => C_LEVEL_STATEMENT
32428           ,p_module   => l_log_module);
32429 
32430      END IF;
32431 
32432 
32433      xla_context_pkg.set_event_nohdr_context
32434        (p_nohdr_extract_flag => 'Y'
32435        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
32436 
32437      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32438         trace
32439           (p_msg      => 'No Header Extract Flag is set to Y'
32440           ,p_level    => C_LEVEL_STATEMENT
32441           ,p_module   => l_log_module);
32442      END IF;
32443 
32444  END IF;
32445 
32446 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32447    trace
32448       (p_msg      => 'END of CreateHeadersAndLines'
32449       ,p_level    => C_LEVEL_PROCEDURE
32450       ,p_module   => l_log_module);
32451 END IF;
32452 
32453 RETURN l_created;
32454 EXCEPTION
32455 WHEN xla_exceptions_pkg.application_exception THEN
32456    RAISE;
32457 WHEN OTHERS THEN
32458    xla_exceptions_pkg.raise_message
32459       (p_location => 'XLA_00540_AAD_S_000014_PKG.CreateHeadersAndLines');
32460 END CreateHeadersAndLines;
32461 --
32462 --
32463 
32464 --
32465 --+============================================+
32466 --|                                            |
32467 --|  PUBLIC FUNCTION                           |
32468 --|                                            |
32469 --+============================================+
32470 --
32471 FUNCTION CreateJournalEntries
32472        (p_application_id         IN NUMBER
32473        ,p_base_ledger_id         IN NUMBER
32474        ,p_pad_start_date         IN DATE
32478 l_log_module                   VARCHAR2(240);
32475        ,p_pad_end_date           IN DATE
32476        ,p_primary_ledger_id      IN NUMBER)
32477 RETURN NUMBER IS
32479 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
32480 l_temp_result                  BOOLEAN;
32481 l_result                       NUMBER;
32482 BEGIN
32483 --
32484 IF g_log_enabled THEN
32485    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
32486 END IF;
32487 --
32488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32489    trace
32490       (p_msg      => 'BEGIN of CreateJournalEntries'||
32491                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
32492       ,p_level    => C_LEVEL_PROCEDURE
32493       ,p_module   => l_log_module);
32494 
32495 END IF;
32496 
32497 --
32498 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
32499 
32500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32501    trace
32502       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
32503       ,p_level    => C_LEVEL_STATEMENT
32504       ,p_module   => l_log_module);
32505 END IF;
32506 --
32507 xla_ae_journal_entry_pkg.SetProductAcctDefinition
32508    (p_product_rule_code      => 'OKL_DEFAULT'
32509    ,p_product_rule_type_code => 'S'
32510    ,p_product_rule_version   => ''
32511    ,p_product_rule_name      => 'Lease Default'
32512    ,p_amb_context_code       => 'DEFAULT'
32513    );
32514 
32515 l_array_ledgers :=
32516    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
32517       (p_base_ledger_id  => p_base_ledger_id);
32518 
32519 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
32520    l_temp_result :=
32521       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
32522          (p_application_id           => p_application_id
32523          ,p_base_ledger_id           => p_base_ledger_id
32524          ,p_target_ledger_id         => l_array_ledgers(Idx)
32525          ,p_primary_ledger_id        => p_primary_ledger_id
32526          ,p_pad_start_date           => p_pad_start_date
32527          ,p_pad_end_date             => p_pad_end_date);
32528 
32529    l_temp_result :=
32530       l_temp_result AND
32531       CreateHeadersAndLines
32532          (p_application_id             => p_application_id
32533          ,p_base_ledger_id             => p_base_ledger_id
32534          ,p_target_ledger_id           => l_array_ledgers(Idx)
32535          ,p_pad_start_date             => p_pad_start_date
32536          ,p_pad_end_date               => p_pad_end_date
32537          ,p_primary_ledger_id          => p_primary_ledger_id
32538          );
32539 END LOOP;
32540 
32541 
32542 IF (g_diagnostics_mode = 'Y' AND
32543     C_LEVEL_UNEXPECTED >= g_log_level AND
32544     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
32545 
32546    xla_accounting_dump_pkg.acctg_event_extract_log(
32547     p_application_id  => p_application_id
32548     ,p_request_id     => xla_environment_pkg.g_Req_Id
32549    );
32550 
32551 END IF;
32552 
32553 CASE l_temp_result
32554   WHEN TRUE THEN l_result := 0;
32555   ELSE l_result := 2;
32556 END CASE;
32557 
32558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32559    trace
32560       (p_msg      => 'return value. = '||TO_CHAR(l_result)
32561       ,p_level    => C_LEVEL_PROCEDURE
32562       ,p_module   => l_log_module);
32563    trace
32564       (p_msg      => 'END of CreateJournalEntries '
32565       ,p_level    => C_LEVEL_PROCEDURE
32566       ,p_module   => l_log_module);
32567 END IF;
32568 
32569 RETURN l_result;
32570 EXCEPTION
32571 WHEN xla_exceptions_pkg.application_exception THEN
32572    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32573    trace
32574       (p_msg      => 'ERROR. = '||sqlerrm
32575       ,p_level    => C_LEVEL_PROCEDURE
32576       ,p_module   => l_log_module);
32577    END IF;
32578    RAISE;
32579 WHEN OTHERS THEN
32580    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32581    trace
32582       (p_msg      => 'ERROR. = '||sqlerrm
32583       ,p_level    => C_LEVEL_PROCEDURE
32584       ,p_module   => l_log_module);
32585    END IF;
32586    xla_exceptions_pkg.raise_message
32587       (p_location => 'XLA_00540_AAD_S_000014_PKG.CreateJournalEntries');
32588 END CreateJournalEntries;
32589 --
32590 --=============================================================================
32591 --
32592 --
32593 --
32594 --
32595 --
32596 --
32597 --
32598 --
32599 --
32600 --
32601 --
32602 --
32603 --
32604 --
32605 --
32606 --
32607 --
32608 --
32609 --
32610 --
32611 --
32612 --
32613 --=============================================================================
32614 --=============================================================================
32615 --          *********** Initialization routine **********
32616 --=============================================================================
32617 
32618 BEGIN
32619    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
32620    g_log_enabled    := fnd_log.test
32621                           (log_level  => g_log_level
32622                           ,module     => C_DEFAULT_MODULE);
32623 
32624    IF NOT g_log_enabled  THEN
32625       g_log_level := C_LEVEL_LOG_DISABLED;
32626    END IF;
32627 --
32628 END XLA_00540_AAD_S_000014_PKG;
32629 --