DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00206_AAD_S_000004_PKG

Source


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